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 为路径, ...
随机推荐
- cocos2d-x 游戏开发之有限状态机(FSM) (四)
cocos2d-x 游戏开发之有限状态机(FSM) (四) 虽然我们了解了FSM,并且可以写自己的FSM,但是有更好的工具帮我们完成这个繁琐的工作.SMC(http://smc.sourceforge ...
- TCP/IP概述
1) 链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡.它们一起处理与电缆(或其他任何传输媒介)的物理接口细节. 2) 网络层,有时也称作互联网层, ...
- 实现去哪儿来回机票选择的view
最近有个控件是实现和去哪儿和阿里旅行的app的选择日历效果,反编译没有效果的情况下我自己实现了个,大致的原理是: 上面是产品需要实现的效果,我看了下不就是一个ListView+gridView就能实现 ...
- javascript、ruby和C性能一瞥(1)
测试一下本地js.浏览器中的js以及ruby对于类似算法的性能.结果有些意外:浏览器js最快,本地其次当相差很小:ruby最慢而且不是一个数量级的: 因为写的匆忙,可能有重大问题没能看出来,请各位高人 ...
- GEFGWT的HelloWorld
发现一个好玩的东西,gef-gwt,使用它可以轻松的在web上建立gef程序,原文在这里http://gefgwt.org/getting-started/(文章虽然是英文,但是很容易懂,我是按部就班 ...
- 【转载】解决nginx负载均衡的session共享问题
https://blog.csdn.net/u012081441/article/details/71787164 之前有写过ubuntu环境下搭建nginx环境,今天来谈一下nginx sessio ...
- 【转载】tomcat+nginx+redis实现均衡负载、session共享(二)
今天我们接着说上次还没完成session共享的部分,还没看过上一篇的朋友可以先看下上次内容,http://www.cnblogs.com/zhrxidian/p/5432886.html. 1.red ...
- WSL与Windows交互实践
1. WSL是什么 2. WSL新特性 3. WSL管理配置 4. WSL交互 5. 解决方案 * 5.1 使用别名 * 5.2 多复制一份 * 5.3 重定向 * 5.4 symlink 6 ...
- Java EE的未来
http://www.infoq.com/cn/articles/enterprise-Java-opinion 作为InfoQ下一年编辑关注点审核工作的一部分,我们挑选了Java作为深入探讨的主题. ...
- Sec site list
Seclist: 英语: http://seclists.org/ http://www.securityfocus.com/ http://www.exploit-db.com/ http ...