2017-08-24 104 views
0

我需要使用Python脚本通过SSH在远程计算机上执行2个命令(Ubuntu Mate 16.04)。Python:如何在每个命令中通过SSH执行多个不需要登录的命令

run_pigpiod_remote在远程RPi上运行守护程序,如下面代码中的#Line0所示。 #Line1根据需要建立SSH链接并执行守护程序pigpiod

为了验证成功运行,我希望使用pgrep -x pigpiod,如#Line2中所述。由于#行2被写入 - 我需要再次输入密码。

如何避免输入密码了这么多次(进入SSH,运行sudo,和第3的2号线#)

def run_pigpiod_remote(adress): 
    if ip[0]==adress: 
     print(adress,"is a local machine") 
     run_pigpiod_local() 
    else: #Line0 
     print(adress," is a remote machine") 
     result = subprocess.run(['ssh','-t','[email protected]'+adress,'sudo','pigpiod']) #Line1 
     result2 = subprocess.run(['ssh','-t','[email protected]'+adress, "pgrep -x ", "pigpiod"]) #Line2 

回答

1

试试这个

subprocess.run(['ssh','-t','[email protected]'+adress,'sudo pigpiod && pgrep -x pigpiod']) 
+0

OK!它运作良好。这是一个很好的解决方法。我如何退出PID(不仅在屏幕上)?这种方式的代码将确认一个成功的运行。 –

+2

尝试subprocess.check_output。 https://docs.python.org/3.6/library/subprocess.html#subprocess.check_output如果你的ssh输出了一些东西,你可以检查输出并验证命令是否成功。 – BoboDarph