You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用EXPECT脚本将交换机线缆状态输出保存为CSV文件?

解决Expect脚本捕获交换机线缆状态并导出为CSV的方案

我来帮你搞定这个需求!要把Expect脚本获取的交换机线缆状态转成CSV,核心是两步:捕获命令输出并解析关键数据,然后将解析后的数据写入CSV文件。下面是具体的实现思路和示例代码:

1. 调整Expect脚本,捕获并解析线缆状态输出

首先,你需要在现有脚本的基础上,添加逻辑来捕获显示线缆状态命令的输出,然后用正则表达式提取出Pair(比如PA对应Pair A)和对应的Length(LA对应长度值)。

假设你的原脚本大概是登录交换机+执行命令的结构,现在修改它加入数据解析和CSV导出逻辑:

#!/usr/bin/expect

# 配置参数
set switch_ip "192.168.1.1"
set username "admin"
set password "your_password"
set cable_cmd "show cable status" ;# 替换成你实际用的线缆状态命令
set csv_file "cable_stats.csv" ;# 最终输出的CSV文件名

# 初始化CSV文件,先写入表头
set fp [open $csv_file w]
puts $fp "\"Pair\",\"Length\""
close $fp

# 登录交换机流程
spawn telnet $switch_ip
expect "Username:"
send "$username\r"
expect "Password:"
send "$password\r"
expect "Switch>" ;# 替换成你的交换机实际提示符

# 执行线缆状态命令并捕获解析输出
send "$cable_cmd\r"
# 用正则匹配每一行有效数据,循环提取直到回到提示符
expect {
    -re {P([A-Z]): Pair (\w+), L\1: (\d+m)} {
        # 提取正则分组:\1是线对标识(A/B/C),\2是Pair名称,\3是长度值
        set pair_name $expect_out(2,string)
        set pair_length $expect_out(3,string)
        
        # 把数据追加写入CSV
        set fp [open $csv_file a]
        puts $fp "\"$pair_name\",\"$pair_length\""
        close $fp
        
        # 继续匹配下一行数据
        exp_continue
    }
    "Switch>" { ;# 匹配到提示符,说明命令执行完毕
        puts "线缆状态数据已成功导出到 $csv_file"
    }
}

# 退出登录
send "exit\r"
expect eof

2. 关键逻辑说明

  • CSV初始化:先创建CSV文件并写入表头"Pair","Length",保证输出格式符合CSV规范。
  • 正则匹配:我假设你的交换机输出行格式是PA: Pair A, LA: 100m,正则P([A-Z]): Pair (\w+), L\1: (\d+m)会精准匹配:
    • P([A-Z]):捕获线对的标识(A/B/C等)
    • Pair (\w+):捕获线对的名称(比如A)
    • L\1:确保Length的标识和Pair的标识对应(比如PA对应LA,避免匹配错乱)
    • (\d+m):捕获具体的长度值(比如100m)
  • 追加写入CSV:每匹配到一行有效数据,就打开CSV文件追加写入一行,格式为"Pair A","100m",保证数据格式正确。

3. 适配你的实际输出格式

如果你的交换机输出格式和我假设的不一样,只需要调整正则表达式即可。比如如果输出是:

Pair A (PA): Length 50m
那正则可以改成-re {Pair (\w+) \(P([A-Z])\): Length (\d+m)},然后调整分组的提取顺序就行。

4. 测试脚本

  1. 把脚本保存为cable_stats.exp
  2. 赋予执行权限:chmod +x cable_stats.exp
  3. 运行脚本:./cable_stats.exp
  4. 查看生成的cable_stats.csv,就能看到格式化后的线缆状态数据了。

内容的提问来源于stack exchange,提问作者aCUDDLYduck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:13:46