本文中的脚本适用范围:

1)检测某些IP地址是否被占用;

2)检测网络中某些设备是否存活;

3)在分配新的ip地址之前,批量检测环境中是否存在冲突的机器

以上检测基于ICMP Ping报文,要求所有的设备允许Ping,设备开通禁止ICMP策略,防火墙禁止ICMP报文等情况不在本文的考虑范围之内。

不多说,上代码:

(一)windows 批处理脚本

 1 ::autor lb
 2 ::date 2018 05
 3 @echo off
 4 ::屏显当前的测试时间并输出到测试结果(详细日志和结果日志)
 5 echo %date% %time%
 6
 7 ::每次执行脚本时都要先删除日志
 8 del %cd%\IpCheckerDetailLog.txt
 9 del %cd%\IpCheckerResLog.txt
10 echo %date% %time% >>IpCheckerDetailLog.txt
11 echo %date% %time%  >>IpCheckerResLog.txt
12 echo IpCheckerResult >>IpCheckerResLog.txt
13
14 ::for循环执行ping命令,每次循环都会从制定的文件中读取ip地址进行ping操作,ping count=1,timeout=1ms,每次Ping结果都会重定向到详细日志文件
15 set /a avaNum=0
16 set /a unReaccNum=0
17 for /f "delims=" %%i in (ip.txt) do (
18 Ping.exe -n 1 -w 1 %%i >> IpCheckerDetailLog.txt
19 if not errorlevel 1 ( echo %%i            is avaliable
20 echo %%i            is avaliable >> IpCheckerResLog.txt
21 set /a avaNum+=1 ) else ( echo %%i            is unreachable[Warning]
22 set /a unReaccNum+=1
23 echo %%i            is unreachable[Warning]  >> IpCheckerResLog.txt )
24 )
25 set /a Total=%avaNum% + %unReaccNum%
26 echo Total Count:%Total%
27 echo %avaNum% avaliable;    %unReaccNum% unreachable!
28 pause

测试如下:

 创建ip.txt,

执行脚本

(二) Windows Python脚本

 1 #!windows 64 python3.6.5
 2 # coding=utf-8
 3
 4 # Ip检测脚本
 5 # author lb
 6 # time 2018 05
 7 import os
 8 import datetime
 9
10 SrcFileName = "ip.txt";
11 CurT = datetime.datetime.now().strftime("%m%d_%H%M%S");
12 CurTInLog = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S\n");
13 LogFileName = "%s_LogDetail.txt" % CurT;
14 ResFileName = "%s_Res.txt" % CurT;
15 IpOkNum=0;
16 IpFailNum=0;
17
18 # 创建详细日志文件
19 LogFp = open(LogFileName, 'w+');
20 LogFp.write("PingTestDetailLog\n")
21 LogFp.write(CurTInLog);
22
23 # 创建结果日志文件
24 ResFp = open(ResFileName, 'w+');
25 ResFp.write("PingTestResult\n");
26 ResFp.write(CurTInLog);
27
28 # 打开ip文件
29 SrcFp = open(SrcFileName, "r");
30 for ip in SrcFp:
31     #print(ip)
32     cmd = "ping -n 1 -w 1 %s" % ip;
33     ret = os.popen(cmd);
34     strRet="%s\n" % ret.read();
35     LogFp.write( strRet);
36     print(strRet)
37     #找到了TTL关键字,证明ping通
38     if  strRet.find("TTL") != -1 or strRet.find("丢失 = 0")!=-1:
39         strok="%s Is Reachable \n"% ip;
40         print(strok);
41         ResFp.write(strok);
42         IpOkNum+=1;
43     else:
44         strfail="%s Is Uneachable[Warning]\n"% ip;
45         print(strfail);
46         ResFp.write(strfail);
47         IpFailNum+=1;
48 Res="Total Ip Num i:%d\nReachable  Count:%d,Unreachable Count:%d " % ((IpFailNum+IpOkNum),IpOkNum,IpFailNum);
49 print(Res)
50
51 LogFp.close();
52 ResFp.close();
53 SrcFp.close();

运行结果:

(三)linux shell

 1 #!bin/sh
 2 #author lb
 3 #date 2018 05
 4
 5
 6 PingFun()
 7 {
 8 #Creat Log File
 9 echo DetailLog>>IpCheckerDetailLog.txt
10 echo DetailResult>>IpCheckerResLog.txt
11 CurT=$(date "+%Y:%m:%D %H:%M:%S")
12 IpAvaCount=0;
13 IpUnReachCount=0;
14
15 #Init Log File
16 echo $CurT>>IpCheckerDetailLog.txt
17 echo $CurT>>pCheckerResLog.txt
18
19 echo Starting ping...
20 #Read Ip
21 while read ip
22 do
23     if ping -c 1 -w 1 $ip >/dev/null ;then
24         echo $ip     is avaliable
25         echo $ip     is avaliable >>IpCheckerResLog.txt
26         IpAvaCount=$(($IpAvaCount+1))
27     else echo $ip     is unreachable
28          echo $ip     is unreachable >>IpCheckerResLog.txt
29         IpUnReachCount=$((1+$IpUnReachCount))
30     fi
31 done <ip.txt
32
33 #statistics
34 echo Statis:
35 echo Total Count : $(($IpUnReachCount+$IpAvaCount))
36 echo Avaliable :$IpAvaCount,Unreachable :$IpUnReachCount
37 }
38 PingFun

