在以上代码中加入如下需求:1、执行过程生成日志记录 2、按日志记录生成表格文件
时间: 2023-12-31 10:04:17 浏览: 26
好的,我们可以使用 Python 内置的 `logging` 模块来生成日志记录,使用 `pandas` 库来生成表格文件。修改后的代码如下:
```python
import pexpect
import ping3
import csv
import logging
import pandas as pd
# 配置日志记录
logging.basicConfig(filename="log.txt", level=logging.INFO)
# 从 CSV 文件中读取设备信息
filename = "devices.csv"
data = []
with open(filename, "r") as f:
reader = csv.reader(f)
next(reader) # 跳过标题行
for row in reader:
device_ip, username, password, enable_password = row
# 检查设备是否在线
if not ping3.ping(device_ip):
logging.warning(f"设备 {device_ip} 不在线")
continue
# 访问设备
ssh = pexpect.spawn(f"ssh {username}@{device_ip}")
ssh.expect("password:")
ssh.sendline(password)
# 进入特权模式
ssh.expect(">")
ssh.sendline("enable")
ssh.expect("Password:")
ssh.sendline(enable_password)
# 获取 CPU 使用率
ssh.expect("#")
ssh.sendline("display cpu-usage")
ssh.expect("#")
output = ssh.before.decode("utf-8").strip()
# 输出结果
logging.info(f"设备 {device_ip} 的 CPU 使用率为:\n{output}")
data.append([device_ip, output])
# 将结果保存到表格文件中
df = pd.DataFrame(data, columns=["设备IP", "CPU使用率"])
df.to_excel("result.xlsx", index=False)
```
在上面的代码中,我们首先使用 `logging.basicConfig` 方法配置日志记录,将日志记录保存到文件 `log.txt` 中。然后,我们使用 `pandas` 库创建一个空的表格 `df`,然后遍历 CSV 文件中的每一行,获取设备 IP 地址、用户名、密码和特权模式密码。对于每个设备,我们都使用 `ping3.ping` 方法检查设备是否在线。如果设备不在线,就会使用 `logging.warning` 方法记录一条警告信息,并使用 `continue` 关键字跳过当前循环,继续处理下一个设备。如果设备在线,就会继续执行后面的代码,访问设备并获取 CPU 使用率。然后,使用 `logging.info` 方法记录一条信息,表示获取成功。最后,将设备 IP 地址和 CPU 使用率添加到表格 `df` 中,然后使用 `df.to_excel` 方法将表格保存到文件 `result.xlsx` 中。
需要注意的是,你需要在运行程序之前安装 `pandas` 库,可以使用以下命令进行安装:
```sh
pip3 install pandas
```