[問題] 請問paramiko如何切換使用者

作者: phoenixcx (曼秀雷敦)   2018-08-03 15:38:37
小弟是使用python3
目前有兩個環境 一個是用root登入,另外是只能用一般使用者登入
如何用root登入後切換一般使用者
或是一般使用者登入切換成root?
感謝
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip,port=22,username='root',password=pw,timeout=5)
stdin, stdout, stderr = ssh.exec_command('su - james')
stdin, stdout, stderr = ssh.exec_command('whoami')
print(stdout.readlines())
ssh.close()
目前這樣寫會卡死無回應
作者: s860134 (s860134)   2018-08-03 19:34:00
使用 interactive shellexec command 屬於 ssh 原生功能 行為上和一般 shell 還是有差
作者: kenduest (小州)   2018-08-03 19:42:00
你可以想一下,手動 ssh [email protected] "su -l games"一定也是處於卡住的狀態,因為後續進入 shell 的login 互動 shell 了,所以變成後續 shell 沒有返回exec_command 是執行某個命令要等返回才有結果所以改成一次跑完結束返回就好. su - james -c whoami若你要能夠 ssh 登入,後續互動模式執行命令用 Pexpect 搭配 pxssh 來處理應該比較方便
作者: s860134 (s860134)   2018-08-03 21:22:00
shell = ssh.invoke_shell()之後只要使用 shell.send shell.recv 就可以滿足你要的任何功能惹順便提一下 exec_command 下的 env 沒執行過/etc/profile 所以尤其是 PATH 會跟你常用的不大一樣相對 invoke_shell 下面的 env 會正常一點
作者: phoenixcx (曼秀雷敦)   2018-08-04 22:16:00
感謝各位大大 禮拜一試一下

Links booklink

Contact Us: admin [ a t ] ucptt.com