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 为路径, ...
随机推荐
- Leetcode_203_Remove Linked List Elements
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/45868027 Remove all elements fr ...
- PS 色调——老照片效果
这就是通过调色使照片显得发黄. R_new=0.393*R+0.769*G+0.189*B; G_new=0.349*R+0.686*G+0.168*B; B_new=0.272*R+0.534*G+ ...
- 面试之路(8)-BAT面试题之数组和链表的区别
两种数据结构都是线性表,在排序和查找等算法中都有广泛的应用 各自的特点: 数组: 数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素.但是如果要在数组中增加一个 ...
- navicat for mysql远程连接ubuntu服务器的mysql数据库
经常玩服务器上的mysql数据库,但是基于linux操作Mysql多有不便,于是就想着使用GUI工具来远程操作mysql数据库.已经不是三次使用navicat-for-mysql了,但是每次连接远程服 ...
- css选择器应用
.mynav li:not(:last-child) { margin-right: 20px; }
- CRM客户关系管理系统(十一)
第十一章.学员报名流程开发 11.1.面包屑的制作 Boorstrap路径导航条 (1)table_obj_list.html页面面包屑 def table_obj_list 返回数据改成locals ...
- 解决:MySQL 报错:1045 - Access denied for user 'root'@'localhost'(using password YES)
一.前言 今年疯狂迷上了开源,只要看到好的开源项目,就会不顾一切一股脑扎进去研究,五一期间发现一个很好的关于众筹的开源项目,但不巧,这个项目竟然是 PHP 写的,没学过 PHP,自然对这个开源项目毫无 ...
- AngularJS学习笔记之directive——scope选项与绑定策略
开门见山地说,scope:{}使指令与外界隔离开来,使其模板(template)处于non-inheriting(无继承)的状态,当然除非你在其中使用了transclude嵌入,这点之后的笔记会再详细 ...
- DIV与SPAN之间有什么区别
DIV与SPAN之间有什么区别 DIV 和 SPAN 元素最大的特点是默认都没有对元素内的对象进行任何格式化渲染.主要用于应用样式表(共同点). 两者最明显的区别在于DIV是块元素,而SPAN是行内元 ...
- 初识Java——一维数组的创建及使用
数组作为对象是允许使用new关键字进行内存分配的,在使用数组前,必须首先定义数组的变量所属的类型.一维数组的创建有两种方法: 1,先声明,再用new运算符进行内存分配 数组元素类型+数组名字[] 数组 ...