Inhaltsverzeichnis:
- Mit Bash und
timeout
- Verwenden von
nc
- Befehl
- RHEL 6 (nc-1,84)
- RHEL 7 (nmap-ncat-6.40)
- Bemerkungen
Mit Bash und timeout
:
Beachten Sie, dass timeout
RHEL 6+ vorhanden sein sollte oder alternativ in GNU Coreutils 8.22 enthalten ist. Installieren Sie es unter MacOS mit brew install coreutils
und verwenden Sie es als gtimeout
.
Befehl:
$ timeout $TIMEOUT_SECONDS bash -c "</dev/tcp/${HOST}/${PORT}"; echo $?
Wenn der Host und Port Parametrisierung, sollten Sie sie angeben , wie ${HOST}
und ${PORT}
wie oben ist. Geben Sie sie nicht nur als $HOST
und an $PORT
, dh ohne die geschweiften Klammern. In diesem Fall funktioniert es nicht.
Beispiel:
Erfolg:
$ timeout 2 bash -c "</dev/tcp/canyouseeme.org/80"; echo $?
0
Fehler:
$ timeout 2 bash -c "</dev/tcp/canyouseeme.org/81"; echo $?
124
Wenn Sie den Exit-Status von beibehalten müssen bash
,
$ timeout --preserve-status 2 bash -c "</dev/tcp/canyouseeme.org/81"; echo $?
143
Verwenden von nc
:
Beachten Sie, dass eine abwärts inkompatible Version von nc
auf RHEL 7 installiert wird.
Befehl:
Beachten Sie, dass der folgende Befehl insofern einzigartig ist, als er für RHEL 6 und 7 identisch ist. Nur die Installation und die Ausgabe unterscheiden sich.
$ nc -w $TIMEOUT_SECONDS -v $HOST $PORT </dev/null; echo $?
RHEL 6 (nc-1,84):
Installation:
$ sudo yum install nc
Beispiele:
Erfolg:
$ nc -w 2 -v canyouseeme.org 80 </dev/null; echo $?
Connection to canyouseeme.org 80 port [tcp/http] succeeded!
0
Fehler:
$ nc -w 2 -v canyouseeme.org 81 </dev/null; echo $?
nc: connect to canyouseeme.org port 81 (tcp) timed out: Operation now in progress
1
Wenn der Hostname mehreren IPs zugeordnet ist, durchläuft der obige fehlgeschlagene Befehl viele oder alle. Zum Beispiel:
$ nc -w 2 -v microsoft.com 81 </dev/null; echo $?
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
1
RHEL 7 (nmap-ncat-6.40):
Installation:
$ sudo yum install nmap-ncat
Beispiele:
Erfolg:
$ nc -w 2 -v canyouseeme.org 80 </dev/null; echo $?
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 52.202.215.126:80.
Ncat: 0 bytes sent, 0 bytes received in 0.22 seconds.
0
Fehler:
$ nc -w 2 -v canyouseeme.org 81 </dev/null; echo $?
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connection timed out.
1
Wenn der Hostname mehreren IPs zugeordnet ist, durchläuft der obige fehlgeschlagene Befehl viele oder alle. Zum Beispiel:
$ nc -w 2 -v microsoft.com 81 </dev/null; echo $?
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connection to 104.43.195.251 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection to 23.100.122.175 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection to 23.96.52.53 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection to 191.239.213.197 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection timed out.
1
Bemerkungen:
Das Argument -v
( --verbose
) und der echo $?
Befehl dienen natürlich nur zur Veranschaulichung.