這裏是我的代碼:Python的子須藤返回錯誤:錯誤:「須藤:對不起,你必須有一個tty運行sudo的 n」]
import subprocess
HOST = 'host_name'
PORT = '111'
USER = 'user_name'
CMD = 'sudo su - ec2-user; ls'
process = subprocess.Popen(['ssh','{}@{}'.format(USER, HOST),
'-p', PORT, CMD],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result = process.stdout.readlines()
if not result:
print "Im an error"
err = process.stderr.readlines()
print('ERROR: {}'.format(err))
else:
print "I'm a success"
print(result)
當我運行此我收到以下輸出在我的終端:
dredbounds-computer: documents$ python terminal_test.py
Im an error
ERROR: ['sudo: sorry, you must have a tty to run sudo\n']
我已經試過許多東西,但我不斷收到這個錯誤「須藤:對不起,你必須有一個tty運行sudo的」。它工作正常,如果我只是通過終端手動執行,但我需要自動執行此操作。我讀過一個解決方法可能是在我的ssh調用中使用'-t'或'-tt',但是我還沒有能夠在子進程中成功實現這個功能(終端只是掛在我身上)。任何人都知道我可以如何修復我的代碼,或者解決這個問題?理想情況下,我想ssh,然後切換到sudo用戶,然後從那裏運行一個文件(我只是把ls用於測試目的)。
爲什麼'須藤蘇 - EC2用戶; ls'而不只是'sudo -u ec2-user ls'? – miken32