Почему я могу видеть запросы пароля через перенаправление вывода?
Итак, у меня есть команда, которую я выдаю, которая по сути 'ssh'ing на разных хостах:
command 2&>1 | grep "desired output"
Время от времени, посреди команды, она наталкивается на хост, где у меня не настроены мои ключи. Когда это происходит, я получаю этот вывод:
Password:
Так как я перенаправляю STDERR в STDOUT, а затем фильтрую STDOUT, чтобы получить только "желаемый результат" (который не включает "Password:"), как мне представляется запрос пароля?
1 ответ
Решение
SSH открывает /dev/tty для чтения и записи, чтобы запросить пароль.
Я предполагаю, что это функция безопасности, вход должен быть от tty, а не от stdin.
Если вы бежите strace ssh <host>
strace покажет вам системные вызовы, которые выполняет команда.
Я получил:
open("/dev/tty", O_RDWR|O_LARGEFILE) = 4
...
write(4, "dave@host"..., 16dave's password: ) = 16
read(4,