네트워크가 다운된 경우에도 내 ping 명령(Debian 6 또는 7)은 반복적으로 서버에 ping을 시도합니다.만약에시작 시 네트워크가 작동 중입니다. 네트워크가 다운되었을 때 ping을 시작하고 동일한 동작을 얻을 수 있는 방법이 있습니까?
여기에 예가 있습니다. 네트워크가 작동 중일 때 반복 핑을 시작하고 핑이 실행되는 동안 네트워크가 다운되면 핑이 계속 반복됩니다. 네트워크가 다시 작동하면 계속해서 ping을 보냅니다.
me@here:~$ ping -n 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=46 time=117 ms
...
64 bytes from 8.8.8.8: icmp_req=6 ttl=46 time=116 ms
ping: sendmsg: Network is unreachable
...
ping: sendmsg: Network is unreachable
64 bytes from 8.8.8.8: icmp_req=108 ttl=46 time=694 ms
...
그러나 ping을 실행할 때 네트워크가 다운된 경우:
me@here:~$ ping -n 8.8.8.8
connect: Network is unreachable
me@here:~$
연결할 수 없는 네트워크 문제와 동일하지만 이전처럼 네트워크가 다시 나타날 때까지 핑이 계속 시도되지 않습니다.
답변1
쉘 스크립트에서 while 루프를 사용할 수 있습니다:
failed=1 # any number not equal to zero
while [ $failed -ne 0 ]
do
ping -n 8.8.8.8
failed=$?
done
# after the $? becomes "0" it will get out of the while loop
echo "ping succeeded"
connect: Network is unreachable
메시지가 계속 인쇄되는 것을 중지하려면 ping을 사용하여 다음과 같이 줄을 편집할 수 있습니다.
ping -n 8.8.8.8 2> /dev/null
또는 sleep
루프에 하나를 추가하여 이러한 메시지 수를 줄일 수 있습니다.
스크립트는 다음과 같이 단순화될 수 있습니다.
while ! ping -n 8.8.8.8
do
sleep 1
done
이렇게 하면 한 줄로 작성할 수 있습니다.
while ! ping -n 8.8.8.8; do sleep 1; done
답변2
AFAICT ping
인터페이스의 소켓을 열 수 없으면(인터페이스가 닫혀 있기 때문에) 실행되지 않습니다. 다음 명령을 사용하여 장치를 확인하면 ip link show
어떤 장치가 있는지 확인할 수 있습니다.위로또는아래에.
먼저 네트워크 장치를 활성화해 보세요.
$ sudo ip link set <iface> up
$ ping -n 8.8.8.8
내 Arch Linux 시스템에서 이것을 테스트했습니다.아래에Wi-Fi 인터페이스 및위로가상 이더넷(IP 주소가 할당되지 않음) 인터페이스. ping
전자의 A는 종료되고 후자의 경우 ping
A는 지속됩니다.
그렇지 않으면 네트워크 담당자의 쉘 스크립트를 사용하십시오.
답변3
대신 fping
해당 -l
및 옵션을 사용할 수 있습니다 . 이를 위해서는 인터페이스 이름을 알고 루트로 실행해야 합니다.-I
ping
root@here:~# fping -l -I wlan0 -n 8.8.8.8
me@here:~$ sudo fping -l -I eth0 -n 8.8.8.8