É possível definir um tempo limite no comando s_client do openssl?

14

Eu tenho um script que usa o comando s_client do openssl para obter certificados para um grande conjunto de hosts. Alguns desses hosts inevitavelmente estarão inacessíveis por causa de um firewall. É possível definir o tempo limite do s_client para algo muito menor que o padrão? Não vejo um na página de manual / arquivo de ajuda.

Esse ou algum tipo de comando wrapper que mata automaticamente o openssl -s_client após um número X de segundos.

Eu preferiria não testar previamente um host / porta quanto à usabilidade, se possível.

Justin Ainsworth
fonte

Respostas:

13

Use o comando timeout do pacote GNU coreutils.

timeout <time> <command>

Como alternativa, consulte a primeira resposta a esta postagem de blog arquivada para obter uma resposta apenas do bash.

Kupson
fonte
1

para o primeiro loop: enquanto lê servername;

timeout 2 bash -c "/ dev / tcp / $ servername / $ Port" && echo Porta aberta. || eco Porta fechada.

feito

Mas as portas abertas são mais difíceis: timeout 1 openssl s_client -showcerts -connect $ servername: $ Port

erik
fonte