腳本調用ssh後出現Pseudo-terminal will not be allocated because stdin is not a terminal

原帖地址: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時要添加參數來指明這是來自腳本的調用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章