Por que esse comando funciona?

0

alguém me mostrou este comando para obter as datas de validade dos certificados:

echo | openssl s_client -connect <server>:7002 2>/dev/null| openssl x509 -noout -dates

saída:

notBefore=Sep  8 08:00:30 2015 GMT
notAfter=Sep  7 08:00:30 2016 GMT

então funciona, mas eu perguntei por que você precisa do eco | na frente dele, parece que você está apenas ecoando nada. Ele disse porque se você não colocar echo | na frente do comando, em seguida, dá-lhe a saída, mas você não recebe o prompt de volta, ele apenas trava e de fato isso é verdade, mas eu gostaria de entender por que ..

    
por Seattle427 25.08.2016 / 02:41

1 resposta

3

Como no linux, echo<ENTER> irá ecoar uma nova linha.

no windows, seria echo. (echo / funciona também e algumas outras coisas funcionam)

será como digitar quando você receber uma solicitação.

várias coisas podem sair de um prompt .. ecoar alguns caractere (s), e quando não há mais entrada, o prompt sai. Ao introduzir a entrada de tubulação, ela usa essa entrada em vez de solicitar entrada do teclado e esperar por, e. um ctrl-z no windows. (ctrl-d no inicio de uma linha no linux vai fazer também, eu acabei de testar e é mencionado aqui )

Geralmente, ao obter um prompt, às vezes, o eco de qualquer caractere pode funcionar, por exemplo, se você usar dir /p e receber um aviso "Pressione qualquer tecla para continuar". Em seguida, tente echo a| dir /p e ele mostrará a listagem e pressione a tecla para você.

Mas veja com tal comando, se ele só funciona para ENTER, ou se funciona para outras chaves, e outra coisa que alguém pode procurar é se está procurando por um fim de entrada. Por exemplo, link

Então, no Windows, se você digitar mais, receberá um aviso. se você digitar alguns caracteres, ele os verá como inseridos e será gerado, já que é isso que mais faz, mas não sai. Se, no entanto, você repetir até mesmo um único caractere, por exemplo, echo a|more , em seguida, sai, e isso é porque esse é um prompt que irá sair / parar de tentar ler stdin, quando não houver mais caracteres a serem inseridos.

Além disso, se você quiser ver o que foi ecoado, use xxd, por exemplo. no windows, echo a | xxd -p e você verá que ele enviou um 'a' e um espaço. Você veria que também se você ecoar um > a.a então dir a.a ver seus dois bytes. Você pode obter o xxd do cygwin ou vim7 e, claro, do linux.

    
por 25.08.2016 / 02:53