有朋友是负责主机维护的,由于机房有几百台主机,需要时刻查看在线情况,所以要我帮忙写一个自动判断主机在线情况的程序。
案例源码1:
@ECHO Off
COLOR 0A
Title 主机状态查询:by.SanLi
mode con cols=45 lines=5
:run
IF EXIST ERROR.INI (del ERROR.INI)
CLS
ECHO.
ECHO 正在查询主机在线情况,请稍等......
ECHO.
::===============以下区域可加入主机列表=============
::1号主机:AMD
PING -n 1 AMD >nul
if %ERRORLEVEL%==1 echo AMD主机离线 >ERROR.INI
::2号主机:intel
PING -n 1 192.168.31.30 >nul
if %ERRORLEVEL%==1 echo intel主机离线 >ERROR.INI
::===============以上区域可加入主机列表===============
::等待15秒继续执行
IF EXIST ERROR.INI (START MUSIC.exe)
IF NOT EXIST ERROR.INI (taskkill /F /IM MUSIC.exe)
echo.
echo 15秒后继续循环查询
echo.
@TIMEOUT /T 15
goto run
案例源码2:
@echo off
COLOR 0A
Title 主机状态查询:by.SanLi
mode con cols=45 lines=5
:run
IF EXIST ERROR.INI (del ERROR.INI)
CLS
ECHO.
ECHO 正在查询主机在线情况,请稍等......
ECHO.
::============== 主体代码用for命令批量ping data文档列表IP或电脑名称 ==============
for /f "tokens=1* delims=" %%a in (data.txt) do ping -n 1 -w 80 %%a >nul 2>nul&&ECHO %%a主机在线 ||echo %%a>>error.ini
::=================== data数据一行一个IP或一行一个电脑名称 ====================
::等待15秒继续执行
IF EXIST ERROR.INI (START MUSIC.exe)
IF NOT EXIST ERROR.INI (taskkill /F /IM MUSIC.exe)
echo.
echo 15秒后继续循环查询
echo.
@TIMEOUT /T 15
goto run
运行图片:
这个程序就2个文件,一个bat和一个易语言写的exe显示程序。
当批处理ping主机名称或者IP都可以,如果ping不通,就会在执行目录下创建一个ERROR.INI的报错文档,里面会记录离线的主机名称。然后脚本都ping完主机后,会检测目录下是否存在error.ini报错文件,如果有文件就启动exe程序,exe程序启动后就会循环播放音乐,并每隔5秒输出一次error.ini文档信息。
如果脚本检测不到执行目录下有error.ini报错文档,就说明主机都在线,就会自动结束音乐播放音乐,从而达到无人值守判断主机在线情况。
下载地址(exe程序源码我也一起打包了):