У меня есть устройство Onion Omega2, работающее как linux сервер, который имеет поток UART от чипа Arduino. Через терминал на моем ноутбуке я могу подключиться через S SH и передавать данные с UART, поступающие в устройство. Затем я попытался создать оболочку S SH в Python с помощью Paramiko. Код, показанный ниже:
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 передача также прерывистая при формировании соединения S SH на терминале с использованием: ssh root@192.xxx.x.x
.
Перезапуск Omega 2 исправляет это, однако, поскольку я могу неоднократно подключаться через терминал без каких-либо проблем, я полагаю, проблема должна быть связана с закрытием сеанса в коде python. Или неправильно настроил. Просмотрев документы paramiko и изо всех сил стараясь настроить его правильно, я все еще получаю ту же проблему. Есть идеи относительно того, что могло быть причиной этого?