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

在最近一个刚刚完成的项目中,我们使用了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时要添加参数来指明这是来自脚本的调用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值