无法通过Paramiko SSH发送AT命令

问题描述

我正在研究GPS位置检索项目,我必须在路由器上的SSH中进行连接,然后启动命令以检索经度和纬度。 我最近收到了新的路由器,当我们连接到该路由器时,在连接时会收到一个“ OK”信号,以确保其正常运行,然后运行所需的命令,并始终按照下面的示例获取数据。通过“确定”消息,表明该命令运行良好:

AT*GNSsstATUS?
Location Fix=1
Number of satellites = 14
Latitude=+49.17081
Longitude=-123.06970
Date=2016/02/29
Time= 18:55:28
TTFF=9449 milliSeconds

OK

当我在PUTTY的帮助下以SSH连接时,它可以工作,但是当我使用通过我的Python脚本和Paramiko库发送与上述相同命令的代码(AT * GNSsstATUS?)时,结果就是“ OK”表示连接刚刚处于活动状态。就像脚本打开的命令行没有采用接下来要输入的“ ENTER”一样。 为了测试这一点,在使用PUTTY的情况下,我尝试放置一个返回“ ERROR”的命令,但是即使在这种情况下,Python脚本也会返回“ OK”。 为了解决这个问题,我尝试通过添加

stdin,stdout,stderr = client.exec_command('AT*GNSsstATUS? \r\n')

stdin,stderr = client.exec_command('AT*GNSsstATUS? <CR>')

但是在任何情况下都不会改变结果。 我的数据列表仅包含一个标记为“ OK”的字符串。 对于路由器上的连接部分,一切正常。

有人有什么想法吗?

非常感谢! 抱歉,如果有拼写错误

解决方法

感谢Martin Prikryl

因此,我查看了您发送给我的链接,它起作用了: Executing command using Paramiko exec_channel on device is not working.

因此,我将代码更改为使用外壳并通过外壳发送命令。 这是我的代码

shell = client.invoke_shell()  
shell.send('AT*GNSSSTATUS? \r')

非常感谢,祝您有愉快的一天