Python:如何通过SSH执行需要` sudo'的程序`
我需要使用SSH在远程Linux机器上运行deamon 迪蒙的名字是Python:如何通过SSH执行需要` sudo'的程序`,python,subprocess,Python,Subprocess,我需要使用SSH在远程Linux机器上运行deamon 迪蒙的名字是pigpiod,它属于pigpio模块(控制树莓Pi的GPIO),Ubuntu Mate 16.04 执行不需要sudo(例如-ls)的命令时,脚本运行正常,而需要sudo的命令则失败 adress='192.168.2.112'是运行此守护程序的远程Linux 以下代码失败(运行sudo pigpiod): 下面的代码成功(运行ls-l) 为了检查子流程运行是否能够在同一台机器上本地执行sudo+命令-I并成功: def ru
pigpiod
,它属于pigpio
模块(控制树莓Pi的GPIO),Ubuntu Mate 16.04
执行不需要sudo
(例如-ls
)的命令时,脚本运行正常,而需要sudo
的命令则失败
adress='192.168.2.112'是运行此守护程序的远程Linux
以下代码失败(运行sudo pigpiod):
下面的代码成功(运行ls-l
)
为了检查子流程运行是否能够在同一台机器上本地执行sudo+命令-I并成功:
def run_process():
try:
check_output(["pidof","pigpiod"])
print("pigpiod already loaded")
except:
subprocess.CalledProcessError
print("Not Loaded")
subprocess.run(['sudo','pigpiod'])
if os.system("pgrep -x "+name)==0:
print("Loaded successfully")
代码更改(由于@Hamuel的注释)-如中所述
你能这样做吗?是的,多亏了sudo-t
!
def runpigpiod_remote(adress):
result = subprocess.run(['ssh','guy@'+adress,'ls','-l'])
def run_process():
try:
check_output(["pidof","pigpiod"])
print("pigpiod already loaded")
except:
subprocess.CalledProcessError
print("Not Loaded")
subprocess.run(['sudo','pigpiod'])
if os.system("pgrep -x "+name)==0:
print("Loaded successfully")
def runpigpiod_remote(adress):
result = subprocess.run(['ssh','-t','guy@'+adress,'sudo','pigpiod'])