在远程计算机上以sudo用户身份运行python脚本

时间:2016-01-24 18:41:21

标签: python unix sudo remote-server

我对python编程很陌生,作为我学习的一部分,我决定开始编写一个简单的日常任务,这可以节省一些时间,我完成了大部分脚本,但现在我看到了一个很大的挑战在执行它时,因为我需要用sudo用户访问它来执行它一个远程服务器。基本上我需要的是,

  

登录远程系统。   运行sudo su - user(不需要密码作为基于SSH密钥的登录)   运行代码。   注销,结果分配给varible。   我需要存储在变量中的脚本的最终结果,以便我可以将其用于验证。

2 个答案:

答案 0 :(得分:0)

感谢所有答案的人。 Fabric对我有用,下面是代码片段。

from fabric.context_managers import settings
from fabric.api import *
with settings(host_string='username@host',user='runcommand_user'):
     run('command')

但在使用之前请确保您已在主机中设置了如下所示的sudo访问权限 (runco​​mmand_user)NOPASSWD:ALL

你可以登录主机并执行' sudo -l'检查您是否具有上述访问权限

答案 1 :(得分:0)

另一种方法是使用paramiko如下。

  

un_con = paramiko.SSHClient()   un_con.set_missing_host_key_policy(paramiko.AutoAddPolicy())   un_con.connect(host,username = user,key_filename = keyfile)stdin,stdout,   stderr = un_con.exec_command(sudo -H -u sudo_user bash -c' command')