Question: I want to write a script, that would keep checking if any of the devices in network, that should be online all day long, are really online. I tried to use ping, but

```
if [ "`ping -c 1 some_ip_here`" ]
then
  echo 1
else
  echo 0
fi

```

gives `1` no matter if I enter valid or invalid ip address. How can I check if a specific address (or better any of devices from list of ip addresses) went offline?

Answer: 
You don't need the backticks in the if statement. You can use this check

```
if ping -c 1 some_ip_here &> /dev/null
then
  echo 1
else
  echo 0
fi

```

The if command checks the exit code of the following command (the ping). If the exit code is zero (which means that the command exited successfully) the then block will be executed. If it return a non-zero exit code, then the else block will be executed.
This seems to work moderately well in a terminal emulator window. It loops until there's a connection then stops.

```
#!/bin/bash

# ping in a loop until the net is up

declare -i s=0
declare -i m=0
while ! ping -c1 -w2 8.8.8.8 &> /dev/null ;
do
  echo "down" $m:$s
  sleep 10
  s=s+10
  if test $s -ge 60; then
    s=0
    m=m+1;
  fi
done
echo -e "--------->>  UP! (connect a speaker) <<--------" \\a

```

The \a at the end is trying to get a bel char on connect. I've been trying to do this in LXDE/lxpanel but everything halts until I have a network connection again. Having a time started out as a progress indicator because if you look at a window with just "down" on every line you can't even tell it's moving.