擅长:python、mysql、java
<p>如果可以的话,<code>exec_command()</code>调用提供了一种更简单的机制来调用命令。我见过Cisco交换机突然断开尝试<code>exec_command()</code>的连接,因此这可能无法用于Brocade设备。</p>
<p>如果必须走<code>invoke_shell()</code>路径,请确保在连接后和<code>send('terminal length 0\n')</code>之后清除所有挂起的输出,在调用<code>recv()</code>之前检查<code>recv_ready()</code>,以避免在读取可能永远不会到达的数据时阻塞。由于您正在控制一个交互式shell,因此可能需要<code>sleep()</code>调用以允许服务器有足够的时间处理和发送数据,或者可能需要轮询输出字符串,以通过识别shell提示字符串来确认上一个命令已完成。</p>