Date: Sat, 27 Mar 2010 13:22:14 +0100 From: Polytropon <freebsd@edvax.de> To: Jozsef Vadkan <jozsi.avadkan@gmail.com> Cc: FreeBSD Mailing list <freebsd-questions@freebsd.org> Subject: Re: "internet connection tester script" Message-ID: <20100327132214.c414f2d2.freebsd@edvax.de> In-Reply-To: <1269691634.12702.11.camel@debian> References: <1269691634.12702.11.camel@debian>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 27 Mar 2010 13:07:14 +0100, Jozsef Vadkan <jozsi.avadkan@gmail.com> wrote: > Why doesn't my "internet-connection" script work? > > When I plug the ethcable out, it just waits...and waits...and waits... It doesn't even work correctly: Now as I definitely have Internet connection, it prints "NO INTERNET CONNECTION". Allow me a comment: #!/bin/bash This is Linux. It is not portable. FreeBSD is NOT Linux. In FreeBSD, the standard scripting shell is the Bourne shell /bin/sh. Unless you don't require things that are specific to bash, use the correct shebang for shm which is #!/bin/sh If you intendedly want to use bash, specify it correctly: #!/usr/local/bin/bash The bash is an additional package for FreeBSD, it does not belong to the OS itself. It needs to be installed. Of course, there's a way to make bash available as /bin/bash statically linked, but with all thoughts to interoperability, I wouldn't rely on this. Let me bring the script into a more easily readable form and allow me to say something about it: #!/bin/sh function internet_connection_ok { echo "Testing internet connection....please wait..." if ping -W 1 -c 4 bix.hu | grep -q "4 received"; then if ping -W 1 -c 4 www.yahoo.com | grep -q "4 received"; then echo "NET is OK" else echo "NO INTERNET CONNECTION" exit 1 fi else echo "NO INTERNET CONNECTION" exit 1 fi } internet_connection_ok Basically, you're relying on a 100 % correct reception of pings from two specified host to see if Internet is up and running. In case of package loss, even with running Internet (e. g. 4 sent, 3 received), the script would say that there's no Internet connection, which is false. Additionally, you're giving only 1 ms for reply, which may not be enough for a slow (but stable) connection. Finally, you're relying on DNS to get the IPs to ping for bix.hu and www.yahoo.com. I'm not sure if this resolve time is important here, too. -- Polytropon Magdeburg, Germany Happy FreeBSD user since 4.0 Andra moi ennepe, Mousa, ...
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100327132214.c414f2d2.freebsd>