您的位置:首页 > 其它

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

2016-12-09 14:21 471 查看
原帖地址: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时要添加参数来指明这是来自脚本的调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