387 Stimmen

Testen, ob ein entfernter TCP-Port von einem Shell-Skript aus geöffnet ist

Ich bin auf der Suche nach einer schnellen und einfachen Methode, um aus einem Shell-Skript heraus zu testen, ob ein bestimmter TCP-Port auf einem entfernten Server geöffnet ist.

Ich habe es geschafft, es mit dem Telnet-Befehl zu tun, und es funktioniert gut, wenn der Port geöffnet ist, aber es scheint nicht zu Timeout, wenn es nicht und hängt einfach dort...

Hier ist ein Beispiel:

l_TELNET=`echo "quit" | telnet $SERVER $PORT | grep "Escape character is"`
if [ "$?" -ne 0 ]; then
  echo "Connection to $SERVER on port $PORT failed"
  exit 1
else
  echo "Connection to $SERVER on port $PORT succeeded"
  exit 0
fi

Ich brauche entweder einen besseren Weg, oder einen Weg, um telnet zu erzwingen, Timeout, wenn es nicht in unter 8 Sekunden zum Beispiel verbindet, und geben Sie etwas, das ich in Shell (Return-Code oder String in stdout) abfangen kann.

Ich kenne die Perl-Methode, die das Modul IO::Socket::INET verwendet, und habe ein erfolgreiches Skript geschrieben, das einen Port testet, möchte aber die Verwendung von Perl nach Möglichkeit vermeiden.

Hinweis: Dies ist der Server, auf dem mein Programm läuft (von dem aus ich es ausführen muss)

SunOS 5.10 Generic_139556-08 i86pc i386 i86pc

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X