ping이 완료되면 어떻게 임의의 명령을 실행할 수 있습니까?


0

매 분마다 호스트에 ping 명령을 생성 한 다음 시간 제한이 없을 때 명령을 실행하면 (ping 된 호스트가 온라인 상태 일 때) 어떻게 할 수 있습니까?

기본적으로 다음 의사 코드가 필요합니다.

bool ping = pingHost();
while (ping = false) {
    //try again
    ping = pingHost();
}
runCommand("whatever");

가급적 답은 Windows 시스템 (cmd, PowerShell 또는 Cygwin 모두 작동)뿐만 아니라 유닉스 계열 시스템 (bash 등 사용)에 대한 지침이 포함되는 것이 바람직합니다.


1
당신은 무엇을 연구하고 / 시도 했습니까? 시도 했어? 수색 이거?
CharlieRB

@CharlieRB 아, 그 생각하지 않았다. 나는 "핑 성공에 대한 명령 실행"또는 그다지 유용한 결과를 반환하지 않는 것을 찾았습니다.
strugee

답변:


4

먼저,보다 완벽한 모니터링 소프트웨어를 사용하고 싶다고 지적하겠습니다. 나기 오스 이것 때문에.

기본 스크립팅 솔루션의 경우 Linux에서 Bash를 사용합니다.

#!/bin/bash
ping -c 1 yourhost.com
if [ $? -eq 0 ]; then
    your_command
fi

Windows는 실제로 실제로 비슷합니다. 이것에 넣어 .bat 파일:

ping -n 1 yourhost.com
IF %ERRORLEVEL%==0 (
    your_command
)

설명: ping 명령은 두 운영 체제 모두에서 종료 코드를 반환합니다. 리눅스 (Bash)에서는 $? Windows에서이 종료 코드를 가져 오는 변수입니다. %errorlevel%. ping이 성공하면 두 운영 체제의 종료 코드는 0이고, 그렇지 않으면 1입니다.이 값은 명령을 조건부로 실행하는 데 사용할 수 있습니다.

루프 추가 :

Linux :

#!/bin/bash
result=1
while [ $result -neq 0 ]; do
    ping -c 1 yourhost.com
    result=$?
done

Windows에서도 마찬가지입니다.

:loop
ping -n 1 yourhost.com
IF NOT %ERRORLEVEL%==0 (
    goto loop
)
your_command

말: 호스트가 온라인 상태가 될 때마다 사용하려면 Linux의 crontab이나 Windows의 작업 스케줄러를 사용할 수 있습니다. 호스트가 온라인 상태가 될 때마다 실행하려면 적절한 모니터링 소프트웨어가 필요합니다.


2
좋은 해결책. 조건부 실행을 이용하는 것이 더 쉽습니다. ping yourhost.com && echo hi 명령 만 실행합니다. echo hi ping이 성공적으로 완료된 경우. 만나다 dostips.com/?t=Snippets.ConditionalExecution ss64.com/bash/syntax-execute.html
kmort
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.