LINUX.ORG.RU
решено ФорумAdmin

Localhost beep if ping ok (over ssh)

 , ,


0

1

Пингую 10.90.90.90 на узле 192.168.236.12 с localhost

ssh admin@192.168.236.12 "ping 10.90.90.90"
пока не отвечает
PING 10.90.90.90 (10.90.90.90) 56(84) bytes of data.
From 10.90.90.91 icmp_seq=1 Destination Host Unreachable
From 10.90.90.91 icmp_seq=2 Destination Host Unreachable
From 10.90.90.91 icmp_seq=3 Destination Host Unreachable
From 10.90.90.91 icmp_seq=4 Destination Host Unreachable
From 10.90.90.91 icmp_seq=5 Destination Host Unreachable
нужно, что бы когда стал отвечать:
PING 10.90.90.90 (10.90.90.90) 56(84) bytes of data.
64 bytes from 10.90.90.90: icmp_seq=1 ttl=62 time=85.4 ms
64 bytes from 10.90.90.90: icmp_seq=2 ttl=62 time=64.8 ms
64 bytes from 10.90.90.90: icmp_seq=3 ttl=62 time=61.7 ms
На localhost запускалась команда (звук beep)
echo -ne '\007'
на каждый ответ

★★★★★

Ответ на: комментарий от petav

не заключайте команду в ковычки, чтобы на сервере выполнялась только ping, а результат выводил ssh и греп отрабатывал на локальном сервере.

ssh admin@192.168.236.12 "ping 10.90.90.90" | grep time= && echo -ne '\007'

мечтаю работать одмином, но родился не в том месте, в итоге телебонькаю локалхосты и решая подобные задачки только одно на душе

Spoofing ★★★★★ ()
Ответ на: комментарий от Spoofing

Не «пикает»

$ ssh admin@192.168.236.12 "ping 192.168.236.1" | grep time= && echo -ne '\007'
admin@192.168.236.12's password: 
64 bytes from 192.168.236.1: icmp_seq=1 ttl=64 time=0.163 ms
64 bytes from 192.168.236.1: icmp_seq=2 ttl=64 time=0.120 ms
64 bytes from 192.168.236.1: icmp_seq=3 ttl=64 time=0.123 ms
64 bytes from 192.168.236.1: icmp_seq=4 ttl=64 time=0.124 ms
^C
«пик» работает
$  echo -ne '\007'

petav ★★★★★ ()
Последнее исправление: petav (всего исправлений: 1)
Ответ на: комментарий от petav

я не знаю почему, grep && любую команду не хочет выполнять. нужны спецы по bash чтобы пояснить.

а пока чтобы работало давайте сделаем такой костыль.

ssh admin@192.168.236.12 "ping 192.168.236.1" | while read i; do case "$i" in *"time="*) echo -ne '\007' ;; esac; done
Spoofing ★★★★★ ()
Ответ на: комментарий от Spoofing

grep не выполняет команду потому что её выполнение grep ещё не завершилось обрабатывая бесконечный stdout поток.

Spoofing ★★★★★ ()
Ответ на: комментарий от Spoofing

Spoofing it works! add output result successful ping

$ ssh admin@192.168.236.12 "ping 192.168.236.1" | while read i; do case "$i" in *"time="*) echo $i; echo -ne '\007' ;; esac; done
admin@192.168.236.12's password: 
64 bytes from 192.168.236.1: icmp_seq=1 ttl=64 time=0.153 ms
64 bytes from 192.168.236.1: icmp_seq=2 ttl=64 time=0.150 ms
64 bytes from 192.168.236.1: icmp_seq=3 ttl=64 time=0.121 ms
64 bytes from 192.168.236.1: icmp_seq=4 ttl=64 time=0.128 ms
64 bytes from 192.168.236.1: icmp_seq=5 ttl=64 time=0.123 ms
64 bytes from 192.168.236.1: icmp_seq=6 ttl=64 time=0.121 ms
64 bytes from 192.168.236.1: icmp_seq=7 ttl=64 time=0.123 ms
^C

petav ★★★★★ ()
Ответ на: комментарий от kardapoltsev
petav@debian-60a44c590bc9:~$  ssh admin@192.168.236.12 "ping 192.168.236.1" | grep -m 1 time= && echo -ne '\007'
admin@192.168.236.12's password: 
64 bytes from 192.168.236.1: icmp_seq=1 ttl=64 time=0.163 ms
petav@debian-60a44c590bc9:~$

«beep» есть, но один раз и код завершается!

petav ★★★★★ ()
Ответ на: комментарий от deadNightTiger

Work!

petav@debian-60a44c590bc9:~$  ssh admin@192.168.236.12 "ping 192.168.236.1" | sed '/time=/s/$/\x07/'
admin@192.168.236.12's password: 
PING 192.168.236.1 (192.168.236.1) 56(84) bytes of data.
64 bytes from 192.168.236.1: icmp_seq=1 ttl=64 time=0.153 ms
64 bytes from 192.168.236.1: icmp_seq=2 ttl=64 time=0.140 ms
64 bytes from 192.168.236.1: icmp_seq=3 ttl=64 time=0.129 ms
64 bytes from 192.168.236.1: icmp_seq=4 ttl=64 time=0.122 ms
^C
petav@debian-60a44c590bc9:~$

petav ★★★★★ ()
Ответ на: комментарий от Tanger

No work

petav@debian-60a44c590bc9:~$  ssh admin@192.168.236.12 "ping 192.168.236.1" | grep  time= | xargs -l 1 echo -ne '\007'
admin@192.168.236.12's password: 
^C
petav@debian-60a44c590bc9:~$

petav ★★★★★ ()
Ответ на: комментарий от slowpony

И команда завершиться после первого пакета.
А вот то, что предложил deadNightTiger в виде ping -a прикольно. Век живи век учись. Оно не решение задачи ТС, но сам факт.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от slowpony

И что? Чем это поможет в задаче ТС ?
Решений выше написали больше одного. Ваши предложения не рабочие будут.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от kardapoltsev

На localhost запускалась команда (звук beep) echo -ne '\007' на каждый ответ

petav ★★★★★ ()
  1. Идея бесконечных входов на машину по SSH - не фонтан. Логи только засирать. Лучше сразу примонтировать себе по sshfs директорию с файлом-флажком.
  2. Скрипт просто запустить на удалённом хосте(в screen/tmux) и пусть он результат работы(да/нет) помещает в файл на примонтированной локально директории.
  3. Использовать ping -c [nn] -W [nn](по обстоятельствам)

Целиком скрипт приводить не буду, просто в цикле: ping -c 5 192.168.1.1 | grep «packets transmitted» | awk ‘{print $6}’…

S_Paul ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.