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