For what it's worth, I managed to get it working. I wouldn't classify
my solution as elegant, but it works.
For posterity, the actual batch file is:
@ECHO OFF
rem Batch file to check for ssh connection
rem and bring it up if it's down
c:
cd \putty
if exist netstat.txt (del netstat.txt)
netstat -an > netstat.txt
find "60000" netstat.txt >NUL
if errorlevel 1 (
plink [YOUR_PLINK_COMMANDS_HERE]
)
del netstat.txt
The script searches for port 60000, just so I have a port listening,
so I know plink.exe is running. I used the following line to run the
.cmd file every minute, with the SYSTEM account:
schtasks /create /sc minute /mo 1 /ru system /tn "SSH Tunnel" /tr
c:\putty\upcheck.bat
You'll want to run it as system, as otherwise you'll have a DOS box
popping up every minute, as I discovered when I initially ran the task
as my user. You'll also need to import your SSH server's RSA key, so
the system account has access to it. It took me a while to figure
this one out... ;) The way I went about it was to attach to the SSH
server once with putty, so you can get the proper values from
HKEY_CURRENT_USER/Software/SimonTatham/PuTTY/SshHostKeys. Inside that
"key" is a "string value" named
"rsa2@[SERVER_PORT]:[SERVER_IP/HOSTNAME]." I just copied and pasted
into the new "string value" I created in
HKEY_USERS\.DEFAULT\Software\SimonTatham\PuTTY\SshHostKeys. Once you
have that setup properly, the system user can find your server's RSA
key, and can establish the connection. EDIT YOUR MACHINE'S REGISTRY
AT YOUR OWN RISK!
I don't know that it's the most elegant solution, but it appears to
work (I've tested it a bit). As always, I'd be happy to hear any
constructive criticism. And, if I ever get bored enough, I might even
create a nice web page with pretty pictures that walks you through the
entire process step by step...
-Erik
On 11/6/06, Erik Bixby <
erik.bixby@gmail.com> wrote:
> [This line intentionally left blank.]
> I have a script that does a job for me in the Linux world. The script follows:
>
> #!/bin/bash
> # Script to see if SSH tunnel is up, and bring it up if it's down
>
> if test `netstat -an | grep LISTEN | grep :59999 | wc -l` -lt 1
> then
> ssh -N -T -R 60000:localhost:22 -L 59999:localhost:3128
> tunneler@host1.example.com -g
> fi
>
> I run this script in a cron job, and it does a respectable job of
> keeping a SSH tunnel up between two Linux hosts (although,
> constructive input is always welcome). I am looking to do something
> similar with a Windows host. I have a plink.exe command line that
> establishes a connection and forwards my ports all around. However, I
> am hoping someone might be able to help me with an elegant method of
> checking for a link already up, and only running plink.exe if
> necessary. I would prefer to not check for plink.exe running, in case
> I decide to set up multiple instances. I'm hoping someone might be
> able to help me with a batch file that accomplishes the same goal as
> this shell script that I can run periodically on the Windows hosts.
>
> And, for the curious, I'm trying to set this up, amongst other
> reasons, so my in-laws' computers will establish a connection to a
> machine I can connect to as well, for remote administration.
>
> As always, I thank everyone in advance for your time in considering my quandary.
> -Erik Bixby
>
---------------------------------------------------
PLUG-discuss mailing list -
PLUG-discuss@lists.plug.phoenix.az.us
To subscribe, unsubscribe, or to change you mail settings:
http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss