2016-11-24 7 views
0

Wie kann ich mein Skript stoppen, wenn die Verbindung mit Netcat erfolgreich war? Zum Beispiel, wenn Connection to 192.168.2.4 21 port [tcp/ftp] succeeded! Ich bin mir nicht sicher, was diese Zeichenfolge von Text enthält.Stoppen Sie Skript, wenn nc Verbindung in Bash erfolgreich war

#!/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 

Antwort

0

können Sie testen für nc Exit-Status.

Eg .:

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

Wenn Befehl nc gelungen und Null Exit-Status zurück, die implizit in $? Shell-Variable gespeichert ist, exit das Skript. Oder verwenden Sie einfach break anstelle von exit, wenn Sie nur aus der Schleife springen wollen.

0

Sie können den Returncode von nc verwenden, dann brechen, wenn es gleich 0 ist. Hier ist ein Beispielskript, das iteriert, bis es googelt DNS-Server IP 8.8.8.8 bricht dann.

#!/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 

Ihr Skript würde wie folgt aussehen:

#!/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 
Verwandte Themen