2016-09-08 8 views
1

は、誰もがこの上で私を助けることができるかどうかのチェック:変更された場合はバッチスクリプトの外部IP

  1. get_my_ip
  2. reset_router
  3. チェック:

    私は意志のバッチを作るしようとしていますか?私は、コマンドPROMT使用していバッチの

IF YES END, ELSE GO TO END 


:GET_MY_IP 

    for /f "skip=4 usebackq tokens=2" %%a in ('nslookup myip.opendns.com resolver1.opendns.com') do echo %%a 

:RESET_ROUTER_AND_WAIT_TIMER 

:CHECK_IP 
IF NEW_IP == PREVIOUS_IP GOTO RESET_ROUTER AND INCREMENT TIMER TIME 

:IP_IS_NOT_THE_SAME 
END 

- 外部IPアドレス

+0

あなたは(get_my_ip' 'からIP_IS_NOT_THE _SAME''へ) – Jonas

答えて

0

にこのコードを取得するには、コマンド

for /f "skip=4 usebackq tokens=2" %%a in ('nslookup myip.opendns.com resolver1.opendns.com') do echo %%a 

を単に外部IP用ですので、あなたがから開始することができますこれは:

@echo off 
set "IPLog=%userprofile%\Desktop\%~n0.txt" 
Set "MyCommand=nslookup myip.opendns.com resolver1.opendns.com 2^>nul" 
for /f "skip=4 delims=: tokens=2" %%a in ('%MyCommand%') do (
    Set "MyExtIP=%%a" 
) 
Call :Trim %MyExtIP% 
echo My Extenal IP Adress is : %MyExtIP% 
echo My Extenal IP Adress is : %MyExtIP% > "%IPLog%" 
PAUSE & start "" "%IPLog%" & exit 
::************************************************************************************* 
:Trim <String> 
set "vbsfile=%tmp%\%~n0.vbs" 
(
    echo Wscript.echo Trim("%~1"^) 
)>"%vbsfile%" 
for /f "delims=" %%a in ('Cscript /nologo "%vbsfile%"') do (set "MyExtIP=%%a") 
If Exist "%vbsfile%" Del "%vbsfile%" 
exit /b 
::************************************************************************************* 

編集:2016年10月9日

@echo off 
:Checkloop 
Call :GetIP 
Call :CheckIP 
rem goto:checkloop 
::****************************************************************************** 
:GetIP 
set "IPLog=%userprofile%\Desktop\%~n0.txt" 
Set "MyCommand=nslookup myip.opendns.com resolver1.opendns.com 2^>nul" 
for /f "skip=4 delims=: tokens=2" %%a in ('%MyCommand%') Do (
    Set "MyExtIP=%%a" 
) 
Call :Trim %MyExtIP% 
echo My Extenal IP Adress is : "%MyExtIP%" 
echo %MyExtIP% > "%IPLog%" 
Exit /b 
::************************************************************************************* 
:CheckIP 
If Not Exist "%IPLog%" Call :GetIP 
rem Set /p CheckIP=<%IPLog% 
for /f "delims= " %%g in ('Type "%IPLog%"') do (set "CheckIP=%%g") 
rem echo "%CheckIP%" from file & pause 
If "%CheckIP%"=="%MyExtIP%" (Cls & color 0A & echo the IP Adress = %CheckIP% does not changed 
) else (
    Cls & Color 0C & echo The IP Adress is changed to %MyExtIP% 
) 
Timeout /T 30 /Nobreak 
goto:checkloop 
::************************************************************************************* 
:Trim <String> 
set "vbsfile=%tmp%\%~n0.vbs" 
(
    echo Wscript.echo Trim("%~1"^) 
)>"%vbsfile%" 
for /f "delims=" %%a in ('Cscript /nologo "%vbsfile%"') do (set "MyExtIP=%%a") 
If Exist "%vbsfile%" Del "%vbsfile%" 
exit /b 
::************************************************************************************* 
+0

をすべてのコードを投稿することができますしてくださいこれが唯一のパブリックIPアドレスを取得するようです。 ISPがCGNを使用している場合、外部(WAN)IPアドレスは取得されません。 CGNの場合、ISPのパブリックIPアドレスが取得されますが、これは役に立たないかもしれません。ますます多くのISPがCGNを使用しています(単に[su]で検索しています)、エンドユーザーにとっては問題を引き起こしています。残念ながら、CGNを使用するほとんどのISPはCGN( '100.64.0.0/10 ')用に予約されたIPv4範囲を使用しておらず、RFC 1918のプライベートアドレス空間を使用しており、お客様のネットワークアドレッシングと競合する可能性があります。 –

+0

こんにちは、ありがとう!あなたはこれを今確定するのを助けることができますか? 'check_ip.bat オフ @echo::私はいくつかの "check_ip.bat" にこのコードを入れた場合は、私の最後のバッチは次のようになりますSTART IP_previousは== IP_NEW後藤他FINISHを開始した場合check_ip.bat reset_router.bat : :終了 終了 ' このコードは、「final.bat」に配置する必要があります このIF部分の処理方法は? – Jovan

+0

@Jovan私の最後の編集を確認してください。あなたのルータをリセットする方法がわかりません。 – Hackoo

関連する問題