Est-il possible de définir un délai d'expiration sur la commande s_client de openssl?

14

J'ai un script qui utilise la commande s_client de openssl pour extraire des certificats pour un grand nombre d'hôtes. Certains de ces hôtes seront inévitablement inaccessibles en raison d'un pare-feu. Est-il possible de définir le délai d'expiration de s_client sur quelque chose de beaucoup plus court que la valeur par défaut? Je n'en vois pas dans la page de manuel / fichier d'aide.

Cela ou une sorte de commande wrapper qui tuera automatiquement le openssl -s_client après X nombre de secondes.

Je préfère ne pas pré-tester un hôte / port pour la convivialité si possible.

Justin Ainsworth
la source

Réponses:

14

Utilisez la commande timeout du package GNU coreutils.

timeout <time> <command>

Vous pouvez également consulter la première réponse à cet article de blog archivé pour une réponse bash uniquement.

kupson
la source
1

pour la première boucle: pendant la lecture du nom du serveur; faites

timeout 2 bash -c "/ dev / tcp / $ servername / $ Port" && echo Port ouvert. || écho Port fermé.

terminé

Mais les ports ouverts sont plus difficiles: timeout 1 openssl s_client -showcerts -connect $ servername: $ Port

erik
la source