批处理实现的网络巡检脚本(PING与端口扫描)_DOS/BAT

check.bat 内容(脚本内容可能会应为排版问题不能直接复制粘帖运行,可自行修改):

复制代码 代码如下:

@echo off
rem checklist.csv字段为: IP,名称,描述,TCP应用端口,UDP应用端口
rem checklist.csv中请使用,@,替换,, 并不要使用()进行内容描述
set e_file=error.log
set e_count=0
for /f "skip=1 tokens=1,2,3,4,5* delims=," %%i in (checklist.csv) do call :docheck %%i @%%j @%%k @%%l @%%m
call :report
goto :eof
:docheck
set ip=%1
set name=%2
set name=%name:@=%
set comment=%3
set comment=%comment:@=%
set tcp=%4
set tcp=%tcp:@=%
set udp=%5
set udp=%udp:@=%
ping %ip% -n 3 -w 300 >nul 2>&1
if NOT %ERRORLEVEL%==0 (echo %time% %ip%[%name%,%comment%] ping error >>%e_file% & set /a e_count=%e_count%+1) else call :portcheck
call :report
goto :eof
:portcheck
if not -%tcp%==- for /f "tokens=1,2,3,4,5,6,7,8,9,10* delims=-" %%i in ("%tcp%") do call :tcpcheck %%i %%j %%k %%l %%m %%n %%o %%p %%q
if not -%udp%==- for /f "tokens=1,2,3,4,5,6,7,8,9,10* delims=-" %%i in ("%udp%") do call :udpcheck %%i %%j %%k %%l %%m %%n %%o %%p %%q
goto :eof
:tcpcheck
if not -%1==- call :tcpquery %1
if not -%2==- call :tcpquery %2
if not -%3==- call :tcpquery %3
if not -%4==- call :tcpquery %4
if not -%5==- call :tcpquery %5
if not -%6==- call :tcpquery %6
if not -%7==- call :tcpquery %7
if not -%8==- call :tcpquery %8
if not -%9==- call :tcpquery %9
goto :eof
:udpcheck
if not -%1==- call :udpquery %1
if not -%2==- call :udpquery %2
if not -%3==- call :udpquery %3
if not -%4==- call :udpquery %4
if not -%5==- call :udpquery %5
if not -%6==- call :udpquery %6
if not -%7==- call :udpquery %7
if not -%8==- call :udpquery %8
if not -%9==- call :udpquery %9
goto :eof
:tcpquery
portqry -n %ip% -e %1 -p tcp || (echo %time% %ip%[%name%,%comment%] tcp port %1 query error >>%e_file% & set /a e_count=%e_count%+1)
goto :eof
:udpquery
portqry -n %ip% -e %1 -p udp || (echo %time% %ip%[%name%,%comment%] udp port %1 query error >>%e_file% & set /a e_count=%e_count%+1)
goto :eof
:report
echo %e_count%
rem do whatever you want. such as send error.log by mail
goto :eof

checklist.csv样例:
IP,名称,描述,TCP应用端口,UDP应用端口 '两个逗号之间要加入@,描述不能加入括号(),请用[]替代
192.168.0.1,@,@,@,
192.168.0.3,@,@,@,
192.168.0.9,FTPSERVER,FTP服务器,135-445-21,
192.168.0.10,TESTSERVER,TESTSERVER,135-445-21,53

时间: 2024-10-27 21:51:33

批处理实现的网络巡检脚本(PING与端口扫描)_DOS/BAT的相关文章

批处理查看同一子网络下的所有IP在线情况_DOS/BAT

本文的批处理可以让您知道自己所在局域网的同一网段下都有哪些IP被使用了.不得不承认,我在创造这个批处理的时候想法很奇怪,甚至有些愚蠢. :::::::查看所有子网IP.bat::::::: @echo off title 查看所有子网IP set /a Online=0 set /a Offline=0 set /a Total=256 set ExportFile=子网IP在线统计.txt :: 初始化在线IP与不在线IP的个数为零,共扫描256个IP,结果输出的文件名 set StartTi

再谈DOS批处理下格式化日期字符串的多种方法(详解)_DOS/BAT

