繁体   English   中英

将批处理脚本转发到 IP

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM