кто-то показал мне эту команду, чтобы получить даты истечения срока действия сертификатов:

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

выход:

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

так работает но я спросил зачем тебе эхо | перед ним потому что кажется, что вы просто ничего не повторяете. Он сказал, потому что, если вы не положите эхо | перед командой затем выводит вывод, но вы не получаете подсказку обратно, она просто зависает, и это действительно так, но я бы хотел понять ПОЧЕМУ ..

1 ответ1

3

Потому что в linux echo<ENTER> отобразит новую строку.

в окнах это было бы echo. (эхо / тоже работает, а некоторые другие вещи работают)

это будет похоже на ввод, когда вы получите приглашение.

различные вещи могут выходить из приглашения ... выводить символы (символы), а затем, когда ввода больше нет, приглашение завершается. По трубопроводу вводит его, он берет этот ввод вместо того, чтобы запрашивать ввод с клавиатуры и ожидать, например, Ctrl-Z в Windows. (ctrl-d в начале строки в linux тоже сделает это, я только что проверил это и упомянуто здесь https://unix.stackexchange.com/questions/16333/how-to-signal-the-end -вход-ввод )

Как правило, при получении приглашения иногда может срабатывать отображение любого символа, например, если вы выполняете dir /p и получаете приглашение "Нажмите любую клавишу для продолжения". Тогда попробуйте echo a| dir /p и он покажет список и нажмите клавишу для вас.

Но посмотрите с помощью такой команды, работает ли она только для ENTER или для других клавиш, и еще нужно искать, ищет ли она конец ввода. Например, https://stackoverflow.com/questions/33814493/why-cant-this-c-sharp-program-be-piped-to-like-the-more-command-and-what-c

Так что в Windows, если вы наберете больше, вы получите приглашение. если вы набираете какие-то символы, он видит их как введенные и выводит их, что делает больше, но не завершается. Однако, если вы выводите даже один символ на большее число, например, на echo a|more чем оно завершается, и это потому, что это приглашение, которое завершит / прекратит попытки чтения стандартного ввода, когда больше нет символов, которые нужно ввести.

Также, если вы хотите увидеть, что было отражено, вы можете использовать xxd, например, в windows, повторить | xxd -p, и вы увидите, что он отправил 'a' и пробел. Вы бы это увидели, если бы вы отказались от эха a> aa, тогда dir aa увидели, что это два байта. Вы можете получить xxd от cygwin или vim7, и, конечно, для linux.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .