【发布时间】:2017-08-20 04:56:40
【问题描述】:
我正在尝试通过 SSH 连接几台服务器并尝试获取每台服务器的 sudo -l 输出。
下面是我正在执行的脚本
#!/bin/bash
serverlist="/tmp/servers"
while IFS=, read -r server netgroup username user
do
ssh -tt -q root@$server sudo -U $username -l < /dev/null
done < "$serverlist"
我发现此脚本中的-tt 选项是导致此错误的原因。对此有什么想法吗?
我还注意到,当我仅为 1 台服务器执行以下命令时,我没有看到此错误。
ssh -tt -q root@myserver sudo -U cham01 -l
以下是我收到的完整错误消息:
tcgetattr: Inappropriate ioctl for device
【问题讨论】:
-
请显示错误消息的完整且未经编辑的文本,而不仅仅是“不适合设备的 ioctl”部分。这个问题有几个不同的潜在原因,如果没有进一步的信息,我无法判断是哪一个。另外,请告诉我们脚本是否真的失败,或者它是否只打印您想要的输出但也这个错误消息。
-
添加
-vvv切换到ssh命令以获取更多信息和消息的上下文(而不是-q,它会隐藏所有信息)。 -
(1) 执行
ssh -tt -q root@myserver sudo -U cham01 -l < /dev/null时是否出现此错误? -
(2) 我再说一遍:请告诉我们脚本是否真的失败,或者它是否只打印了您想要的输出以及此错误消息。
-
@zwol 脚本不会失败。它只是在输出中打印
tcgetattr: Inappropriate ioctl for device。是的,当我执行ssh -tt -q root@myserver sudo -U cham01 -l < /dev/null时出现此错误