[英]make a batch script foward an IP
嗨,我的同事问我是否可以制作脚本。 我确定我想要它做什么,并以 bash 风格写了一些伪代码,现在当然这对他不可用,因为他在 Windows 上。 所以我现在尝试在 a.bat 脚本中实现,这是我的知识有点短的地方。 我需要脚本做的是连接到某个 VPN-ip,如果本地系统不可用,则应该将其转发到另一个 VPN,这样他就不必担心了。 2 中的任何一个都应该始终可以访问。 但它们永远不会同时发生。 这是用于测试工具。
伪 bashcode
while true
do
From local if
10.10.1.15 avaible connect to it
else
10.168.84.47 connect to it
elseif
try to connect to 10.10.1.15 again && verify that'
else
echo 'error device over VPN unavaible'
我尝试的批处理脚本,我很确定我现在所拥有的不会工作
@setlocal enableextensions enabledelayedexpansion
@echo off
set ipaddr=%1
:loop
set state=down
for /f "tokens=5,6,7" %%a in ('ping -n 1 !ipaddr!') do (
if "x%%b"=="xunreachable." goto :endloop
if "x%%a"=="xReceived" if "x%%c"=="x1," set state=up
)
:endloop
echo.Link is !state!
ping -n 6 10.10.1.15 >nul: 2>nul:
goto :loop
endlocal
IF EXIST 10.10.1.15 (
is reacheable connect
) ELSE (
netsh interface portproxy add v4tov4 listenport=80 connectaddress=10.10.1.15 fowardaddress=10.168.84.47
)
据我所知,您可以尝试查找“ttl=”来确定 ping 的成功/失败,而不必担心所有这些令牌和 cmd 的不同版本。 如果我错了,我相信有人会纠正我。
未经测试
set ip=127.0.0.1
rem 2 pings waiting 900ms for a reply
ping -n 2 -w 900 %ip%|find /i "ttl=">nul || goto :fail
rem If we get here then the ping succeeded
rem do what you want here
goto :eof
:fail
rem If we get here then the ping failed.
rem do what you want here
goto :eof
||
运算符的基本意思是“如果上一个命令失败,那么执行此操作”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.