【发布时间】:2020-09-12 17:12:39
【问题描述】:
我有一个 Onion Omega2 设备作为 linux 服务器,它具有来自 Arduino 芯片的 UART 流。通过我笔记本电脑上的终端,我可以通过 SSH 连接并将来自 UART 的数据流式传输到设备中。然后我尝试使用 Paramiko 在 Python 中创建一个 SSH shell。代码如下:
import paramiko
def ssh_comm(ip, usr, passwd):
client = paramiko.SSHClient();
client.set_missing_host_key_policy(paramiko.AutoAddPolicy());
client.connect(ip, username=usr, password=passwd);
channel = client.invoke_shell();
channel.send("screen /dev/ttyS1 9600 \n");
print("/n");
points = 0;
while points < 100:
if channel.recv_ready():
print(channel.recv(1024));
points = points + 1;
channel.shutdown(2);
client.close();
return;
ssh_comm("192.xxx.x.x", "root", "password");
第一次连接良好,所有数据都流回我的笔记本电脑。然而,当我让外壳关闭然后重新打开它时,我只会不时地从 Omega2 收到几个数据包。 (虽然它仍然可以正常连接)通过python连接后,在终端上使用ssh root@192.xxx.x.x形成SSH连接时,传输也是间歇性的。
重新启动 Omega 2 解决了这个问题,因为我可以通过终端反复连接而没有问题,我相信问题一定与关闭 python 代码中的会话有关。或者没有正确配置它。浏览了 paramiko 文档并尽力正确配置它,我仍然遇到同样的问题。关于可能导致它的任何想法?
【问题讨论】: