标题: [网络连接] [分享]批处理ping域名发现IP变了就写到文本里 [打印本页]
作者: Batcher 时间: 2020-9-10 21:05 标题: [分享]批处理ping域名发现IP变了就写到文本里
【问题】
我想ping一个域名发现ip变了就写到文本里,变的时间同时输出。
【代码】
Step1.bat- @echo off
- set "URL=www.baidu.com"
- for /f "tokens=2 delims=[]" %%i in ('ping -n 1 %URL% ^| findstr "\[.*\]"') do (
- set IP=%%i
- )
- echo,%IP%
- pause
复制代码
Step2.bat- @echo off
- set "URL=bbs.csdn.net"
- set "FileIP=IP.txt"
- set "FileLog=URL_IP.log"
- if not exist "%FileIP%" (
- >"%FileIP%" echo 0.0.0.0
- )
- if not exist "%FileLog%" (
- >"%FileLog%" type nul
- )
-
- :Monitor
- for /f "tokens=2 delims=[]" %%a in ('ping -n 1 %URL% ^| findstr "\[.*\]"') do (
- set IP_Current=%%a
- )
- set /p IP_Previous=<"%FileIP%"
- echo %IP_Previous% -- %IP_Current%
- if "%IP_Previous%" neq "%IP_Current%" (
- >"%FileIP%" echo %IP_Current%
- >>"%FileLog%" echo [%date% %time%] %IP_Current%
- )
- timeout /nobreak /t 3 >nul
- goto :Monitor
复制代码
作者: xuxianking 时间: 2021-3-19 10:23
大佬,遇到一个问题,更换set "URL=bbs.csdn.net" 中的连接,
运行反馈的信息是“ECHO 处于关闭状态。” 有的连接可以,有的不行。这可能是什么原因呢?
作者: Batcher 时间: 2021-3-19 12:04
回复 2# xuxianking
请参考Q-01观察一下哪行代码在报错:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: xuxianking 时间: 2021-3-19 22:11
回复 3# Batcher
c:\>test.bat
c:\>set "URL=kefu.xiaojukeji.com"
c:\>set "FileIP=IP.txt"
c:\>set "FileLog=URL_IP.log"
c:\>if not exist "IP.txt" (echo 0.0.0.0 1>"IP.txt" )
c:\>if not exist "URL_IP.log" (type nul 1>"URL_IP.log" )
c:\>for /F "tokens=2 delims=[]" %a in ('ping -n 1 kefu.xiaojukeji.com | findstr "kefu.xiaojukeji.com"') do (set IP_Current=%a )
c:\>set /p IP_Previous= 0<"IP.txt"
c:\>echo 0.0.0.0 --
0.0.0.0 --
c:\>if "0.0.0.0" NEQ "" (
echo 1>"IP.txt"
echo [2021/03/19 周五 22:09:16.45] 1>>"URL_IP.log"
)
c:\>timeout /nobreak /t 3 1>nul
c:\>goto :Monitor
c:\>for /F "tokens=2 delims=[]" %a in ('ping -n 1 kefu.xiaojukeji.com | findstr "kefu.xiaojukeji.com"') do (set IP_Current=%a )
c:\>set /p IP_Previous= 0<"IP.txt"
c:\>echo ECHO 处于打开状态。 --
ECHO 处于打开状态。 --
c:\>if "ECHO 处于打开状态。" NEQ "" (
echo 1>"IP.txt"
echo [2021/03/19 周五 22:09:19.25] 1>>"URL_IP.log"
)
c:\>timeout /nobreak /t 3 1>nul
c:\>goto :Monitor
c:\>for /F "tokens=2 delims=[]" %a in ('ping -n 1 kefu.xiaojukeji.com | findstr "kefu.xiaojukeji.com"') do (set IP_Current=%a )
c:\>set /p IP_Previous= 0<"IP.txt"
c:\>echo ECHO 处于打开状态。 --
ECHO 处于打开状态。 --
c:\>if "ECHO 处于打开状态。" NEQ "" (
echo 1>"IP.txt"
echo [2021/03/19 周五 22:09:22.30] 1>>"URL_IP.log"
)
c:\>timeout /nobreak /t 3 1>nul
c:\>goto :Monitor
c:\>for /F "tokens=2 delims=[]" %a in ('ping -n 1 kefu.xiaojukeji.com | findstr "kefu.xiaojukeji.com"') do (set IP_Current=%a )
c:\>set /p IP_Previous= 0<"IP.txt"
c:\>echo ECHO 处于打开状态。 --
ECHO 处于打开状态。 --
c:\>if "ECHO 处于打开状态。" NEQ "" (
echo 1>"IP.txt"
echo [2021/03/19 周五 22:09:25.33] 1>>"URL_IP.log"
)
c:\>timeout /nobreak /t 3 1>nul
c:\>goto :Monitor
c:\>for /F "tokens=2 delims=[]" %a in ('ping -n 1 kefu.xiaojukeji.com | findstr "kefu.xiaojukeji.com"') do (set IP_Current=%a )
c:\>set /p IP_Previous= 0<"IP.txt"
c:\>echo ECHO 处于打开状态。 --
ECHO 处于打开状态。 --
c:\>if "ECHO 处于打开状态。" NEQ "" (
echo 1>"IP.txt"
echo [2021/03/19 周五 22:09:28.35] 1>>"URL_IP.log"
)
c:\>timeout /nobreak /t 3 1>nul
c:\>goto :Monitor
c:\>for /F "tokens=2 delims=[]" %a in ('ping -n 1 kefu.xiaojukeji.com | findstr "kefu.xiaojukeji.com"') do (set IP_Current=%a )
c:\>set /p IP_Previous= 0<"IP.txt"
c:\>echo ECHO 处于打开状态。 --
ECHO 处于打开状态。 --
c:\>if "ECHO 处于打开状态。" NEQ "" (
echo 1>"IP.txt"
echo [2021/03/19 周五 22:09:31.22] 1>>"URL_IP.log"
)
c:\>timeout /nobreak /t 3 1>nul
c:\>goto :Monitor
c:\>for /F "tokens=2 delims=[]" %a in ('ping -n 1 kefu.xiaojukeji.com | findstr "kefu.xiaojukeji.com"') do (set IP_Current=%a )
c:\>set /p IP_Previous= 0<"IP.txt"
c:\>echo ECHO 处于打开状态。 --
ECHO 处于打开状态。 --
c:\>if "ECHO 处于打开状态。" NEQ "" (
echo 1>"IP.txt"
echo [2021/03/19 周五 22:09:34.37] 1>>"URL_IP.log"
)
c:\>timeout /nobreak /t 3 1>nul
c:\>goto :Monitor
c:\>for /F "tokens=2 delims=[]" %a in ('ping -n 1 kefu.xiaojukeji.com | findstr "kefu.xiaojukeji.com"') do (set IP_Current=%a )
c:\>set /p IP_Previous= 0<"IP.txt"
c:\>echo ECHO 处于打开状态。 --
ECHO 处于打开状态。 --
c:\>if "ECHO 处于打开状态。" NEQ "" (
echo 1>"IP.txt"
echo [2021/03/19 周五 22:09:37.33] 1>>"URL_IP.log"
)
c:\>timeout /nobreak /t 3 1>nul
终止批处理操作吗(Y/N)? y
作者: thp2008 时间: 2021-3-20 14:31
回复 4# xuxianking
它这个代码的问题,出在,- for /f "tokens=2 delims=[]" %%a in ('ping -n 1 %URL% ^| findstr "%URL%"') do
复制代码
中的 findstr "%URL%" 这里。因为
ping -n 1 bbs.csdn.net
正在 Ping bbs.csdn.net [47.95.50.136] 具有 32 字节的数据:
ping -n 1 www.baidu.com
正在 Ping www.a.shifen.com [14.215.177.38] 具有 32 字节的数据:
看到两个Ping后返回的域名区别没有,所以换了域名,如果Ping返回的不是跟原域名,一模一样,就出错了。
所以直接修改一下,findstr 后面的,查找变量就好了。
我也发现这个问题了,修改了一下,就可以了。- @echo off
- echo.
- set /p URL=请输入需要监控的完整域名FQDN:
- del IP.txt
- del URL_IP.log
- set "FileIP=IP.txt"
- set "FileLog=URL_IP.log"
- if not exist "%FileIP%" (
- >"%FileIP%" echo 0.0.0.0
- )
- if not exist "%FileLog%" (
- >"%FileLog%" type nul
- )
-
- :Monitor
- for /f "tokens=2 delims=[]" %%a in ('ping -n 1 %URL% ^| findstr/i [') do (
- set IP_Current=%%a
- )
- set /p IP_Previous=<"%FileIP%"
- echo %IP_Previous% -- %IP_Current%
- if "%IP_Previous%" neq "%IP_Current%" (
- >"%FileIP%" echo %IP_Current%
- >>"%FileLog%" echo [%date% %time%] %IP_Current%
- )
- timeout /nobreak /t 3 >nul
- goto :Monitor
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |