使用Python和paramiko以root身份执行远程命令

时间:2013-12-19 09:54:25

标签: python linux bash command-line

目前,我正在使用Python脚本运行嵌入式shell脚本,操作系统包含 root normal_user

问题是,当我尝试从一行中使用单个命令从 normal_user 切换到 root 时。

我必须只修改代码,而不是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()

1 个答案:

答案 0 :(得分:0)

假设操作系统环境安装了sudo命令,normal_user允许sudo无需密码即可以root用户:

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

选项-i simulators root login(准备.profile等环境变量),选项-H设置$HOME目录与root相同。根据您的使用情况,这些可能需要也可能不需要。

echo $USER示例显示您正在以root身份执行该命令(它应返回$ USER = root)。

作为安全措施,只有当用户使用正确的SSH密钥登录时,您才可以将normal_user设置为具有sudo权限。

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