{"id":3166,"date":"2022-04-04T07:00:00","date_gmt":"2022-04-04T06:00:00","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=3166"},"modified":"2022-03-29T20:57:25","modified_gmt":"2022-03-29T19:57:25","slug":"wie-kann-ich-von-der-shell-aus-pruefen-ob-ein-entfernter-tcp-port-erreichbar-ist","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/wie-kann-ich-von-der-shell-aus-pruefen-ob-ein-entfernter-tcp-port-erreichbar-ist\/","title":{"rendered":"Wie kann ich von der Shell aus pr\u00fcfen, ob ein entfernter TCP-Port erreichbar ist?"},"content":{"rendered":"\n<p>Diese Frage habe ich mir selbst schon mehrmals gestellt. Und mindestens genauso oft wurde sie mir schon von anderen gestellt. Als Antwort kommen hier meist zuerst <code>telnet<\/code> oder <code>netcat<\/code> (<code>nc<\/code>) in den Sinn. Doch in einer RHEL-Minimal-Installation sind diese beiden Programme nicht enthalten und m\u00fcssen erst nachinstalliert werden. Was tut man in diesem Fall (ohne den Paketmanager zu starten)?<\/p>\n\n\n\n<p>Ich m\u00f6chte in diesem Artikel mehrere Antworten auf die Eingangsfrage festhalten. Dabei beginne ich mit denen, die ich auf <a href=\"https:\/\/stackoverflow.com\/questions\/4922943\/test-if-remote-tcp-port-is-open-from-a-shell-script\">stackoverflow<\/a> gefunden habe.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bash und timeout<\/h2>\n\n\n\n<p>Von RHEL 6 aufw\u00e4rts sollte das Programm <code>timeout<\/code> in der Minimal-Installation enthalten sein. In Fedora 35 und Debian 11 ist es ebenfalls enthalten. Es stammt aus dem Paket <code>coreutils<\/code>, in dem es meines Wissens sp\u00e4testens seit Version 8.22 enthalten ist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kommando<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>$ timeout $TIMEOUT_SECONDS bash -c \"&lt;\/dev\/tcp\/${HOST}\/${PORT}\"; echo $?<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiele<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Erfolgreicher Verbindungstest<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>$ HOST=beispiel.de\n$ PORT=443\n$ timeout 5 bash -c \"&lt;\/dev\/tcp\/${HOST}\/${PORT}\"; echo $?\n0<\/code><\/pre>\n\n\n\n<p>Selbstverst\u00e4ndlich funktioniert auch folgender Befehl:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ timeout 5 bash -c \"&lt;\/dev\/tcp\/beispiel.de\/443\"; echo $?\n0<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Fehlgeschlagener Verbindungstest<\/h4>\n\n\n\n<p>Jetzt nutze ich einen Port, der nicht erreichbar ist:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ timeout 5 bash -c \"&lt;\/dev\/tcp\/beispiel.de\/4433\"; echo $?\n124<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Nutzung von nc<\/h2>\n\n\n\n<p>Sollte <code>nc<\/code> bereits installiert sein, kann man auch dieses Programm f\u00fcr einen Verbindungstest nutzen:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kommando<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>$ nc -w $TIMEOUT_SECONDS -v $HOST $PORT &lt;\/dev\/null; echo $?<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiele<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Erfolgreicher Verbindungstest<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>$ HOST=beispiel.de\n$ PORT=443\n$ nc -w 2 -v $HOST $PORT &lt;\/dev\/null; echo $?\nNcat: Version 7.92 ( https:\/\/nmap.org\/ncat )\nNcat: Connected to 23.21.157.88:443.\nNcat: 0 bytes sent, 0 bytes received in 0.54 seconds.\n0<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Fehlgeschlagener Verbindungstest<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>$ nc -w 2 -v beispiel.de 4433 &lt;\/dev\/null; echo $?\nNcat: Version 7.92 ( https:\/\/nmap.org\/ncat )\nNcat: TIMEOUT.\n1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Zusammenfassung<\/h2>\n\n\n\n<p>Mit <code>timeout<\/code> und <code>nc<\/code> habe ich meine beiden Favoriten festgehalten. Mit beiden l\u00e4sst sich die Erreichbarkeit von entfernten TCP-Ports testen (die von lokalen TCP-Ports \u00fcbrigens auch).<\/p>\n\n\n\n<p>Falls ihr noch weitere M\u00f6glichkeiten kennt, mit Bordmitteln, die in der Minimal-Installation einer Distribution enthalten sind, um einen Verbindungstest durchzuf\u00fchren, schreibt sie mir gern in die Kommentare. Ich nehme sie dann gern mit in den Artikel auf.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Diese Frage habe ich mir selbst schon mehrmals gestellt. Und mindestens genauso oft wurde sie mir schon von anderen gestellt. Als Antwort kommen hier meist zuerst telnet oder netcat (nc) in den Sinn. Doch in einer RHEL-Minimal-Installation sind diese beiden Programme nicht enthalten und m\u00fcssen erst nachinstalliert werden. Was tut man in diesem Fall (ohne<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/wie-kann-ich-von-der-shell-aus-pruefen-ob-ein-entfernter-tcp-port-erreichbar-ist\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[448],"tags":[690,691,430,305,692,693,689,694],"class_list":["post-3166","post","type-post","status-publish","format-standard","hentry","category-fragen-und-antworten","tag-nc","tag-netcat","tag-osbn","tag-planet","tag-tcp-port","tag-tcp-ports","tag-timeout","tag-verbindungstest"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=3166"}],"version-history":[{"count":1,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3166\/revisions"}],"predecessor-version":[{"id":3167,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3166\/revisions\/3167"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=3166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=3166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=3166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}