Я пытаюсь подключиться по SSH к другому хосту из скрипта Python и запустить команду, которая требует sudo.
Я могу использовать SSH из скрипта Python следующим образом:
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, для этого я добавил эту команду (т. Е. Internal_cmd сверху) в конце visudo на новом хосте, которым я являюсь. пытаясь ssh в. Но все же, когда просто набираешь эту команду прямо в терминале, вот так:
ssh -t hostname sudo -u username internal_cmd -m POST -u/-/1234/2019-01-03
Мне предлагается ввести пароль. Почему это происходит?