Python 3.8 paramiko ssh,执行命令时遇到问题

时间:2020-08-19 12:35:25

标签: python python-3.x ssh paramiko

我对使用Python编码(以及通常的编码)还很陌生,并且在使用paramiko在SSH会话中获取要执行的命令时遇到了问题。我正在使用的代码如下:

    from paramiko import SSHClient, AutoAddPolicy
    import time

    client = SSHClient()
    client.load_host_keys('C:\ssh\id_rsa')
    time.sleep(5)
    client.set_missing_host_key_policy(AutoAddPolicy())
    time.sleep(5)
    client.connect('192.168.2.138', username='pi-star', password='******')
    time.sleep(5)
    with open('C:\WeatherPro\Final_Page.txt') as fnlpage:
        datapage = fnlpage.read()
        stdin, stdout, stderr = client.exec_command(datapage)
    time.sleep(5)
    client.close()

这是从Windows 10 Pro计算机到运行Pi-Star(基于raspbian \ debian的操作系统-GUI)的带有MMDVM帽子(附加火腿无线电收发器设备)的Raspberry Pi进行SSH。我使用它每10分钟将POCSAG页面发送给寻呼机。 Final_Page.txt是我使用先前的代码创建的文件,其中包含我要执行的linux终端命令。创建文本文件的原因是命令更新大约每分钟执行的信息的一部分。这是写在文本文件中的确切文本,也是linux命令需要构造的确切方式(包括引号):

sudo RemoteCommand 7642页面1246587“ T:91.2,H:42.5,BP:29.39,PA:1551,CF:1.0103,DA:2363,WG:64.93,ET:8.904”

双引号内的信息是每分钟变化的信息,是在寻呼机屏幕上显示的实际页面(这是来自赛车气象站的信息)。如果我取消了“ with open”和“ .read()”行,而改用此行代码,它将执行命令并正确发送页面:

    stdin, stdout, stderr = client.exec_command('sudo RemoteCommand 7642 page 1246587 "T: 91.2,  H: 42.5,  BP: 29.39,  PA: 1551,  CF: 1.0103,  DA: 2363,  WG: 64.93,  ET: 8.904"')

如果我尝试像原始代码中那样使用文本文件的“ with open”和“ .read()”来执行命令,则不会发生任何事情。关于如何获取经常更新的信息并使其正确执行的其他想法?

非常感谢您的帮助, 瑞安·W。

P.S。-睡眠时间只是给每个进程执行时间,因为Raspberry Pi的运行速度不是很快,并且在两者之间没有中断时会遇到麻烦。

0 个答案:

没有答案