eddy_em: (Default)
eddy_em ([personal profile] eddy_em) wrote2023-03-23 09:55 am
Entry tags:

Скрипт для пингования подсети

Вчера хотел поснимать с ИК-датчиков картинки (облачности не было, но местами была на небе дымка), однако, забыл IP-адрес одноплатника! Вот, утром накидал такой скрипт, чтобы всю нашу подсетку проверить:
#!/bin/bash

trap "echo Exited!; exit;" SIGINT SIGTERM

if [ $# -ne 1 ]; then
	echo "Usage: $0 IP_base (like $0 192.168.70) - ping all IP in 192.168.70.1 .. 192.168.70.254" >&1
	exit 1
fi

for x in $(seq 1 254); do
	IP="$1.$x"
	HOST=$(host $IP)
	if [ $? -eq 0 ]; then
		HOST=$(echo $HOST| awk '{print $5}')
	else
		HOST="-"
	fi
	ping -c 1 -W1 $IP >/dev/null 2>/dev/null && echo "$IP, $HOST"
done

Советую обратить внимание на строчку trap ...: она позвляет отслеживать прерывание цикла по Ctrl+C и завершать при этом весь скрипт, а не только текущую команду в цикле.
Когда-то я писал нечто подобное (но уже с другой целью: пинговать выключенные компьютеры), чтобы динамически менять (где-то раз в полчаса) IP-адрес компьютера (заодно можно еще и по данным arp составить табличку и MAC менять тоже на целевой). А в гостинице в Ереване был у меня скриптик, который к wifi переподключался в случае снижения скорости (там за трафик рубили, а я торренты качал ☺) с новым MAC-адресом.

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org