SecureCRT中ping ip的python脚本

 单个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的中文名

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值