Как исправить ошибку в коде?

Нужно сделать скрипт, который будет ходить на удаленную машину, выполнять там команду и возвращать тебе ответ. Использовать сторонние библиотеки нельзя. С начала пытался сделать через subprocess.check_output, но не нашел нужного использования. По итогу дошел вот до такого вида

import subprocess
import pipes

user = "user"
host = "host"
password = "password"
remote_commands = "systemctl status sbis-dump-writer"
sshCommand = "sshpass -p %s ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no %s@%s" % (pipes.quote(password), user, host)
process1 = subprocess.Popen(sshCommand, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
out, err = process1.communicate(remote_commands.encode())


Но выдает ошибку
6041d45a8c9e9601729376.png

Помогите, пожалуйста, исправить
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 2
@iddqda
network engineer, netdevops
а что спрятано в тех закорючках?
и что такое sshpass?
я подобную задачу делал через стороннюю либу ssh2
и кстати а почему стороннюю либу нельзя?
а светить паролем в коде значит можно?

еще как вариант решить твою задачу тупо ансиблом
Ответ написан
@GeneD88
QA
Вы, наверняка, пробовали такой check_output. Что он выдает?
sshCommand = 'ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" -i {SSH KEY} {USERNAME}@{IP} {CMD}'
process1 = str(subprocess.check_output(command, shell=True))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы