2013-12-19 71 views
2

目前我工作的一個Python腳本運行嵌入shell腳本,操作系統包含normal_user使用Python執行遠程命令的根和的paramiko

的問題是,當我嘗試切換從normal_user,在一行中使用單個命令。

我只能修改代碼並沒有像visudo實現這一目標,並使用su只有不給normal_user編碼以外的任何權利。

我該如何做到這一點?

ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect('172.16.x.x', username='my_name', password='my_password') 

***stdin, stdout, stderr = ssh.exec_command('switch to root user && execute a commands as root')*** 


stdin.flush() 
print stdout.readlines() 
ssh.close() 

回答

0

假設OS環境sudo命令安裝並normal_user允許sudo不用密碼根:

stdin, stdout, stderr = ssh.exec_command('sudo -i -H -- echo $USER ; echo $USER') 

選項-i模擬器根登錄(準備.profile等環境變量),選項-H將$HOME目錄設置爲與根目錄相同。根據您的使用情況,這些可能也可能不需要。

echo $USER示例顯示您正在以root身份執行該命令(應該返回$ USER = root)。

作爲安全度量,只有當用戶使用正確的SSH密鑰登錄時,纔可以將normal_user設置爲具有sudo權限。

http://www.evans.io/posts/ssh-agent-for-sudo-authentication/(復)

+0

操作系統只允許蘇和須藤不會在所有 – user3112598

+0

我的建議的工作將是在這種情況下安裝sudo。因爲如果你有root權限,你應該可以安裝你想要的任何軟件。我不確定su是否以非交互方式執行以root身份執行的命令,但很久以前我上次使用它,因爲sudo幾乎到處都是。 –

+0

非常感謝Mikko爲你提供的幫助,公司有一項政策是不給sudo Normal_user我真的不知道該怎麼做。 – user3112598