Возникла как-то необходимость выяснить, а сколько же в сети компьютеров под управлением Windows, Linux, Solaris и получить результат в каком-то повсеместно читаемом формате.
Сетевые настройки в каждой операционной системе по умолчанию, параметры сети получены по DHCP.
Ходить и считать поштучно — не вариант. Пока весь офис обойдешь, времени угробишь кучу, а его-то как раз и не хватает.
Зато есть такая команда, как ping, и такая командная оболочка, как bash.
В результате был написан следующий скрипт:
#!/bin/bash ######################################################################## # Operating System by ttl network detection script ######################################################################## logfile="./scan-ttl.htm" pingcount=2 os_id="" echo "scan-ttl log file
"$host_ip" | "$os_id >> $logfile echo " | " >> $logfile echo "`host $host_ip`" >> $logfile echo " |
На выходе имеем таблицу в виде html-файла, который можно просматривать в любом браузере, даже в текстовом режиме, и копипастить, например, в Excel.
Как вариант оптимизации по времени можно также изначально результат пинга вынести в отдельную переменную. Например, так:
PING_RESULT=`ping -c $pingcount $host_ip`
И проверять таким образом:
if [ "`echo $PING_RESULT | grep "ttl=6"`" != "" ]
Таким образом можно еще немного сократить время выполнения итогового скрипта.
Но лично мне по времени было не критично, поскольку скрипт запускался в фоне.
[wysija_form id=»2″]