批处理脚本bat:如何把hosts里面的ip地址替换成其他ip。检测扫描端口是否正常。

背景介绍 :
由于公司SLB有时候访问会出现端口异常,公司使用windows的同事需要正常访问到页面 。 现需要写一个bat脚本,实现检测是否异常,异常则替换掉/hosts的ip地址为正常的地址。实现批量替换。

分为3部分:(举例说明 )
1. 原windows电脑中是否存在 映射hosts的代码组 ;没有则添加后,在进行检测;
(存在多个域名 ;)

type !phn! |findstr "\<h.test.cn\>">nul
if %errorlevel%==1 goto new
::判断原来的hosts文件是否有映射

::编辑hosts文件
:new
(@echo.>>"C:\Windows\System32\drivers\etc\hosts"
@echo 192.168.1.1    h.test.cn >> C:\Windows\System32\drivers\etc\hosts
::............根据实际 有几个就写几个。
pause

2. 检测 IP 192.168.1.1 绑定的端口80 访问是否正常
pause和exit 用来进行整个脚本的判断调整 , 可自行测试。

::检测访问使用的ip是否有端口异常的情况,检测时浏览器上访问需要访问 192.168.1.1进行判断
netstat -ano | findstr 192.168.1.1 | findstr 80 | findstr ESTABLISHED > nul
if %errorlevel%==0 goto ok
if %errorlevel%==1 goto err
pause
exit

3. 异常则进行批量替换 。 把IP A 改成 IP B
ip A 替换为 ip B ;成功改变映射关系 ;

::批量替换ip地址为正常的ip
:err
(echo (CRITICAL: Port check failed)
type !phn! |findstr "\<192.168.1.1\>">nul
if %errorlevel%==0 set "addr1=192.168.1.1"&set "addr2=192.168.1.2"
type !phn! |findstr "\<192.168.1.2\>">nul
if %errorlevel%==0 set "addr1=192.168.1.2"&set "addr2=192.168.1.1"
if not defined addr1 (echo IP不对&pause&goto :eof) else echo 现IP地址为!addr1! 按任意键改为!addr2!&pause>nul 
::循环进行替换
(for /f "delims=" %%a in ('type !phn!') do (
set aa=%%a & set aa=!aa:%addr1%=%addr2%!
echo !aa!
))>!ph!\hosts.tmp
del !phn!>nul&ren !ph!\hosts.tmp hosts>nul&pause)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值