Максим Чаховский Posted February 24, 2019 Share Posted February 24, 2019 Из python вызываю SSH, выдает ошибку: import paramiko p = paramiko.SSHClient() p.set_missing_host_key_policy(paramiko.AutoAddPolicy()) p.connect("192.168.1.1", port=22, username="admin", password="qwerty") stdin, stdout, stderr = p.exec_command("show") opt = stdout.read() + stderr.read() print(opt) b'[C] Feb 24 16:59:14 ndm: bin::ndmc: invalid option "-c".\n' Quote Link to comment Share on other sites More sharing options...
0 Dorik1972 Posted February 25, 2019 Share Posted February 25, 2019 15 часов назад, Максим Чаховский сказал: stdin, stdout, stderr = p.exec_command("show") ??? что за команда show ??? как на счет 'ls -l' -> https://www.hostinger.com/tutorials/ssh/basic-ssh-commands . Quote Link to comment Share on other sites More sharing options...
0 Rootdiv Posted February 25, 2019 Share Posted February 25, 2019 (edited) 2 часа назад, Dorik1972 сказал: как на счет 'ls -l' -> https://www.hostinger.com/tutorials/ssh/basic-ssh-commands . Роутер непоймёт эту команду. 2 часа назад, Dorik1972 сказал: ??? что за команда show ??? Роутер должен показать определенные данные, только после show должен идти как аргумент, что он должен показать. Например команда show interface ISP показывает данные по интерфейсу ISP. 18 часов назад, Максим Чаховский сказал: stdin, stdout, stderr = p.exec_command("show") А что роутер должен выдать? Edited February 25, 2019 by Kiborg_Man Quote Link to comment Share on other sites More sharing options...
0 Dorik1972 Posted February 25, 2019 Share Posted February 25, 2019 (edited) 7 часов назад, Kiborg_Man сказал: Роутер непоймёт эту команду. Лично я понял вопрос как то что "пациент" поднял SSH сИрвЕрок на "тельце" (Entware или Debian) и пытается к нему ломануться ... p.s. Таки да https://help.keenetic.com/hc/ru/articles/360000387189 ... есть уже и SSH из коробки ... тогда да задать правильную команду show с заданными параметрами аля "show system" Edited February 25, 2019 by Dorik1972 Quote Link to comment Share on other sites More sharing options...
0 Максим Чаховский Posted February 25, 2019 Author Share Posted February 25, 2019 Да, задача из сессии SSH исполнять команды CLI. После команды "show" ожидаю ответ "Core::Configurator: Done." Вот что из терминала mac вручную (то же хочу получить из python): MacBook-Air-Maksim-2:~ Chakhovsky$ ssh admin@192.168.1.1 admin@192.168.1.1's password: Keenetic OS version 2.15.B.0.0-4, copyright (c) 2010-2019 Keenetic Ltd. THIS SOFTWARE IS A SUBJECT OF KEENETIC LIMITED END-USER LICENCE AGREEMENT. BY USING IT YOU AGREE ON TERMS AND CONDITIONS HEREOF. FOR MORE INFORMATION PLEASE CHECK https://keenetic.com/legal (config)> show Core::Configurator: Done. (show)> Quote Link to comment Share on other sites More sharing options...
0 sergeyk Posted February 26, 2019 Share Posted February 26, 2019 8 часов назад, Максим Чаховский сказал: Да, задача из сессии SSH исполнять команды CLI. После команды "show" ожидаю ответ "Core::Configurator: Done." В текущей 2.15 это сделать нельзя, но можно будет в следующих версиях. Quote Link to comment Share on other sites More sharing options...
0 Rootdiv Posted February 26, 2019 Share Posted February 26, 2019 (edited) 1 час назад, sergeyk сказал: В текущей 2.15 это сделать нельзя, но можно будет в следующих версиях. Я могу, пример bash скрипта: #!/usr/bin/expect -f sleep 5 spawn ssh user0@192.168.1.1 expect "user0@192.168.1.1's password:" {send "user0\r"} expect "(config)>" {send "show interface ISP\r"} expect "(config)>" {send "show dyndns\r"} expect "(config)>" {send "show\r"} expect "(show)>" {send "acme\r"} expect "(show)>" {send "\r"} send "exit\r" send "exit\r" expect eof P.S. Пользователя и пароля user0 не существует. Edited February 26, 2019 by Kiborg_Man Quote Link to comment Share on other sites More sharing options...
0 sergeyk Posted February 26, 2019 Share Posted February 26, 2019 В 24.02.2019 в 19:28, Максим Чаховский сказал: Из python вызываю SSH, выдает ошибку: import paramiko p = paramiko.SSHClient() p.set_missing_host_key_policy(paramiko.AutoAddPolicy()) p.connect("192.168.1.1", port=22, username="admin", password="qwerty") stdin, stdout, stderr = p.exec_command("show") opt = stdout.read() + stderr.read() print(opt) b'[C] Feb 24 16:59:14 ndm: bin::ndmc: invalid option "-c".\n' Возможно для удаленного управления вам будет удобнее использовать RCI-интерфейс через HTTP, получая на выходе JSON, более пригодный для разбора, чем просто текстовый вывод. Quote Link to comment Share on other sites More sharing options...
0 Максим Чаховский Posted February 26, 2019 Author Share Posted February 26, 2019 Спасибо за ответы, исчерпывающе. Quote Link to comment Share on other sites More sharing options...
Question
Максим Чаховский
Из python вызываю SSH, выдает ошибку:
import paramiko
p = paramiko.SSHClient()
p.set_missing_host_key_policy(paramiko.AutoAddPolicy())
p.connect("192.168.1.1", port=22, username="admin", password="qwerty")
stdin, stdout, stderr = p.exec_command("show")
opt = stdout.read() + stderr.read()
print(opt)
b'[C] Feb 24 16:59:14 ndm: bin::ndmc: invalid option "-c".\n'
Link to comment
Share on other sites
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.