Я пишу приложение, которое взаимодействует с многочисленными системами, в частности, с помощью переключателей,Запуск последовательных команд с модулем питона тканью
я пытаюсь реализовать функцию, которая позволит мне извлечь журналы из определенного переключателя, используя ткань (python)
В реальной сессии коммутатору мне нужно сначала запустить «включить» (и нажать клавишу ввода), а затем запустить команду «debug generate dump».
using fabric.operations.run() Я могу только выпустить одну команду за раз, с использованием fabric.operations.open_shell() не является опцией, так как мне нужно разобрать вывод, а также закрыть соединение после его завершения ,
Может кто-нибудь помочь в этом? СПАСИБО !!
Вот пример кода:
def getSwitchLog(self, host, port, username, password):
env.host_string = "%s:%s" % (host, port)
env.user = username
env.password = password
command = 'enable \r debug generate dump'
run(command, shell=cli, pty=True, combine_stderr=True, timeout=120)
оболочки = кли - поскольку коммутатор не работает Баш и 'CLI' является соответствующее значение в этом случае
\ r должен был послать ключ «ввести», по существу, отправить 1. включить 2. ввести 3. отладить сгенерированную дампу
этот метод работает, если я переключаю запуск с помощью open_shell , но это, кажется, бегут игнорируемых \ г
мне удалось добиться того, что мне нужно с помощью:
command = 'sshpass -p admin ssh [email protected] cli \"enable\" \"show version\"'
fabric.api.local(command, capture=True, shell=None)
однако этот метод не надежен, как fabric.api.run(), а также требует узел работает, чтобы иметь sshpass установлен
Это пример выхода из CLI коммутатора в качестве команд, введенных в интерактивном режиме (клавиатуры) без ткани
[standalone: master] > enable
[standalone: master] # debug generate dump
[standalone: master] # debug generate dump Generated dump sysdump-SX6036-1-20130630-104051.tgz
[standalone: master] #
спасибо.
Вы можете показать нам, что вы пытались? – Greg
Привет, greg, спасибо за ваш комментарий, я обновил описание, и теперь он содержит пример кода. – eladHayun
, так что вам нужно ввести что-то в bash на удаленном ящике после запуска какого-то cmd? – Greg