【发布时间】:2017-08-23 15:01:48
【问题描述】:
我需要使用 SSH 在远程 Linux 机器上运行一个守护进程。
守护进程的名字是pigpiod,属于pigpio模块(控制树莓派的GPIO),Ubuntu Mate 16.04。
执行不需要sudo 的命令(例如-ls)- 脚本运行正常,而需要sudo 的命令运行失败。
adress='192.168.2.112' ,是一个远程Linux来运行这个守护进程。
下面的代码失败(运行
sudo pigpiod):
def runpigpiod_remote(adress):
result = subprocess.run(['ssh','guy@'+adress,'sudo','pigpiod'])
下面的代码成功(运行
ls -l)
def runpigpiod_remote(adress):
result = subprocess.run(['ssh','guy@'+adress,'ls','-l'])
为了检查subprocess.run 是否能够执行 sudo+ 命令 - 我在同一台机器上尝试本地化并且成功:
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")
【问题讨论】:
-
你能做这样的事情吗? stackoverflow.com/questions/10310299/…
-
是感谢
sudo -t!
标签: python subprocess