2016-11-24 6 views
0

netcat과의 연결이 성공하면 어떻게 스크립트를 중지 할 수 있습니까? 예를 들어 Connection to 192.168.2.4 21 port [tcp/ftp] succeeded! 인 경우 그 문자열을 보유하고 있는지 확실하지 않습니다.bash에서 NC 연결이 성공하면 스크립트를 중지하십시오.

#!/bin/bash 

#Find first 3 octets of the gateway and set it to a variable. 

GW=$(route -n | grep 'UG[ \t]' | awk '{print $2}' | cut -c1-10) 

#loop through 1 to 255 on the 4th octect 
for octet4 in {1..255} 
do 
     sleep .2 
     nc -w1 $GW$octet4 21 

done 

답변

0

nc 종료 상태를 테스트 할 수 있습니다. 명령 nc 성공과 암시 $? 쉘 변수에 저장됩니다 제로 종료 상태, exit 스크립트를 반환하는 경우

nc -w1 $GW$octet4 21 
[[ "$?" -eq 0 ]] && exit 

예 :. 또는 루프 밖으로 건너 뛰고 싶다면 exit 대신 break을 사용하십시오.

0

nc의 반환 코드를 사용하고 0과 같을 때 중단 할 수 있습니다. 다음은 googles DNS 서버 IP 8.8.8.8에 도달 할 때까지 반복되는 예제 스크립트입니다.

#!/bin/bash 

for i in {1..10}; do 
    sleep 1; 
    echo Trying 8.8.8.$i 
    nc -w1 8.8.8.$i 53 
    if [ $? == 0 ]; then 
     break 
    fi 
done 

귀하의 스크립트는 다음과 같습니다

#!/bin/bash 

#Find first 3 octets of the gateway and set it to a variable. 

GW=$(route -n | grep 'UG[ \t]' | awk '{print $2}' | cut -c1-10) 

#loop through 1 to 255 on the 4th octect 
for octet4 in {1..255} 
do 
     sleep .2 
     nc -w1 $GW$octet4 21 
     if [ $? == 0 ] 
     then 
      break 
     fi 
done