linux ioctl 设备只读,linux – 尝试SSH时设备的ioctl不合适

我正在尝试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:设备不适当的ioctl

解决方法:

tcgetattr:设备的不适当的ioctl通常意味着某些程序尝试进​​行终端控制操作,但其标准I / O流未连接到终端. (我知道这是因为tcgetattr是执行终端控制操作的C库函数的名称.)

现在,ssh的-tt选项的重点是保证远程主机上运行的程序连接到终端,并且stty打印出38400波特的速度; 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.

但你得到的是

$ssh -tt yourserver stty < /dev/null

tcsetattr: Inappropriate ioctl for device

speed 38400 baud; line = 0;

-brkint -imaxbel

tcsetattr错误不是来自stty.首先尝试做一些与终端相关的事情并失败,然后stty成功运行.

这表明你的shell启动脚本中存在一个错误,它在执行“非交互式”运行时不合适,导致即使运行连接到终端的命令也会出现此错误.我无法帮助你,但也许this old answer about a similar problem提供了一些线索.

标签:bash,linux,scripting,ssh

来源: https://codeday.me/bug/20190611/1217774.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值