我正在尝试从 python 脚本中通过 SSH 连接到另一台主机并运行需要 sudo 的命令。
我可以从 python 脚本 ssh 如下:
import subprocess
import sys
import json
HOST="hostname"
# Ports are handled in ~/.ssh/config since we use OpenSSH
COMMAND="sudo command"
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if result == []:
error = ssh.stderr.readlines()
print(error)
else:
print(result)
但我想在 sshing 之后运行这样的命令:
extract_response = subprocess.check_output(['sudo -u username internal_cmd',
'-m', 'POST',
'-u', 'jobRun/-/%s/%s' % (job_id, dataset_date)])
return json.loads(extract_response.decode('utf-8'))[0]['id']
我怎么做?
另外,我不想在每次运行此 sudo 命令时都提供 sudo 密码,因为我已在尝试 ssh 的新主机中的 visudo 末尾添加了此命令(即上面的 internal_cmd)进入。但是仍然像这样直接在终端中键入此命令时:
ssh -t hostname sudo -u username internal_cmd -m POST -u/-/1234/2019-01-03
系统提示我提供密码。为什么会这样?