2017-10-19 108 views
0

如果我運行的某些主機下面的腳本:從sudo的命令刪除冗長的僞終端

ssh -t myhost /usr/bin/sudo /bin/bash <<'HERE_DOCUMENT' 
whoami 
uptime 
exit 
HERE_DOCUMENT 

我得到以下輸出:

Pseudo-terminal will not be allocated because stdin is not a terminal. 
sudo: sorry, you must have a tty to run sudo 

爲須藤設置啓用requiretty。我不想改變這個設置。

所以我從existing StackOverflow answer的修復是添加-tt選項到ssh。

ssh -tt myhost /usr/bin/sudo /bin/bash <<'HERE_DOCUMENT' 
whoami 
uptime 
exit 
HERE_DOCUMENT 

但是,創建另一個問題,輸出變得太冗長:

[[email protected] ec2-user]# whoami 
root 
[[email protected] ec2-user]# uptime 
03:44:29 up 2 days, 3:26, 2 users, load average: 0.00, 0.01, 0.05 
[[email protected] ec2-user]# exit 
exit 
Connection to myhost closed. 

什麼是去除提示和命令呼應的最佳方式?
這些命令只是示例,我確實需要使用sudo訪問來運行特權命令。

+0

既然你有'sudo'訪問,也許你可以在你的公鑰添加到'〜根/的.ssh /授權keys',然後做'SSH根@ myhost的/ bin/bash

+0

您應該將其作爲答案發布。這可以幫助其他人。在我的情況下,我想盡量減少對遠程系統的任何更改。根並不總是被允許直接SSH到主機。 – dabest1

回答

1

如果您不想要交互式shell會話,請勿在tty上啓動交互式shell。剛開始那非交互式運行您的命令外殼:

ssh -tt host "sudo bash -c ' 
    whoami 
    uptime 
    '"