Problem mit netcat timeout
Warum hat die folgenden netcat-Befehl kein Timeout wenn die Verbindung dauert länger als 3 Sekunden (dh: wenn der port nicht offen ist)? Ich vermutete, dass der -w flag wäre das, was ich brauchte. OS ist OSX 10.9.
nc -v -z -w 3 127.0.0.1 5050
Unter der Annahme, dass es arbeitete, ich geplant, um zu implementieren, wie dies (nicht sicher, ob dies funktionieren wird, insgesamt bash noob)
nc -v -z -w 3 127.0.0.1 5050 | /dev/null && echo "Online" || echo "Offline"
Wenn ich es versuche, bekomme ich sofort eine Fehlermeldung als Antwort, weil der port nicht offen ist. Sind Sie sicher, dass Sie nicht öffnen Sie auf dem host? Wenn es ist, dann, dass ist der Grund, warum es ist nicht das timing, weil es wirklich verbunden ist.
Komisch, es scheint nur zu passieren, die auf einem bestimmten port...", versuchte ich, diese zu verwenden, um zu überwachen, ob ein bestimmter Dienst ausgeführt wird, auf meinem Computer von einem remote-Standort oder Netzwerk. Das service ist aktuell nicht ausgeführt wird, aber der netcat scheint nicht zu Zeit der Prozess hängt. Irgendwelche Gedanken?
Sind Sie mit jeder Art von firewall? Was bedeutet "iptables -L" zeigen Sie?
Ich bin mit OSX und meine firewall ist ausgeschaltet. Es besagt ausdrücklich "Alle verbindungen erlaubt sind auf diesem computer". Es gibt keine native 'iptables' - Befehl in OSX.
netcat offenbar Handlungen unterscheiden, die auf unterschiedlichen Plattformen (philandstuff.com/2013/05/17/statsd-netcat.html). Ich bin auf linux. Können Sie ausführen, tcpdump, während Sie diesen Befehl ausführen, um zu sehen, ob das erwartete Verhalten Auftritt?
Komisch, es scheint nur zu passieren, die auf einem bestimmten port...", versuchte ich, diese zu verwenden, um zu überwachen, ob ein bestimmter Dienst ausgeführt wird, auf meinem Computer von einem remote-Standort oder Netzwerk. Das service ist aktuell nicht ausgeführt wird, aber der netcat scheint nicht zu Zeit der Prozess hängt. Irgendwelche Gedanken?
Sind Sie mit jeder Art von firewall? Was bedeutet "iptables -L" zeigen Sie?
Ich bin mit OSX und meine firewall ist ausgeschaltet. Es besagt ausdrücklich "Alle verbindungen erlaubt sind auf diesem computer". Es gibt keine native 'iptables' - Befehl in OSX.
netcat offenbar Handlungen unterscheiden, die auf unterschiedlichen Plattformen (philandstuff.com/2013/05/17/statsd-netcat.html). Ich bin auf linux. Können Sie ausführen, tcpdump, während Sie diesen Befehl ausführen, um zu sehen, ob das erwartete Verhalten Auftritt?
InformationsquelleAutor anditpainsme | 2014-06-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Umleitung nach /dev/null, nicht Rohr. Versuchen Sie Folgendes:
Auf meinem Rechner, port 5050 nicht öffnen, und ich bekomme die folgende:
nc bildet, der eine ausführliche Ausgabe auf stderr, also, wenn Sie wollen einfach nur, um zu sehen, die "Online" und "Offline", müssen Sie die Verwendung von &> zu sagen, bash-Umleitung sowohl stdout und stderr nach /dev/null. Wenn Sie loszuwerden, das -v, können Sie einfach sagen: nc -z-w 3 localhost 5050 && echo "Online" || echo "Offline"
Cool, gut zu wissen. Danke.
InformationsquelleAutor CDahn
Es gibt einen alten bug-report dazu gibt es unter debian (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=97583) und immer noch das gleiche Verhalten in Debian GNU/Linux 7.7 (wheezy)
Fand ich eine "Lösung" zu diesem: die Installation des openbsd-version von nc:
Dieser Fehler wurde behoben, im Jahr 2001, also Debian 3.0 (Woody) und später sollten nicht gelitten haben. Das problem mit der Frage, wie bereits in der akzeptierten Antwort, wurde syntax im Zusammenhang (
nc … |/dev/null
wird nicht funktionieren, weil/dev/null
ist nicht ausführbar,nc … >/dev/null
gut funktioniert). Das heißt, das Update angewendet wurde, auf Debian-spezifisch und upstream netcat wahrscheinlich immer noch hat es (aktuelle Debian verwendet netcat-1.10-41.1, der fix war in 1.10-18, der Bindestrich bezieht sich auf die Debian-build-mit-patches zum ändern der upstream-version), so könnte ich verstehen, dass OS X immer noch das Problem.InformationsquelleAutor Thiago Ruiz