Unica arma a mia disposizione: un portatile con OpenSuSE 10.2 per restare in contatto con l'amato computer che, invece, stara' qui a casa!
Quello che mi serve e' non soltanto un server VNC, ma anche un metodo per poterlo avviare automaticamente ed un altro per sapere sempre che IP ha questa macchina, anche nel caso se ne andasse la corrente e tornasse dopo un po' (il mio pc in questi casi si avvia automagicamente).
Passo 1
Il bootloader
Sembrera' banale, ma se ci scordiamo di dire al nostro BootLoader di caricare Gentoo all'avvio, tutto il resto del lavoro e' inutile.
Quindi, la prima cosa che ho fatto e' stato modificare /etc/lilo.conf in questo modo:
Code: Select all
compact
lba32
boot = /dev/sda
map = /boot/map
delay = 10
default = Gentoo
image = /boot/kernel
root = /dev/sda2
label = Gentoo
append = "video=vesafb:mtrr,ywrap,1280x1024-32@75 quiet splash=silent,theme:livecd-2006.1 console=tty1"
read-only
other = /dev/sda1
label = Minix3.1
Passo 2
Gli script sh+perl e .netrc
Per ritrovare il mio indirizzo IP pubblico (sono dentro una LAN nattata) ho usato un metodo forse poco ortodosso, ma sicuramente efficace per una situazione d'emergeza come questa (parto fra 4 ore!!): prendere il mio indirizzo IP da http://www.whatismyip.com/
Questo IP viene successivamente estrapolato dalla pagina ed uploaddato in un file su un server ftp. Inoltre, viene memorizzata su un file (una sorta di log) l'orario di esecuzione dello script:
/root/getip.sh
Code: Select all
#!/bin/bash
WEB_PAGE_PATH="/tmp/biribi.html"
PERL_SCRIPT_PATH="/root/getip.pl"
IP_FILE_PATH="/etc/public_ip"
LOG_FILE_PATH="/mnt/data/pub/getip.log"
HOME_PATH="/root"
MYIP_URL="http://www.whatismyip.com/"
FTP_HOST="ftp.mio-server.com"
wget -O ${WEB_PAGE_PATH} ${MYIP_URL}
cat ${WEB_PAGE_PATH} | ${PERL_SCRIPT_PATH} > ${IP_FILE_PATH}
HOME="${HOME_PATH}" ftp ${FTP_HOST}
rm ${WEB_PAGE_PATH}
date >> ${LOG_FILE_PATH}
Innanzitutto vediamo cosa fa lo script Perl:
/root/getip.pl
Code: Select all
#!/usr/bin/perl
while(<STDIN>) {
if($_ =~ /\ -\ (.*)<\/TITLE>/) {
$a .= $1 . "\n";
}
}
print $a;
Per effettuare l'upload del file in automatico ho usato il file
/root/.netrc
Code: Select all
machine ftp.mio-server.com
login mio-username
password mia-password
macdef init
put /etc/public_ip path/sul/server
close
quit
- con "macdef init" definisco la macro che deve venire eseguita appena dopo la connessione
- bisogna lasciare una linea vuota alla fine del file affinche' ftp capisca che la macro e' finita
- .netrc deve avere permessi rwx------ (700)
Faccio notare che bisogna usare la variabile d'ambiente HOME="/root" nel lanciare ftp per rendergli chiaro da dove deve leggere .netrc
Passo 3
Gli script di init
Per concludere lanciamo gli script ed il server VNC all'avvio del sistema e killiamo (il server) alla chiusura;
/etc/conf.d/local.start
Code: Select all
/root/getip.sh >/dev/null 2&>/dev/null
su -c "vncserver :1 -geometry 1024x768 -depth 8 -name NomeDesktopRemoto >/dev/null 2>/dev/null" - NomeUtente
/home/NomeUtente/.vnc/xstartup
Code: Select all
/usr/kde/3.5/bin/startkde &
/etc/conf.d/local.stop
Code: Select all
su -c "vncserver -kill :1 >/dev/null 2>/dev/null" - NomeUtente
Spero che possa essere utile a molti!
Ciao!





