Ist es möglich, ein Timeout für den Befehl s_client von openssl festzulegen?

14

Ich habe ein Skript, das den Befehl s_client von openssl verwendet, um Zertifikate für eine große Anzahl von Hosts abzurufen. Einige dieser Hosts sind aufgrund einer Firewall unweigerlich nicht erreichbar. Ist es möglich, das Timeout für s_client auf einen Wert zu setzen, der viel kürzer als der Standardwert ist? Ich sehe keine in der Manpage / Hilfedatei.

Dieser oder eine Art Wrapper-Befehl, der den openssl -s_client nach x Sekunden automatisch beendet.

Ich würde es vorziehen, einen Host / Port nach Möglichkeit nicht vorab auf Benutzerfreundlichkeit zu testen.

Justin Ainsworth
quelle

Antworten:

13

Verwenden Sie den Befehl timeout aus dem GNU-Paket coreutils.

timeout <time> <command>

Alternativ können Sie die erste Antwort auf diesen archivierten Blog-Beitrag lesen, um eine reine Bash-Antwort zu erhalten.

Kupson
quelle
1

für die erste Schleife: while read servername; do

timeout 2 bash -c "/ dev / tcp / $ servername / $ Port" && echo Port offen. || Echo Port geschlossen.

erledigt

Die offenen Ports sind jedoch schwieriger: Timeout 1 openssl s_client -showcerts -connect $ servername: $ Port

erik
quelle