All automated operations require the ability to login via SSH without the need to provide the password. This can be achieved by acknowledging at the SSH server (here - mira.astrouw.edu.pl) the public RSA key of the client (ATMOSCOPE).
To generate new pair of keys (private and public):
cd ~/.ssh ssh-keygenAccept all the default options (location of files and empty passphrase). This will generate two files: id_rsa and id_rsa.pub.
cd ~/.ssh ssh cta@mira.astrouw.edu.pl "echo `cat id_rsa.pub` >> ~/.ssh/authorized_keys"
Data transfer is done using the rsync program.
For example - transferring data from the Argentina looks like:
rsync -avr /mnt/cf_usb/data/ -e ssh cta@193.0.88.15:~/argentina/data/The corresponding crontab entry:
15 14 * * * root rsync -avr /mnt/cf_usb/data/ -e ssh cta@193.0.88.15:~/argentina/data/
wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'You can then mail me (mcie AT astrouw DOT edu DOT pl) and I will add it to the allowed list.
NOTES:
Version 2 adds the check option. It checks the existing connection without resetting it. Therefor it should be used in the crontab instead of the reset as in Version 1.
Version 2 has NOT been deployed to the ATMOSCOPEs.
File's location at the ATMOSCOPEs:
/etc/init.d/ssh.tunnel.sh
To add the script to runlevel:
update-rc.d ssh.tunnel.sh defaultsThe system can complain about the script not being written with guidelines etc. In version 3 it should be corrected as the scripts relays on the networking.
Crontab entry:
0 * * * * root /etc/init.d/ssh.tunnel.sh check
File:
ssh.tunnel.sh
Please be sure to change the default parameters.
Current used/reserved port numbers are:
2000 Namibia 3000 Argentina (will be changed to 2001)Please, use port numbers within the range 2002-2100 and let me know (mcie AT astrouw DOT edu DOT pl) as soon as they are set.
#!/bin/bash
#22.05.2012 version 2
#
#the parameters
user="cta"
port="12345" #port at the mira.astrouw.edu.pl
mira="193.0.88.15"
host=`hostname`
#command to create a backword ssh tunnel through active ssh connection
#ssh -R $port:localhost:22 $user@$mira -f -N
#finding the pid of the ssh tunnel - so it can be restarted or killed
#pid=`pgrep -f $mira`
#pgrep -f "ssh -R 2000:localhost:22 cta@193.0.88.15 -f -N"
case "$1" in
start) echo "Starting the ssh tunnel between $host and $mira"
ssh -R $port:localhost:22 $user@$mira -f -N
;;
stop) echo "Stopping the ssh tunnel between $host and $mira"
kill `pgrep -f "ssh -R $port:localhost:22 $user@$mira -f -N"`
;;
restart) echo "Stopping the ssh tunnel between $host and $mira"
kill `pgrep -f "ssh -R $port:localhost:22 $user@$mira -f -N"`
ssh -R $port:localhost:22 $user@$mira -f -N
;;
check)
echo "Checking the ssh tunnel between $host and $mira"
checkstr=`ssh $user@$mira "netstat -ano | grep \"127.0.0.1:$port\" "`
if [ "$checkstr" != "" ]
then
echo "OK"
else
echo "Not working"
echo "Starting the ssh tunnel between $host and $mira"
ssh -R $port:localhost:22 $user@$mira -f -N
fi
;;
*) echo "$host <-> $mira ssh tunnel script"
echo "usage: start, stop, restart, check"
;;
esac
exit 0