Если вы можете, вызов exec_command()
предоставляет более простой механизм для вызова команды. Я видел, что коммутаторы Cisco резко отключают подключения, которые пытаются использовать exec_command()
, поэтому их нельзя использовать с устройствами Brocade.
Если вы должны пойти по маршруту invoke_shell()
, обязательно очистите все ожидающие выходные данные после подключения и после send('terminal length 0\n')
, проверяя recv_ready()
перед вызовом recv()
, чтобы избежать блокировки при чтении данных, которые, возможно, никогда не были получены. Поскольку вы контролируете интерактивную оболочку, могут потребоваться вызовы sleep()
, чтобы дать серверу достаточное время для обработки и отправки данных, или, возможно, потребуется опросить строку вывода, чтобы подтвердить, что ваша последняя команда завершена путем распознавания строки приглашения оболочки .