четверг, 8 ноября 2012 г.

Писк спикером при выполнении ping ubuntu

Недавно понадобилось мне обязательно дождаться момента, когда в сети появится одна машинка, для чего я поставил пинг и сел ждать. После минуты вмыка на "destination is unreachable" я решил сделать так, чтобы при появлении ответных пакетов мой "пылесос" просвистел мне об этом в системный спикер. Погуглив, нашел отличный вариант, и немного его модернизировал. Вот, что получилось:

Установим необходимый пакет:

sudo apt-get install beep

Разблокируем скорее всего заблокированный встроенный бипер:

sudo nano /etc/modprobe.d/blacklist.conf
Ищем в файле строчку blacklist pcspkr и каментим ее, сохранеяем файл.

Затем пишем:

sudo modprobe -r pcspkr && modprobe pcspkr

Чтобы окончательно дать возможность заработать спикеру. Проверяем работоспособность:

beep

Если ищит - все ок, значит копипастим код ниже:


#to beep with pcspcr when ping
beepwhenup ()
{
echo 'Enter host you want to ping:';
read PHOST;
if [[ "$PHOST" == "" ]]; then
exit;
fi;
while true;
do ping -c1 -W2 $PHOST 2>&1 >/dev/null;
if [[ "$?" == "0" ]]; then
for j in $(seq 1 4); do beep -f 3000 -l 200 -r 50 -d 200;
done;
ping -c1 $PHOST;
break;
fi;
done; 
}

Это все счастье мы записываем в конец ~.profile и выполняем:

cd ~/

. .profile

для того, чтобы команда beepwhenup попала в систему. Выполнять . .profile
нужно будет при каждой перезагрузке.

Теперь по команде beepwhenup терминал попросит у вас ввести IP пингуемого хоста, и будет ждать, а когда появится пинг - сообщит вам приятным попискиванием (частотой 3000, 50 раз, длительностью в 200 мс и интервалом в 200 мс).

Но!!! Стоит помнить, что спикер будет пищать И НЕ ЗАТКЕТСЯ, пока не будет выполнено все 50 писков.

Приятного пользования.