2013-12-19 55 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