Apakah mungkin untuk menetapkan batas waktu pada perintah s_client openssl?

14

Saya punya skrip yang menggunakan perintah openssl s_client untuk menarik sertifikat untuk sejumlah besar host. Beberapa host ini pasti akan terjangkau karena firewall. Apakah mungkin untuk mengatur batas waktu s_client ke sesuatu yang jauh lebih pendek dari standar? Saya tidak melihat satu di halaman manual / file bantuan.

Itu atau semacam perintah wrapper yang akan secara otomatis membunuh openssl -s_client setelah X jumlah detik.

Saya lebih suka untuk tidak menguji tuan rumah / port untuk kegunaan jika memungkinkan.

Justin Ainsworth
sumber

Jawaban:

13

Gunakan perintah batas waktu dari paket GNU coreutils.

timeout <time> <command>

Atau lihat respons pertama terhadap posting blog yang diarsipkan ini untuk jawaban bash-only.

kupson
sumber
1

untuk loop pertama: sambil membaca servername; lakukan

timeout 2 bash -c "/ dev / tcp / $ servername / $ Port" && echo Port terbuka. || Port echo ditutup.

selesai

Tetapi port terbuka lebih sulit: timeout 1 openssl s_client -showcerts -connect $ servername: $ Port

erik
sumber