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 为路径, ...
随机推荐
- 【43】Activity的几种LaunchMode及使用场景
standard 模式 这是默认模式,每次激活Activity时都会创建Activity实例,并放入任务栈中.使用场景:大多数Activity. singleTop 模式 如果在任务的栈顶正好存在该A ...
- HBase Muti-Master
为了保证HBase集群的高可靠性,HBase支持多Backup Master 设置.当Active Master挂掉后,Backup Master可以自动接管整个HBase的集群. 该配置极其简单: ...
- objective-c 2.0的字面量Literals
obj-c 2.0增加了许多核心对象字面量的简单语法,向ruby学习吗? 直接上代码: #import <Foundation/Foundation.h> int main(void){ ...
- mybatis ----数据级联查询(多对一)
工程的目录结构: 有两个表,一个文章表article ,一个用户表user. create table article (id int(11) not null auto_increment, use ...
- Linux下转换文件从GBK到UTF-8
iconv -f gbk -t utf- source-file -o target-file
- winform 写App.config配置文件——IT轮子系列(八)
前言 在winform项目中,常常需要读app.config文件.如: var version = System.Configuration.ConfigurationManager.AppSetti ...
- mybatis自我总结
mybatis是一款优秀的持久层框架,它避免了JDBC代码.将SQL语句放在Java中以及结果集的处理.利于后期的维护.它将SQL语句放到XML文件中. mybatis有sqlsessionfacto ...
- 学习MQ(一) 感知
声明:我的文字里出现的MQ,如没有特殊指明,就是指的IBM的websphere MQ 以前对MQ一无所知! MQ是IBM websphere的系列产品之一,是很好的一个中间件产品.其实我对这列产品并不 ...
- 使用mpvue开发微信小程序
更多内容请查看 我的新博客 地址 : 前言 16年小程序刚出来的时候,就准备花点时间去学学.无奈现实中手上项目太多,一个接着一个,而且也没有开发小程序的需求,所以就一拖再拖. 直到上周,终于有一个小程 ...
- ffmpeg转换参数和压缩输出大小的比率 参考 最新版本FFMPEG
https://blog.cnlabs.NET/3668.html ffmpeg 转换压缩比例 FFMPEG如果是压缩为FLV文件 3个编码可选1. -c:v flv 标准FLV编码 这个好处是速度快 ...