Mat*_*ons 10 linux ssh redirection stderr stdout
所以,我有一个我发出的命令,它本质上是“ssh”到各种主机中:
command 2&>1 | grep "desired output"
Run Code Online (Sandbox Code Playgroud)
每隔一段时间,在命令执行过程中,它就会遇到一个我没有设置密钥的主机。发生这种情况时,我得到以下输出:
Password:
Run Code Online (Sandbox Code Playgroud)
由于我将 STDERR 重定向到 STDOUT,然后过滤 STDOUT 以只给我“所需的输出”(不包括“密码:”),密码提示是如何呈现给我的?
par*_*ydr 12
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,
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3168 次 |
最近记录: |