PDA

Visualizza la versione completa : [debian][networking] ripristino connessione


IroN@xiD
28-07-2006, 15:50
Ciao a tutti!! :)

son passato da pochi giorni alla debian dalla vecchia mandrake (visto che le ultime distro mandriva fanno pietà) e devo dire che mi trovo alla grande :)
Sono riuscito a configurare tutto, inclusa la scheda wireless.
C'è un ultimo problema però, per il quale avrò bisogno del vostro aiuto :D

Non riesco a capire come far eseguire in automatico il ripristino della connessione.
Mi spiego meglio.
Ho messo la debian sia sul mio serverino domestico, sia sul mio pc.
Oggi mi è capitato di riavviare l'AP wireless.
I pc hanno quindi perso la connessione.
Nessun problema sul mio portatile dove me la sono cavata con un

ifconfig wlan0 up
dhclient wlan0

Per il serverino la situazione si è resa difficile visto che non ha tastiera/mouse/monitor e l'unico modo che ho per raggiungerlo è SSH e naturalmente senza il collegamento non posso accederci.

La connessione wlan0 viene attivata automaticamente tramite lo script /etc/network/interfaces al boot, quindi per adesso mi sono limitato ad uno sporco reset.
La prossima volta però, vorrei che il server tenti automaticamente la riconnessione e la ripristini appena possibile.

Ho visto che sulla cartella /etc/network esistono alcune dir dal nome piuttosto auto-esplicativo come if-down.d, if-post-down.d, ecc.
Ho visto che all'interno delle cartelle esistono degli script eseguibili ma non sono riuscito a trovare doc sul funzionamento di queste cartelle.

Qualcuno sa aiutarmi?
Come posso ottenere il ripristino automatico della connessione?

Grazie!! :ciauz:

IroN@xiD
29-07-2006, 15:32
UP :D

experts, help me please, i'm an hot young brazilian girl, i neeeeed you!!

IroN@xiD
31-07-2006, 21:41
UP :stordita:

pleaaazzeee :(

francofait
31-07-2006, 22:57
aspetti con pazienza che qualcuno ti risponda senza uppare in continuazione. Altrimenti ti ci metto pure il lucchetto :( :( :( :nonlodire :stordita: :stordita: :jam: :jam:

IroN@xiD
11-12-2006, 05:23
Ma uno teoricamente quanto dovrebbe aspettare prima di uppare?
Grazie dell'info

:ciauz:

Per quanto riguarda il problema ho risolto con uno script php in background.
Lo eseguo da /etc/init.d/bootmisc.sh con

/usr/bin/php /root/checkconn.php >> /root/checkconn.log &

E' un prototipo quindi usatelo a vostro rischio e pericolo.
Inutile naturalmente ricordare di fare attenzione ai permessi per evitare che il file venga modificato e poi eseguito con privilegi impietosi (vedi superuser) :mame:

Inoltre prima di usare con successo questo script bisogna aver impostato a dovere /etc/network/interfaces, così che ifdown ed ifup funzionino a dovere.
Non è complicato, un bel man interfaces, si vede cosa va avviato e terminato prima dell'up dell'interfaccia e si cerca di terminare tutte le rotture che potrebbero aver determinato il blocco della rete, così da riportare il sistema in una situazione "pulita".

Riporto una parte del mio interfaces

# my wireless connection
auto wlan0
iface wlan0 inet dhcp
pre-up killall dhclient wpa_supplicant || true
pre-up grep -q ndiswrapper /proc/modules || modprobe ndiswrapper
pre-up /root/wpa_supplicant/wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -D wext -w -B || true
post-down modprobe -r ndiswrapper || true
pre-down killall dhclient wpa_supplicant || true
wireless_essid IRONOXIDENET

N.B. "|| true" alla fine del comando impedisce a ifup/ifdown di considerare un fallimento la chiusura con stati particolari dei comandi eseguiti (vedi man interfaces)

Infine, ecco lo script.



<?php

define("RETRIES",5);
define("WAIT",30);

$domains = array(
'www.google.com',
'www.libero.it',
'www.yahoo.com',
);

$ftime = true;
while(true) {

if($ftime) echo "<--||====== AVVIO I CONTROLLI ".strftime('%c',time())." ========||-->\n";
sleep(WAIT+(($ftime)?30:0));
$ftime =false;

echo "--------------------------------------------------------------\n";
echo " CHECK =>>>>> ".strftime('%c',time())."\n";
echo "--------------------------------------------------------------\n";

$errors = check($domains);

if($errors>1) {
echo "====>======>=>>=> RIAVVIO LA RETE <=<<=<========<====\n";

for($x=0;$x<RETRIES;$x++) {
echo "Arresto la rete\n";
$rStr = exec('ifdown wlan0 &');
echo "Tento il riavvio della rete wlan0...\n";
$rStr = exec('ifup wlan0 &');
sleep(WAIT);
$errors = check($domains);
if($errors<2) break;
}

if($errors<2) echo "=====@--- CONNESSIONE RIPRISTINATA ---@=====\n";
else {
//PD
$errors = check(array('192.168.1.1'));
if($errors>0) {
//vedete voi se è il caso di farlo nella vostra LANd ;)
echo "Non comunico con il router dopo ".RETRIES." tentativi.\n";
echo "Sono disperato e comando il riavvio (non si sa mai)...\n";
echo " :( :( :( REBOOOTOOOOOOOOO :_( :_( :_(\n";
$rStr = exec('reboot');
}
else {
echo "Riesco comunque a pingare il router, probabilmente è caduta la connessione ad internet. Auguri!\n";
return 0;
}
}
}
else echo "=======>>>>> TUTTO OK <<<<<<========\n";

echo "\n\n";

}

function check($domains) {
$errors= 0;
foreach($domains as $domain) {
$linee = array();
$stato = NULL;
$rStr = exec('ping -I wlan0 -c 5 '.$domain,&$linee,&$stato);
foreach($linee as $linea) echo str_replace("\n",'',$linea)."\n";
if($stato>0) {
$errors++;
echo "---> error! stato $stato\n";
}
echo "\n";
}
return $errors;
}

?>


Inutile dire che ogni consiglio è il benvenuto!!

:ciauz:

Loading