실행시 호스트가 사용 가능해질 때까지 ping을 시작할 파일에 bash 스크립트를 작성하려고합니다. , 호스트에 도달 할 수있게되면 명령을 실행하고 실행을 중지하고 하나 작성을 시도했지만 카운트가 끝날 때까지 스크립트가 계속 핑을 보냅니다.
또한 해당 프로세스를 백그라운드에 배치해야하지만 달러 ($
) 기호가있는 스크립트는 여전히 포 그라운드에서 실행됩니다.
#!/bin/bash ping -c30 -i3 192.168.137.163 if [ $? -eq 0 ] then /root/scripts/test1.sh exit 0 else echo “fail” fi
Answer
간단한 한 줄짜리를 사용합니다.
while ! ping -c1 HOSTNAME &>/dev/null; do echo "Ping Fail - `date`"; done ; echo "Host Found - `date`" ; /root/scripts/test1.sh
를 핑하려는 호스트와 연결합니다.
백그라운드에 두는 부분을 놓쳤습니다. 그 줄을 다음과 같이 쉘 스크립트에 넣습니다.
#!/bin/sh while ! ping -c1 $1 &>/dev/null do echo "Ping Fail - `date`" done echo "Host Found - `date`" /root/scripts/test1.sh
백그라운드로 실행하려면 다음과 같이하십시오.
nohup ./networktest.sh HOSTNAME > /tmp/networktest.out 2>&1 &
다시
핑하려는 호스트와 연결하십시오. 이 접근 방식에서는 호스트 이름을 쉘 스크립트에 대한 인수로 전달합니다.
일반적인 경고처럼, 호스트가 중단되면이 스크립트를 종료하거나 종료 할 때까지 백그라운드에서 계속 ping을 수행하게됩니다. 호스트를 찾았습니다. 그래서 나는 이것을 실행할 때 명심할 것입니다. 이것을 잊어 버리면 결국 시스템 리소스를 먹게 될 수 있기 때문입니다.
댓글
답변
매개 변수 “-c 30″을 핑, 30 핑을 시도하고 중지합니다. 명령이 성공했는지 확인합니다. 하나의 핑을 포함하는 루프를 수행 하고이 핑이 성공하는지 확인하는 것이 가장 좋습니다. 다음과 같은 것 :
while true; do ping -c1 google.com if [ $? -eq 0 ] then /root/scripts/test1.sh exit 0 fi done
아직 포 그라운드에서 실행 중이면 여전히 터미널에서 인쇄 중임을 의미하는 경우 stdin 및 stdout을 / dev로 리디렉션 할 수 있습니다. / null.
댓글
- 다른 작업을 수행 할 수 있도록 프롬프트를 잠금 해제하여 tnx에서 도움을 요청
답변
이전 게시물이지만 핑에 대한 -w
옵션을 사용할 수 있습니다. 루프를 피하십시오. 예를 들어
ping -w 30 -c 1 host
는 초당 1 개의 핑으로 30 초 동안 시도하고 (기본 핑은 핑 사이에 1 초 간격이 있음) 첫 번째 성공한 핑에서 종료됩니다. .
시간 초과가 필요하지 않은 경우, 즉 계속 기다립니다. -w
에 매우 큰 값을 사용하세요.
답변
ping -oc 100000 Hostname > /dev/null && /root/scripts/test1.sh
-
ping -o
는ping
첫 번째 패킷 수신 후 -
> /dev/null
출력을 리디렉션하므로 표시되지 않습니다. -
&&
는 이전 명령이 성공하면 다음 명령을 실행합니다.
또한 다음을 통해 백그라운드에서 모든 프로세스를 실행할 수 있습니다. 끝에 &
추가; 예를 들어 echo "123" &
는 백그라운드에서 실행됩니다.
Answer
여기에서 작동합니다. 스크립트 수정.
#!/bin/bash ping -c1 10.1.1.23 > /dev/null if [ $? -eq 0 ] then echo ok exit 0 else echo “fail” fi
출력을 /dev/null
에 보내야 표시되지 않습니다. 화면입니다.
-c
는 카운트를 의미합니다. -c30
를 입력하면 30 개를 핑하게됩니다. 스크립트가 다음 줄로 이동하기 전에 몇 번입니다. 스크립트를 더 빠르게 실행하기 위해 -c1
를 사용합니다.
-i
는 각 패킷을 보내는 사이에 몇 초 동안 대기하는 것입니다. 따라서 -i3
는 3 초를 기다리는 것입니다. 스크립트 실행 속도를 높이기 위해 -i
를 제거합니다.
마지막으로 코드가보기 좋고 읽기 쉽게 보이도록 들여 쓰기를 사용합니다.
샘플 출력
user@linux:~$ ./script.sh ok user@linux:~$ user@linux:~$ ./script.sh “fail” user@linux:~$
답변
#!/bin/sh if [ $1 ] then for i in ` cat $1` do VAR1=$(ping -ac 2 $i| grep -c error) if [ $VAR1 == "0" ] then echo " valid : $i" else echo " invalid : $i" fi done else echo " please present the file name. example: pong /tmp/a " fi
댓글
- 설명하는 단어를 추가하려면 …?
/tmp
의 파일에 저장하여 호스트가 다운되는 경우 ' ll 결국/tmp
를 채 웁니다. 안 좋은 소식입니다 …