Page 1 of 1

Verify if Internet connection is duly active? [SOLVED]

Posted: Tue 05 Mar 2013, 14:04
by Argolance
Hello,
Before executing a script, I need a (simple) command line to know if and be absolutely sure that user's Internet connexion is actually active...
Thank you.

Cordialement.

Verify if Internet connection is duly active?

Posted: Tue 05 Mar 2013, 15:30
by L18L

Code: Select all

 [ "`ifconfig | head -n 1| awk '{print $1}'`" = "lo" ] && echo no || echo oui
:wink:

lo is local loopback
if this is at first place then no other connection exists

---
edited: forget it, take vovchik's

Posted: Tue 05 Mar 2013, 15:34
by Argolance
Thanks you! :D

Posted: Tue 05 Mar 2013, 15:48
by vovchik
Dear L18L,

That isn't true in my case:

Code: Select all

root$ [~]-> ifconfig            
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:976 errors:0 dropped:0 overruns:0 frame:0
          TX packets:976 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:71960 (70.2 KiB)  TX bytes:71960 (70.2 KiB)

wlan0     Link encap:Ethernet  HWaddr D8:F8:BA:D8:F8:BA  
          inet addr:192.168.0.16  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:93463 errors:0 dropped:0 overruns:0 frame:0
          TX packets:98017 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:53415279 (50.9 MiB)  TX bytes:12026226 (11.4 MiB)
This seems to work for me:

Code: Select all

#!/usr/bin/bash

# Test for network conection
for interface in $(ls /sys/class/net/ | grep -v lo);
do
	if [[ "$(cat /sys/class/net/$interface/operstate)" == "up" ]]; then
		echo "Online: $interface"
		OnLine=1
	fi
done
if ! [ $OnLine ]; then echo "Not Online" > /dev/stderr; exit; fi
or

There are also some nice methods using netstat -punt or netstat -natu and lsof -i.

With kind regards,
vovchik

Posted: Tue 05 Mar 2013, 15:54
by L18L
@Argolance,
I am sorry
fast solutions are not always right solutions :lol:

@vovchik,
your script works for me too :)

Posted: Tue 05 Mar 2013, 16:11
by Argolance
@L18L
Your code line worked for me!
I am sorry
Don't!
Thank you to both of you.

Cordialement.

Verify if Internet connection is duly active?[otherSOLUTION]

Posted: Tue 05 Mar 2013, 16:22
by L18L

Code: Select all

[ $(grep up /sys/class/net/*/operstate) ] && echo online
other values in operstate:
-down
-unknown (for lo)

Posted: Tue 05 Mar 2013, 16:32
by vovchik
Dear L18L,

I like your last one - works nicely and is a one-liner:)

With kind regards,
vovchik

Posted: Tue 05 Mar 2013, 16:42
by Argolance
I like your last one - works nicely and is a one-liner
Yes indeed!

Posted: Tue 23 Apr 2013, 10:16
by Argolance
Hello,
While running a fresh install of Puppy on a friend's PC, I succeeded in setting the wifi Internet connection and was able to go on the Internet with the web browser... But the command used in one of my scripts:

Code: Select all

if [ $(grep down /sys/class/net/*/operstate) ]; then
Xdialog --title "$(eval_gettext '$app Installation') - $(gettext 'Information')" --icon /usr/local/lib/X11/pixmaps/info.png --msgbox "$(eval_gettext 'Your internet connection seems not to be active.
Please, set it up before downloading/installing $app!')" 0 0
else
[...]
... that lets user download applications from a remote server, said the connexion was not active... :shock: :oops:
So it seems this command is not absolutely sure: what I am obviously expecting for!

Is there any other command (using ping :roll: ?) doing this "properly"?

Cordialement.

Posted: Tue 23 Apr 2013, 13:35
by Argolance
Hello,
Found this which works fine:

Code: Select all

#!/bin/sh

curl -D- -o /dev/null -s http://xxxxx.net
if [[ $? == 0 ]]; then
  echo "yes"
else
  echo "no"
fi
Cordialement!

Posted: Tue 23 Apr 2013, 13:44
by L18L
Found this:

Code: Select all

PING="`ping -c 1 xxxxx.net `"
 [ "${PING:0:4}" = "PING"  ] && echo online
Not every server responds on pings

Posted: Tue 23 Apr 2013, 13:50
by Argolance
OK, thanks!