执行结果:

转载于:https://www.cnblogs.com/LiuBingBlogs/p/9054035.html

linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)...相关推荐

  1. windows 下终止指定端口的进程

    windows 下终止指定端口的进程 一 . 查看端口内占用情况 netstat -aon|findstr "9050"协议 本地地址 外部地址 状态 PIDTCP 127.0.0 ...

  2. windows 打包 python 然后linux执行_使用pyinstaller打包python源代码,成为linux/windows下可执行文件...

    pyinstaller,打包python源代码,成为linux/windows下可执行文件,多平台 下载:http://www.pyinstaller.org/static/ http://www.p ...

  3. ARP***绑定 linux/windows 下解决方案

    请教: 使用IPTABLES作为网关,实现客户端的IP地址跟MAC地址绑定? 这个你在iptables里的nat里对每个地址作SNAT时指上就OK了, 也可在你的机子上arp -s 网关IP 正确的网 ...

  4. 30天精通Python(数据分析篇)——第1天:环境搭建之 Linux/Windows 下安装 Anaconda 和 Windows 下安装 DataSpell

    目录 一.Linux 下安装 Anaconda 二.Jupyter Notebook 配置 三.Windows 下安装 DataSpell 3.1 DataSpell 介绍 3.2 DataSpell ...

  5. linux windows下oen***客户端的用法

    windows下使用open***客户端 1.下载open***-2.2.0-install.zip客户端安装包 2.解压到你要安装的目录,如D盘的open***目录下 3.解压后会有open***- ...

  6. Linux环境下Arm端源码编译OpenCV+ncnn目标检测模型实例运行调试完整实践记录

    今天需要在嵌入式设备端运行C的程序,里面有依赖OpenCV的部分,这就需要编译安装好OpenCV才行,这个对于我来说还是比较陌生的,我很少用C,所以这里面也没少折腾,一路上遇上了很多的报错,这里我将完 ...

  7. c++ windows下读取指定目录的所有文件名字

    总结: windows下的两个关键函数 1.     _findfirst()     查找第一个符合规则的文件 2.     _findnext()    查找下一个符合规则的文件 linux下 读 ...

  8. Linux/Windows下 C/C++开发的差异

    1. 平台差异简介 Windows 和Unix是当前两大主流操作系统平台,基于C/C++的开发人员经常会面临这两个平台之间的移植的问题.Unix作为一个开发式的系统,其下有出现了很 多个分支,包括Su ...

  9. linux/windows下基于opc ua协议使用open62541开发客户端-上

    最近公司想把windows下软件迁移到linux下,在与plc通讯方面西门子只提供windows下的库,linux下没有对应库,幸好发现有open62541这个协议外接库,对应的plc最低型号为s12 ...

最新文章

  1. ubuntu 源码安装nginx
  2. Python List reverse()方法
  3. 使用with 创建视图
  4. 回头看看NSURLConnection
  5. MySQL useSSS_Mysql 常用操作记录
  6. 滚动截屏软件_华为指关节截屏不如三指截屏好用?一步到位,实践出真知
  7. 钉钉自带浏览器版本过低,导致Object.assign不兼容...
  8. Python并发编程系列之多进程(multiprocessing)
  9. B00014 C++实现的AC自动机
  10. 【VS】项目属性配置(中)
  11. 查看oracle中的中文所占字节数
  12. python 图表_python可视化入图表|贵州茅台净利润分析
  13. linux 中文交互最好,与linux相交互 - wsdsb的个人空间 - OSCHINA - 中文开源技术交流社区...
  14. c语言串逐位和 思路,蓝桥杯c语言练习题答案.doc
  15. switchhosts 文件下载
  16. 从BIM行业看中国工业软件的困境及出路
  17. matlab中的插值函数
  18. 图片占内存容量计算公式
  19. 如何轻松搞定内网摄像头远程运维?EasyNTS上云网关简单三步实现设备公网远程控制、远程配置
  20. Windows 10 下如何显示文件的后缀名

热门文章

  1. 宁夏教育网计算机二级成绩查询,宁夏计算机等级考试成绩查询入口
  2. 考研数学 张宇 —— 空间几何笔记(第十七讲手写记录)
  3. Java---根据姓查找学生的信息
  4. 中美企业之困:姓资姓社为何如此重要
  5. 如何将两张图片上下拼接?
  6. Prism框架初识-区域介绍
  7. 【Unity3D实战】零基础一步一步教你制作跑酷类游戏
  8. 【Python天气预报系统】又要降温,这个冬天你准备好棉衣秋裤了吗?看了不后悔系列之Python打造智能天气预报系统,爆赞。
  9. es自定义拼音分词器处理中文拼音排序问题
  10. 个人小程序接入支付解决方案