单个ip
# $language = "Python"
# $interface = "1.0"
def main():
# 目标IP地址
target_ip = "10.140.4.23"
# 构建ping命令
ping_command = "ping {}".format(target_ip)
# 在SecureCRT中显示信息
crt.Screen.Send("正在执行ping命令: {}\r\n".format(ping_command))
try:
# 在SecureCRT的命令窗口中执行ping命令
crt.Screen.Send(ping_command + "\r")
# 读取并显示输出
# 使用ReadString方法读取到命令结束,等待 "loss" 字符串
output = crt.Screen.ReadString("loss")
# 检查输出中是否包含 "100.0%" 来判断ping是否失败
if "100.0%" in output:
crt.Screen.Send("Ping失败!\r\n")
else:
crt.Screen.Send("Ping成功!\r\n")
crt.Screen.Send(output) # 显示完整输出
except Exception as e:
# 发生异常时显示错误信息
crt.Screen.Send("发生错误:{}\r\n".format(str(e)))
main()
实验为华三的设备,对比下面的输出,可知当输出到【loss】时结束,当为【100.0%】为没有一个包能ping的通
多个ip,使用csv表(类似excel表,SecureCRT限制了python,无法直接用excel表的库)
# $language = "Python"
# $interface = "1.0"
import csv
def main():
# 替换为你的CSV文件路径
csv_file_path = "F:\\ping.csv"
try:
with open(csv_file_path, 'r') as file:
reader = csv.reader(file)
# 假设IP地址在每行的第一列(A列)
for row in reader:
target_ip = row[0]
# 构建ping命令
ping_command = "ping {}".format(target_ip)
# 在SecureCRT中显示信息
crt.Screen.Send("正在执行ping命令: {}\r\n".format(ping_command))
try:
# 在SecureCRT的命令窗口中执行ping命令
crt.Screen.Send(ping_command + "\r")
# 使用WaitForStrings方法等待 "loss" 字符串
crt.Screen.WaitForStrings(["loss"], 10)
# 读取并显示输出
output = crt.Screen.ReadString("loss")
# 清空输出缓冲区
# crt.Screen.Clear()
# 检查输出中是否包含 "100.0%" 来判断ping是否失败
if "100.0%" in output:
crt.Screen.Send("Ping失败!\r\n")
else:
crt.Screen.Send("Ping成功!\r\n")
# crt.Screen.Send(output) # 显示完整输出
except Exception as e:
# 发生异常时显示错误信息
crt.Screen.Send("发生错误:{}\r\n".format(str(e)))
except Exception as e:
# 读取CSV文件时发生错误
crt.Screen.Send("读取CSV文件时发生错误:{}\r\n".format(str(e)))
main()
使输出通和不通的结果到csv表中
# $language = "Python"
# $interface = "1.0"
import csv
def main():
# 替换为你的CSV文件路径
csv_file_path = "F:\\ping.csv"
try:
with open(csv_file_path, 'r') as file:
# 读取CSV表格,假设IP地址在A列
rows = list(csv.reader(file))
# 假设IP地址在每行的第一列(A列)
for row in rows:
target_ip = row[0]
# 构建ping命令
ping_command = "ping {}".format(target_ip)
# 在SecureCRT中显示信息
crt.Screen.Send("正在执行ping命令: {}\r\n".format(ping_command))
try:
# 在SecureCRT的命令窗口中执行ping命令
crt.Screen.Send(ping_command + "\r")
# 使用WaitForStrings方法等待 "loss" 字符串
crt.Screen.WaitForStrings(["loss"], 10)
# 读取并显示输出
output = crt.Screen.ReadString("loss")
# 检查输出中是否包含 "100.0%" 来判断ping是否失败
if "100.0%" in output:
crt.Screen.Send("Ping失败!\r\n")
row.append("Ping失败")
else:
crt.Screen.Send("Ping成功!\r\n")
row.append("Ping成功")
except Exception as e:
# 发生异常时显示错误信息
crt.Screen.Send("发生错误:{}\r\n".format(str(e)))
# 将结果写回CSV文件
with open(csv_file_path, 'w') as file:
for row in rows:
row_str = ','.join(row) + '\n'
file.write(row_str)
except Exception as e:
# 读取CSV文件时发生错误
crt.Screen.Send("读取CSV文件时发生错误:{}\r\n".format(str(e)))
main()
升级从B2开始,输入C2
# $language = "Python"
# $interface = "1.0"
import csv
def main():
# 替换为你的CSV文件路径
csv_file_path = "F:\\ping.csv"
try:
with open(csv_file_path, 'r') as file:
# 读取CSV表格
rows = list(csv.reader(file))
# 从第二行开始读取数据
for idx, row in enumerate(rows):
# 跳过第一行(标题行)
if idx == 0:
continue
target_ip = row[1] # B列的第二位(索引为1)
# 构建ping命令
ping_command = "ping {}".format(target_ip)
# 在SecureCRT中显示信息
crt.Screen.Send("正在执行ping命令: {}\r\n".format(ping_command))
try:
# 在SecureCRT的命令窗口中执行ping命令
crt.Screen.Send(ping_command + "\r")
# 使用WaitForStrings方法等待 "loss" 字符串
crt.Screen.WaitForStrings(["loss"], 10)
# 读取并显示输出
output = crt.Screen.ReadString("loss")
# 检查输出中是否包含 "100.0%" 来判断ping是否失败
if "100.0%" in output:
crt.Screen.Send("Ping失败!\r\n")
row.append("Ping失败")
else:
crt.Screen.Send("Ping成功!\r\n")
row.append("Ping成功")
except Exception as e:
# 发生异常时显示错误信息
crt.Screen.Send("发生错误:{}\r\n".format(str(e)))
# 将结果写回CSV文件
with open(csv_file_path, 'w') as file:
# 写入标题
header = rows[0]
header_str = ','.join(header) + ',"第一次ping"\n'
file.write(header_str)
# 从第二行开始写入数据
for row in rows[1:]:
row_str = ','.join(row) + '\n'
file.write(row_str)
except Exception as e:
# 读取CSV文件时发生错误
crt.Screen.Send("读取CSV文件时发生错误:{}\r\n".format(str(e)))
main()
这个代码会影响A1的中文名