2016-09-21 121 views
-1

我試圖在使用PuTTY的遠程CentOS機器上運行一些命令。我使用下面的命令:當從PuTTY命令行執行「sudo需要一個tty」時,「Sudo」失敗

putty.exe -ssh [IP] -l [user] -pw [password] -m [Script] 

哪裏[Script]是包含我要運行的命令的.txt文件。問題是,命令中的一種需要sudo,當膩子嘗試運行它,我得到一個錯誤:

sudo requires a tty

是交代不清我的事情是,如果我不給一個腳本啓動會話,然後運行手動命令從腳本,它工作正常。我試過使用-load而不是-ssh,並沒有什麼區別。

出於安全原因,我無法更改我的sudoers文件中的requiretty設置,這是我所能找到的唯一解決方案。還有其他選擇嗎?

回答

0

sudo需要TTY /交互式會話。

相反,PuTTY/Plink -m交換機默認使用非交互式會話。使用-t switch覆蓋。

putty.exe -ssh [IP] -l [user] -pw [password] -t -m [Script] 
+0

我沒有意識到-m選項做到了。添加-t修復了sudo錯誤。它仍然沒有工作,但我認爲新問題是由於我試圖運行的腳本,而不是PuTTY。謝謝! – CWRules

0

閱讀錯誤:sudo requires a tty。就是說,一個交互式shell。你必須找到另一種做這些特權指示的方法。例如,您可以使用作爲根以基於密鑰的身份驗證登錄

+0

這應該是用於測試自動化,所以使用交互式shell將不起作用。我會研究基於密鑰的身份驗證。 – CWRules

+0

從技術上講,您可以使用密碼登錄,但這在安全方面是一個非常糟糕的主意。也許這裏真正的問題是*爲什麼你需要root權限*?如果爲了與某些設備進行通信,udev規則應該足夠了。 – MayeulC