ssh / script 액세스를 위해 원격 컴퓨터가 온라인 상태인지 어떻게 확인합니까?


12

랩톱에서 Ubuntu 서버로 데이터를 백업하는 스크립트를 작성 중입니다. 이를 위해 백업을 시작하기 전에 서버가 사용 가능한지 테스트 할 (ba) sh 명령을 찾고 있습니다. ping부울을 리턴하는 포트 22 와 같은 것 .

어떻게해야합니까?

답변:


21

이처럼 :

nc -z hostname 22 > /dev/null
echo $?

그렇다면 0사용할 수 있습니다. 그렇다면 그렇지 1않습니다.


이 옵션은 netcat-openbsd 패키지에서만 작동합니다. 그렇지 않으면 옵션이 없습니다.nc: invalid option -- 'z'
valentin_nasta

없이 -w우분투에 영원히 갇혀있을 것입니다 노스 캐롤라이나 옵션
에드워드 토발즈

창문에서 비슷한 명령을 내릴 수
있습니까

13

netcat 사용 :

nc -z localhost 22

맨 페이지에서

 -z      Specifies that nc should just scan for listening daemons,
         without sending any data to them.

제길! 당신은 나를 이겼습니다.
bahamat

2
감사합니다, nc 몰랐어요, 왜 nc -z -w 2 192.168.0.123(-w 시간 제한 옵션, 초) 시간 초과되지 않습니다 궁금해 |
Amo__

포트도 지정해야합니다. nc -z -w 2 192.168.0.123 22는 예상대로 작동합니다.
chris

+1 z로. 누구든지 당신은 여전히 스캔하는 경우에만 제공하지 않고 스캔을 한 사람의 정보를 얻을 수 있습니다identification string
amrx

5

번갈아 하는:

nc -vzw 1 hostname 22

하지 않고는 답을 선택해야합니다 -w옵션은 nc우분투에 영원히 갇혀있을 것이다
에드워드 토발즈

Bool은 =>처럼 사용할 수 있습니다nc -zw 2 examplehost.com 22 && { echo "You can call your backup function" ; } || { echo "SSH Unavailable" ; }
Mr. Pundir

3

는 어때

MACHINE=192.168.0.8
exec 3>/dev/tcp/${MACHINE}/22
if [ $? -eq 0 ]
then
    echo "SSH up"
else
    echo "SSH down"
fi

항상 Linux라고 가정하지 마십시오. 그의 노트북은 Mac 일 수 있습니다. 그리고 데비안은을 비활성화합니다 /dev/tcp. 데비안에서 파생 된 데비안 우분투도있을 수 있습니다 (그러나 구체적인 지식은 없습니다). 그러나 /dev/tcp가능하다면, 이것은 완벽하게 유효합니다.
bahamat

당신의 의견을 위해 thx, 나는 Mac에서 그것을 썼습니다.

exec 3>/dev/tcp/${HOST}/22정말 "기괴한"보인다고 해도 감사합니다
Amo__

추가 패키지를 설치할 필요가없는 유일한 대답입니다.
Chen A.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.