[问题] 请问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