标题:如何实时读取变化的回显
只看楼主
YLin2512
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-4-4
结帖率:0
已结贴  问题点数:20 回复次数:3 
如何实时读取变化的回显
求大佬帮忙,用python的netmiko模块登陆到交换机后,使用命令使交换机FTP去下载文件时,有个百分比的进度条如何实时读取出来,如下图
<SW1>ftp 192.168.56.1
Trying 192.168.56.1 ...
Press CTRL+K to abort
Connected to 192.168.56.1.
User(192.168.56.1:(none)):yl
331 Password required for yl
Enter password:
230 Logged on
[ftp]get GoodSync119.rar
200 Port command successful
150 Opening data channel for file download from server of "/GoodSync119.rar"
 67%
实时读取这个百分数并实时显示,能看到下载进度
搜索更多相关主题的帖子: 回显 ftp 读取 实时 变化 
2023-04-04 18:24
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:20 
在使用netmiko模块登陆到交换机后,可以使用send_command_timing方法发送FTP下载命令,并通过循环读取输出结果,获取FTP下载进度信息。具体实现代码如下:
程序代码:
from netmiko import ConnectHandler
import re
# 定义交换机登录信息
device_info = {
    'device_type': 'cisco_ios',
    'ip': '192.168.56.101',
    'username': 'admin',
    'password': 'cisco',
}
# 登录交换机
with ConnectHandler(**device_info) as ssh:
    # 发送FTP下载命令
    ssh.send_command_timing('ftp 192.168.56.1')
    ssh.send_command_timing('yl')
    ssh.send_command_timing('cisco')
    ssh.send_command_timing('get GoodSync119.rar')
    # 循环读取输出结果,获取FTP下载进度信息
    while True:
        output = ssh.recv_timing_output()
        if re.search(r'\d+%', output):
            print(re.search(r'\d+%', output).group())
        if 'ftp>' in output:
            break

在上面的代码中,首先使用ConnectHandler方法登录到交换机,然后使用send_command_timing方法发送FTP下载命令。接着,使用recv_timing_output方法循环读取输出结果,如果输出结果中包含百分数信息,则使用正则表达式匹配并打印出来。最后,如果输出结果中包含ftp>,则跳出循环,结束程序。这样就可以实时读取FTP下载进度信息了。

会当凌绝顶,一览众山小.
2023-04-04 18:39
YLin2512
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-4-4
得分:0 
回复 2楼 东海ECS
你好,华为设备没法使用recv_timing_output(),会报错:
Traceback (most recent call last):
  File "E:\python项目\1\test2.py", line 42, in <module>
    output = ssh.recv_timing_output()
AttributeError: 'HuaweiSSH' object has no attribute 'recv_timing_output'
2023-04-04 19:29
YLin2512
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-4-4
得分:0 
回复 2楼 东海ECS
代码如下,会报错:
程序代码:
from netmiko import ConnectHandler
import re

# 定义交换机登录信息
device_info = {
    'device_type': 'huawei',
    'ip': '192.168.56.11',
    'username': 'huawei',
    'password': 'Huawei@123',
}
# 登录交换机
with ConnectHandler(**device_info) as ssh:
    # 发送FTP下载命令
    ssh.send_command_timing('ftp 192.168.56.1')
    ssh.send_command_timing('yl')
    ssh.send_command_timing('123')
    ssh.send_command_timing('get GoodSync119.rar')
    # 循环读取输出结果,获取FTP下载进度信息
    while True:
        output = ssh.recv_timing_output()
        if re.search(r'\d+%', output):
            print(re.search(r'\d+%', output).group())
        if 'ftp>' in output:
            break
2023-04-04 19:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511788-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.065887 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved