脚本调用ssh后出现Pseudo-terminal will not be allocated because stdin is not a terminal

本文介绍了一种在Shell脚本中调用SSH进行远程登录时遇到的问题及其解决方案。该问题表现为脚本调用后无法正常退出,并且会报错提示关于伪终端未分配的信息。文章详细记录了解决过程并分享了最终采用的添加-tt参数的方法。
摘要由CSDN通过智能技术生成

原帖地址:http://blog.csdn.net/annicybc/article/details/3216041

在最近一个刚刚完成的项目中,我们使用了SSH远程login到指定的服务器,在command模式下直接ssh + IP就可以了(通过设置不需要用户密码),如:ssh 10.22.19.54,使用exit退出到本机服务。为了完成一些自动化的工作,我将这段代码通过如下SHELL方式实现:

G_log="/home/admin/call.log"
G_var=$*

ssh 10.22.19.54 >>$G_log <<EOF
echo "I am 54 now."
echo "$G_var"

/home/admin//disp/adb.sh "$G_var"

exit
EOF

但是在调试的时候,我们发现了一个非常郁闷的问题,每次调用这个脚本之后会报如下错误:

Pseudo-terminal will not be allocated because stdin is not a terminal

TERM environment variable not set.

而且我们脚本是通过Java来调用的,在JAVA线程调用之后发现shell一直没退出,导致系统资源一直被占用,在大用户量先系统很快就撑不住了。为此必须尽快解决这个问题。

网上搜索了很久,发现一大堆类似的问题。看完之后,和我们的SA工程师一请教。他推荐加个参数 -tt试试,一试结果就出来了,而且速度还特别快。果然好东西啊。

总结了一下。在shell脚本调用ssh时要添加参数来指明这是来自脚本的调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值