"internet connection tester script"

Polytropon freebsd at edvax.de
Sat Mar 27 12:22:16 UTC 2010

On Sat, 27 Mar 2010 13:07:14 +0100, Jozsef Vadkan <jozsi.avadkan at 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:


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


If you intendedly want to use bash, specify it correctly:


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:

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"
			exit 1
		exit 1

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.

Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...

More information about the freebsd-questions mailing list