在Linux下,简单的一句话:date '+%Y%m%d-%H%M%S'就可以得到你要的输出:20120331-064219 可是在windows下,要想得到这个,还是需要费点功夫的. 1. 直接用字符串格式化输出 比如,如果你的机器上时间的输出是这样子的: c:\>echo %date%-%time% 2012-03-31 星期六- 6:44:02.50 那么,要想得到输出20120331- 64402,可以这样截取字符串: c:\>echo %date:~0,4%%date:~5,2%%d

Windows下bat批处理脚本使用telnet批量检测远程端口小记_DOS/BAT

多年没写过批处理了,来新公司的第一个case却是需要写一个bat脚本,批量更新采集agent的配置文件,其中就涉及到远程IP的端口检测. 本以为会和Linux一样可以简单判断: 复制代码 代码如下: echo q|telnet -e 'q' $ip $port && echo "$ip:port 通"||echo "$ip:port 不通" 结果发现Windows下面telnet退出并没有执行结果的返回值: 一.借助工具 于是我优先开启懒人法则,找其

不错的批处理脚本实例代码 第二部分_DOS/BAT

echo     ----------------------------3.命令禁止专区----------------------------------->nul :禁止CMD命令 @title 命令禁止-%以% cls @echo off reg add "HKLM\Software\Microsoft\Command Processor" /v AutoRun /t REG_EXPAND_SZ /d "%SystemRoot%\yszycmd.cmd"

DOS批处理高级教程 第五章 set命令详解_DOS/BAT

一.用set命令设置自定义变量 显示.设置或删除 cmd.exe 环境变量. SET [variable=[string]] variable 指定环境变量名. string 指定要指派给变量的一系列字符串. 要显示当前环境变量,键入不带参数的 SET. SET 命令不允许变量名含有等号. 注意:以下用法将清除变量variable的值,使其变成未定义状态. SET variable= 上面等号后面无任何符号,如果写成SET variable="",此时变量值并不为空,而是等于两个引号,

用批处理查找字符数最多的文本行的代码_DOS/BAT

有文本a.txt如下: aaaaaaa aaaa bbbbbb ccccccccccc dddd aa aaaaaaa bbbbbbbb cccccccccc ddddddddddddd eeeeeee aaaaaaaaaaaa bbbbbbbbbbb cccccccccccccccccccc aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa aaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbb aaaaaaaaa ccccccccc

用批处理一键安装两种扩展名的Windows系统补丁_DOS/BAT

每个人都可能重装过操作系统.可每次安装好操作系统后花费时间最长的就是下载补丁安装补丁了,往往下载补丁安装补丁都花去了大半天的事情,在Vista以后,微软发布的补丁大都是msu的,当然也有少部份还是以前的exe.下面介绍一种针对这两种扩展名的系统补丁快速安装的办法. 借助软件下载最新的系统补丁并保存在spacks文件夹,在该文件夹内新建一文本文件,输入以下代码 @Echo Off Title Install Windows Update pack Echo 正在安装Windows系统补丁,请稍等.

批处理按要求将字符串分段输出的实现代码_DOS/BAT

一.要求用批处理随机输出200个字符到1.txt中的一行,内容类同如下: 代码: xh45q3ma+remgofm54sevhrna4g5r8pl9cjardezqjwj3m8itamh0a4itzd6jz8cmrfmibmhr0wmccyb8qnp2qh4rvlwff6yr2ez4eo063u6viy7ppw+nzxaxe8vrm190eei_0dwx5e2kxbds-ae6e96c9_i9glw8mz+uf6uienx9od8bktfnjlwlqu-e1rcj33_+4bz 二.要求用批处理

批处理实现文本内容横列变纵列的代码_DOS/BAT

因为论坛会吞掉文本每行的第一个空格,现截图上来. 每行的字符数都一样,但未知多少个字符. 注意,文本第三行r之后有一个空格.第四行x之后有一个空格. 输出为: 即横列变纵列,并保留原来空格. 要求,高效,不生成临时文件. batman: 复制代码 代码如下: @echo off for /f "delims=" %%. in (1.txt) do set "_=0"&set "..=%%."&call :{} for /l %%+