2014-06-13 23 views
9

bekam eine kurze Frage.netcat Timeout funktioniert nicht?

Warum gibt der folgende netcat-Befehl keine Zeitüberschreitung aus, wenn der Verbindungsversuch länger als 3 Sekunden dauert (dh wenn der Port nicht geöffnet ist)? Ich nahm an, dass die -w-Flagge das wäre, was ich brauchte. OS ist OSX 10.9.

nc -v -z -w 3 127.0.0.1 5050

Unter der Annahme, dass arbeitete, plante ich, so zu implementieren (nicht sicher, ob dies funktionieren wird, Noob Gesamt bash)

nc -v -z -w 3 127.0.0.1 5050 | /dev/null && echo "Online" || echo "Offline"

Beifall für jede Hilfe!

+0

Wenn ich es versuche, bekomme ich sofort eine Fehlerantwort, weil der Port nicht offen ist. Sind Sie sicher, dass es auf Ihrem Host nicht geöffnet ist? Wenn es so ist, dann ist das der Grund, warum es kein Zeitlimit gibt, weil es tatsächlich verbunden ist. – CDahn

+0

Seltsamerweise scheint es nur an einem bestimmten Port zu geschehen ... Ich habe versucht, dies zu verwenden, um zu überwachen, ob ein bestimmter Dienst auf meinem Rechner von einem entfernten Standort oder Netzwerk ausgeführt wird. Dieser Dienst wird derzeit nicht ausgeführt, aber das Netcat scheint nicht zu inaktivieren, der Prozess hängt einfach. Irgendwelche Gedanken? – anditpainsme

+0

Laufen Sie irgendeine Art von Firewall? Was zeigt dir "iptables -L"? – CDahn

Antwort

15

Sie müssen zu/dev/null umleiten, nicht an sie. Versuchen Sie Folgendes:

nc -v -z -w 3 127.0.0.1 5050 &> /dev/null && echo "Online" || echo "Offline" 

Auf meinem Rechner ist Port 5050 nicht geöffnet ist, und ich folgendes:

$ nc -v -z -w 3 localhost 5050 &> /dev/null && echo "Online" || echo "Offline" 
Offline 
+1

Danke dafür! Aus Neugier, warum ist das & bei der Umleitung benötigt? – anditpainsme

+1

nc gibt die ausführliche Ausgabe an stderr aus. Wenn Sie also nur "Online" und "Offline" sehen möchten, müssen Sie &> sagen, dass bash sowohl stdout als auch stderr nach/dev/null umleiten soll. Wenn Sie das -v loswerden, können Sie einfach nc -z -w 3 localhost 5050 && echo "Online" || sagen echo "Offline" – CDahn

+0

Cool, gut zu wissen. Vielen Dank. – anditpainsme

3

Es gibt einen alten Bug-Report über das auf Debian (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=97583) und nach wie vor mit dem gleichen Verhalten in Debian GNU/Linux 7.7 (sid)

fand ich eine "Lösung" dies: die openbsd Version von nc Installation:

apt-get install netcat-openbsd 
Verwandte Themen