У меня есть список IP-адресов, которые мне нужны, чтобы проверить, поддерживают ли они TLS1.2, и я использую Openssl для этого. Однако я не могу автоматизировать процесс в сценарии Bash. Он выполняется только на первом IP-адресе и ждет ввода. Я читал, что мне нужно либо добавить < /dev/null
, либо echo "x"
, но это не поможет. Я пробовал:Выполнение openssl с использованием bash for loop
for i in `cat scope`; do openssl s_client -tls1_2 -connect $i:443 < /dev/null; done
или:
for i in `cat scope`; do echo "x" | openssl s_client -tls1_2 -connect $i:443 < /dev/null; done
EDIT: решена, порт 443 не был открыт на 2-й IP, поэтому он ждет.
Можете ли вы попробовать запустить это вручную для одного IP-адреса и вставить терминал ввода/вывода? – anishsane
@anishsane, если я запускаю на 1 IP, без цикла, он дает мне вывод и заканчивается нормально, и я возвращаю свой запрос: 'openssl s_client -tls1_2 -connect $ (head -1 scope): 443 dev/null' , Однако, если я запускаю этот цикл использования, он просто останавливается после проверки 1 IP. – ChildinTime
ОК, есть ли ошибки во второй строке? возможно, конечные пробелы или любой особый символ и т. д.? Кроме того, он запускается вручную для 2-й строки ('openssl s_client -tls1_2 -connect $ (sed -n 2p scope): 443 dev/null')? Или, возможно, второй IP-адрес не отвечает и, следовательно, процесс просто зависает? В этом случае (зависание) попробуйте добавить что-то вроде 'timeout 10' перед' openssl'. – anishsane