Cha*_*ala 5 linux ssh bash scripting
我正在尝试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"
Run Code Online (Sandbox Code Playgroud)
我发现-tt此脚本中的选项是导致此错误的原因.有什么想法吗?
此外,我已经注意到,当我执行以下命令仅为1服务器时,我没有看到此错误.
ssh -tt -q root@myserver sudo -U cham01 -l
以下是我得到的完整错误消息:
tcgetattr: Inappropriate ioctl for device
tcgetattr: Inappropriate ioctl for device 通常意味着某些程序试图进行终端控制操作,但其标准I/O流未连接到终端.(我知道这是因为tcgetattr是执行终端控制操作的C库函数的名称.)
现在,整点-tt选项ssh是为了保证在远程主机上运行的程序被连接到终端,并stty打印出speed 38400 baud; line = 0; -brkint -imaxbel证明它是.这是我所得到的,当我与运行这些命令我的服务器:
$ ssh myserver stty < /dev/null
stty: 'standard input': Inappropriate ioctl for device
$ ssh -tt myserver stty < /dev/null
speed 38400 baud; line = 0;
-brkint -imaxbel
Connection to myserver closed.
Run Code Online (Sandbox Code Playgroud)
但你得到的是
$ ssh -tt yourserver stty < /dev/null
tcsetattr: Inappropriate ioctl for device
speed 38400 baud; line = 0;
-brkint -imaxbel
Run Code Online (Sandbox Code Playgroud)
该tcsetattr错误是不是来自哪里stty.首先尝试做与终端相关的事情并失败,然后 stty成功运行.这表明在你的shell启动脚本,它正在做的事情跑"非交互"时是不合适的错误,导致您收到此错误,即使你正在运行的连接到终端的命令.我无法再帮助你了,但也许这个关于类似问题的旧答案提供了一些线索.
| 归档时间: |
|
| 查看次数: |
34496 次 |
| 最近记录: |