I run a server at my house, setup with a Dynamic IP address. I access this server all the time and I hated when I was home that my "hosts" file was not right and I would have to update it when I was at home and then change it when I was at work.
I'm sure there is an easier way to solve this problem but I couldn't figure it out.@echo off
:start
IPCONFIG |FIND "IPv4" > c:\TEMPIP.txt
FOR /F "tokens=2 delims=:" %%a in (c:\TEMPIP.txt) do (
if defined IP (
echo IP is defined %%a
call :process %%a
) else (
echo Setting IP to %%a
set IP=%%a
call :process %%a
)
)
:process
del c:\TEMPIP.txt
set IP=%~1
echo Your Internal IP Address should be %IP%
IF not x%IP:10.0.3.=%==x%IP% (
call :home
GOTO :EOF
) ELSE (
call :work
GOTO :EOF
)
pause
GOTO :EOF;
:work
IF exist "C:\Windows\System32\drivers\etc\hosts_work" (
XCOPY /Y "C:\Windows\System32\drivers\etc\_work" "C:\Windows\System32\drivers\etc\hosts"
echo "You are at WORK %IP%"
move "C:\Windows\System32\drivers\etc\hosts_work" "C:\Windows\System32\drivers\etc\hosts_home"
) ELSE (
echo "Sorry, you're still at WORK!"
)
GOTO :EOF;
:home
IF exist "C:\Windows\System32\drivers\etc\hosts_home" (
XCOPY /Y "C:\Windows\System32\drivers\etc\_home" "C:\Windows\System32\drivers\etc\hosts"
echo "You are at HOME %IP%"
move "C:\Windows\System32\drivers\etc\hosts_home" "C:\Windows\System32\drivers\etc\hosts_work"
) ELSE (
echo "WOW! Did you stay home?"
)
GOTO :EOF;
:EOF
set /p recheck=Recheck Connection (y/n)?:
if /i %recheck%==y goto start
if /i %recheck%==n goto goaway
:goaway
net stop ssh_tunnel
net start ssh_tunnel
echo "See you next time!"
pause
exit
## - HOME HOSTS FILE
10.0.3.10 www.domain.com domain.com
_work would contain something like this: (note the line is commented out. Also this would be if you had some other IP address you needed it set to if your nameserver isn't working.)
</code>
There is a third file that I use to decide if I need to copy the file over or not and it just changes every time (hosts_work to hosts_home and vice versa)
The last thing you will notice in the script under the :goaway section is the following lines:
<code>
:goaway
net stop ssh_tunnel
net start ssh_tunnel
:goaway
net stop ssh_tunnel
net start ssh_tunnel
</code>
This will start and stop a ssh_tunnel that I have configured to use plink to forward specific local ports to the server so that I can stream my music to my laptop. (all of this is due to a very strict VPN that is so strict that they block almost every port.
No comments:
Post a Comment