OK teve a mesma coisa e demorou um pouco para descobrir.
Não consigo encontrar uma maneira de enviar várias linhas na solicitação ao usar s_client interativamente. Ele sempre envia a solicitação imediatamente assim que você entra na primeira linha. Se alguém souber como contornar isso, por favor me avise!
Editar : vejo Wei Ele postou a maneira de fazer isso - use o -crlf
flag mas deixando esta resposta aqui como um método alternativo.
Nesse meio tempo, como sugerido por jww, você precisa usar echo
para isso:
echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | openssl s_client ...
A próxima questão é que, por padrão, o openssl fecha a conexão quando o arquivo de entrada é fechado. O que acontece imediatamente ao usar echo
como este. Então você não tem tempo para ver a resposta e, em vez disso, apenas vê a saída DONE! : - (
Você pode adicionar um sleep
ao comando echo para contornar isso (note que os colchetes são importantes):
(echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"; sleep 10) | openssl s_client ...
Ou, melhor que isso, você pode usar a opção -ign_eof
para deixar a conexão aberta:
echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | openssl s_client -ign_eof ...
Ou melhor ainda, se você estiver preocupado apenas com as respostas HTTP, use a opção -quite
, que oculta a maior parte do ruído TLS e também define essa opção -ign_eof para você:
echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | openssl s_client -quiet ...