如何在使用python连接到服务器后提供一次sudo命令/密码

时间:2017-11-12 16:16:35

标签: python-3.x paramiko

使用我的身份凭证连接到unix服务器后,我尝试通过提供sudo命令和密码登录sudo用户。我尝试了不同的方法,但我没有成功。以下是我的代码

import paramiko
import time

#define SSH
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(policy=paramiko.AutoAddPolicy)

#Connect to ther server
ssh.connect('server',22,username='username',password='password')



transport = ssh.get_transport()

#create a channel
chan = transport.open_session()

#interactive shell
chan.get_pty()
chan.invoke_shell()
print(chan.recv(2000))

#execute command
chan.exec_command('sudo S su - test server')
chan.send('password')
chan.send('\n')
chan.exec_command('whoami')
print(chan.recv(2000))
chan.close()

有没有其他方法可以提供sudo commanfd和密码

1 个答案:

答案 0 :(得分:0)

我一直用paramiko shell来做这些事情。它基本上意味着将它视为'expect',它会根据某些正则表达式模式检查提示,以查看命令的完成情况。根据命令输出或提示的响应,您可以发送后续命令。

这是一个更完整的概述: https://github.com/fgimian/paramiko-expect