Поскольку они - расширение XSI, которое может или не быть реализованным. См.: http://pubs.opengroup.org/onlinepubs/009695399/utilities/test.html
Это должно запустить Вас.
#!/bin/bash
for i in `seq ${2} ${3}`
do
ping -c 1 ${1}.${i} > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "${1}.${i} responded."
else
echo "${1}.${i} did not respond."
fi
done
Демонстрационный вывод:
xxxx@xxxxxx:~$ bash test.sh 10.140.0 100 103
10.140.0.100 responded.
10.140.0.101 did not respond.
10.140.0.102 did not respond.
10.140.0.103 did not respond.
Руководство удара может, вероятно, обработать что-либо еще, в чем Вы нуждаетесь.
Используйте nmap. Это - стандартный инструмент для задания.
Так как Вы просто хотите знать, какие хосты онлайн (и отвечающий), выполните “сканирование ping”: nmap -sP
.
Если Вы не заботитесь о форматировании вывода, Ваш сценарий может быть записан этот путь:
#!/bin/sh
nmap -sP "$1.$2-$3"
${1%.*}
вместо${1}
. – Joseph R. 20.11.2013, 07:25