linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)
本文中的脚本适用范围:
1)检测某些IP地址是否被占用;
2)检测网络中某些设备是否存活;
3)在分配新的ip地址之前,批量检测环境中是否存在冲突的机器
以上检测基于ICMP Ping报文,要求所有的设备允许Ping,设备开通禁止ICMP策略,防火墙禁止ICMP报文等情况不在本文的考虑范围之内。
不多说,上代码:
(一)windows 批处理脚本
::autor lb
::date 2018 05
@echo off
::屏显当前的测试时间并输出到测试结果(详细日志和结果日志)
echo %date% %time% ::每次执行脚本时都要先删除日志
del %cd%\IpCheckerDetailLog.txt
del %cd%\IpCheckerResLog.txt
echo %date% %time% >>IpCheckerDetailLog.txt
echo %date% %time% >>IpCheckerResLog.txt
echo IpCheckerResult >>IpCheckerResLog.txt ::for循环执行ping命令,每次循环都会从制定的文件中读取ip地址进行ping操作,ping count=1,timeout=1ms,每次Ping结果都会重定向到详细日志文件
set /a avaNum=0
set /a unReaccNum=0
for /f "delims=" %%i in (ip.txt) do (
Ping.exe -n 1 -w 1 %%i >> IpCheckerDetailLog.txt
if not errorlevel 1 ( echo %%i is avaliable
echo %%i is avaliable >> IpCheckerResLog.txt
set /a avaNum+=1 ) else ( echo %%i is unreachable[Warning]
set /a unReaccNum+=1
echo %%i is unreachable[Warning] >> IpCheckerResLog.txt )
)
set /a Total=%avaNum% + %unReaccNum%
echo Total Count:%Total%
echo %avaNum% avaliable; %unReaccNum% unreachable!
pause
测试如下:
创建ip.txt,

执行脚本

(二) Windows Python脚本
#!windows 64 python3.6.5
# coding=utf-8 # Ip检测脚本
# author lb
# time 2018 05
import os
import datetime SrcFileName = "ip.txt";
CurT = datetime.datetime.now().strftime("%m%d_%H%M%S");
CurTInLog = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S\n");
LogFileName = "%s_LogDetail.txt" % CurT;
ResFileName = "%s_Res.txt" % CurT;
IpOkNum=0;
IpFailNum=0; # 创建详细日志文件
LogFp = open(LogFileName, 'w+');
LogFp.write("PingTestDetailLog\n")
LogFp.write(CurTInLog); # 创建结果日志文件
ResFp = open(ResFileName, 'w+');
ResFp.write("PingTestResult\n");
ResFp.write(CurTInLog); # 打开ip文件
SrcFp = open(SrcFileName, "r");
for ip in SrcFp:
#print(ip)
cmd = "ping -n 1 -w 1 %s" % ip;
ret = os.popen(cmd);
strRet="%s\n" % ret.read();
LogFp.write( strRet);
print(strRet)
#找到了TTL关键字,证明ping通
if strRet.find("TTL") != -1 or strRet.find("丢失 = 0")!=-1:
strok="%s Is Reachable \n"% ip;
print(strok);
ResFp.write(strok);
IpOkNum+=1;
else:
strfail="%s Is Uneachable[Warning]\n"% ip;
print(strfail);
ResFp.write(strfail);
IpFailNum+=1;
Res="Total Ip Num i:%d\nReachable Count:%d,Unreachable Count:%d " % ((IpFailNum+IpOkNum),IpOkNum,IpFailNum);
print(Res) LogFp.close();
ResFp.close();
SrcFp.close();
运行结果:

(三)linux shell
#!bin/sh
#author lb
#date 2018 05 PingFun()
{
#Creat Log File
echo DetailLog>>IpCheckerDetailLog.txt
echo DetailResult>>IpCheckerResLog.txt
CurT=$(date "+%Y:%m:%D %H:%M:%S")
IpAvaCount=0;
IpUnReachCount=0; #Init Log File
echo $CurT>>IpCheckerDetailLog.txt
echo $CurT>>pCheckerResLog.txt echo Starting ping...
#Read Ip
while read ip
do
if ping -c 1 -w 1 $ip >/dev/null ;then
echo $ip is avaliable
echo $ip is avaliable >>IpCheckerResLog.txt
IpAvaCount=$(($IpAvaCount+1))
else echo $ip is unreachable
echo $ip is unreachable >>IpCheckerResLog.txt
IpUnReachCount=$((1+$IpUnReachCount))
fi
done <ip.txt #statistics
echo Statis:
echo Total Count : $(($IpUnReachCount+$IpAvaCount))
echo Avaliable :$IpAvaCount,Unreachable :$IpUnReachCount
}
PingFun
执行结果:

linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)的更多相关文章
- Ruby入门--Linux/Windows下的安装、代码开发及Rails实战
Ruby入门--Linux/Windows下的安装.代码开发及Rails实战 http://www.linuxidc.com/Linux/2014-04/100242.htm Ubuntu 13.04 ...
- linux/windows下启用和停止VMware后台服务的脚本
linux/windows下启用和停止VMware后台服务的脚本 linux/windows下启用和停止VMware后台服务的脚本 linux平台 windows平台 本文由乌合之众 lym瞎编,欢迎 ...
- Go交叉编译(Go语言Mac/Linux/Windows下交叉编译)
Go交叉编译(Go语言Mac/Linux/Windows下交叉编译) 2019/11/21 Chenxin 在很多时候,由于开发的方便,会有这样的场景出现,使用Mac开发或使用Windows开发,需要 ...
- linux环境下,使用Navicat连接mysql时,提示本地IP无法连接虚拟环境下的mysql解决方案
在Linux环境下,使用Navicat连接mysql时,提示本地IP无法连接虚拟环境下的mysql,提示如下: 而导致连接错误的原因是MYSQL没有开启远程登录权限. 解决方案: 在mysql命令中执 ...
- 在 Linux/windows下 命令行中使用和执行 PHP 代码[交互式php]
[注释]在ubuntu下,升级php到7.1版本,虽然提示的是Interactive mode enabled, 但实际上可以直接书写命令,和interactive shell效果一样. 一:wind ...
- c++ 网络编程(四) LINUX/windows下 socket 基于I/O复用的服务器端代码 解决多进程服务端创建进程资源浪费问题
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9613861.html 好了,继上一篇说到多进程服务端也是有缺点的,每创建一个进程就代表大量的运 ...
- [Linux] Windows 下通过SecureCRT 访问 Linux
不愿意装双系统的,可以借助虚拟机(Vmware, Virtual PC等) 安装linux 进行使用. 至于如何使用虚拟机安装Linux 这部分,很简单: 下载好需要安装的Linux ISO 镜像文件 ...
- windows下以指定用户访问SMB服务器进行读写
需求:最近要开发某系统前端界面,但是该系统是部署在linux服务器上,前端是用php开发,实时调试运行需要linux下系统环境支持, 每次修改都需要手动传到服务器上,尤其是debug阶段,每修改一点就 ...
- [转]Linux/Windows下脚本对拍程序
[新]简单写法 (转载自:https://blog.csdn.net/ylsoi/article/details/79824655) 要求:文件输入输出,且输入输出文件需要对应 Linux: #inc ...
- java File linux windows 下 绝对路径 相对路径问题
前言 当前项目目录 windows 为 E:\project\testpro\ linux 为 /project/testpro/ Windows环境下获取绝对路径情况 使用 a/b/c 为路径, ...
随机推荐
- OPEN A PO ORDER OR SO ORDER
OPEN PO ORDER fnd_function.Execute(Function_Name => 'PO_POXPOEPO', Open_Flag => 'Y', Session_F ...
- android 防止反编译的若干方法
第一种方式:混淆策略 混淆策略是每个应用必须增加的一种防护策略,同时他不仅是为了防护,也是为了减小应用安装包的大小,所以他是每个应用发版之前必须要添加的一项功能,现在混淆策略一般有两种: 对代码的混淆 ...
- iOS9 系统分享调用(UIActivityViewController)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/49615109 ...
- leetcode(58)-Range Sum Query - Immutable
题目: Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclu ...
- 恶补web之二:css知识(2)
css字体属性定义文本的字体系列,大小,加粗,风格和变形等. css中包含两种字体系列:通用字体系列和特定字体系列. font-family属性定义文本的字体系列: body {font-family ...
- ruby直接字符串压缩与解压缩
ruby2.1.3的核心类中包含了Zlib库,其中的Zlib模块包含了对字符串压缩和解压的方法: irb(main):180:0> Zlib.class => Module irb(mai ...
- 容器(list集合)
--为什么使用集合而不使用数组?why ·集合和数组相似点:都可以存储多个对象,对外作为一个整体存在: ··数组的缺点:1.长度必须在初始化时指定,且固定不变: 2.数组采用连续存储空间,删除和添加元 ...
- 使用oracle sqldr命令导入文件后出现中文乱码问题
1:导入命令 sqlldr userid=$DB_USER/$DB_PASS@@DB_SERVICE control=text.ctl errors=10000000 说明:username/pas ...
- 每天几分钟跟小猫学前端之node系列:用node实现最简单的爬虫
先来段求分小视频: https://www.iesdouyin.com/share/video/6550631947750608142/?region=CN&mid=6550632036246 ...
- Web服务cxf框架发布2
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本人声明.否则将追究法律责任. 作者:永恒の_☆ 地址:http://blog.csdn.net/chenghui0317/ ...