[Risolto][bash] Script riconnessione
- Dimension7
- Prode Principiante
- Messaggi: 109
- Iscrizione: mercoledì 2 luglio 2008, 0:32
- Località: Viterbo
[Risolto][bash] Script riconnessione
Ho un problema con la connessione wireless su ubuntu server 10.04 (ne parlo qui), in pratica se il router si spegne, al riavvio dello stesso il pc non si ricollega, lo fa se do il restart. Ho provato a cercare soluzioni ma non ho trovato nulla, al che ho pensato che il tutto potrebbe essere gestito da uno script bash, teoricamente dovrebbe essere facile (almeno nella mia ignoranza mi sembra che possa esserlo), mi basta uno script che ogni tot minuti controlli se la connessione al router è attiva (magari con il ping?), se non lo è da un restart alle connessioni ed ecco fatto.
Ora, la questione è che di scripting non ne so niente, quindi se ci fosse qualche anima pia disposta ad aiutarmi gliene sarei grato...
Ora, la questione è che di scripting non ne so niente, quindi se ci fosse qualche anima pia disposta ad aiutarmi gliene sarei grato...
Ultima modifica di Dimension7 il sabato 17 dicembre 2011, 12:28, modificato 1 volta in totale.
Re: [bash] Script riconnessione
che connessione devi fare?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
- Dimension7
- Prode Principiante
- Messaggi: 109
- Iscrizione: mercoledì 2 luglio 2008, 0:32
- Località: Viterbo
Re: [bash] Script riconnessione
La connessione è tramite una penna wireless usb verso un router.
Dico restart perchè via tastiera per riconnettermi gli do il comando
sicuramente ci sarà un comando più semplice ma non lo conosco 
Dico restart perchè via tastiera per riconnettermi gli do il comando
Codice: Seleziona tutto
sudo /etc/init.d/network restart-
l3on4rdo
Re: [bash] Script riconnessione
Non so, sono un po' affamato, ma una cosa del genere dovrebbe andar bene.
Al posto di IP_ROUTER devi mettere l'ip effettivo.
Se è un ip che varia, puoi mettere $1 al posto di IP_ROUTER e poi lanciare lo script con l'ip del router come unico parametro.
ciao
Codice: Seleziona tutto
#! /bin/bash
while true; do
if ! ping -c 3 IP_ROUTER; then
sleep 3
if ! ping -c 3 IP_ROUTER; then
sudo /etc/init.d/network restart
fi
fi
sleep 3
doneSe è un ip che varia, puoi mettere $1 al posto di IP_ROUTER e poi lanciare lo script con l'ip del router come unico parametro.
ciao
- Dimension7
- Prode Principiante
- Messaggi: 109
- Iscrizione: mercoledì 2 luglio 2008, 0:32
- Località: Viterbo
Re: [bash] Script riconnessione
Ok, grazie 
L'ip è statico quindi non ci dovrebbero essere problemi: lo provo e ti faccio sapere come va
L'ip è statico quindi non ci dovrebbero essere problemi: lo provo e ti faccio sapere come va
Re: [bash] Script riconnessione
In realtà molto meglio un cronjob, così ti risparmi di mettere lo script tra quelli di avvio.
Credo comunque che il comando a cui tu ti riferisci sia:
sudo /etc/init.d/networking restart
non:
sudo /etc/init.d/network restart
Crea uno script così:
metti al posto di 1.2.3.4 l'ip giusto e salvalo dove ti pare.
Dopo di che fai:
Se richiesto seleziona "nano" come editor e inserisci questa riga:
Fatto.
Credo comunque che il comando a cui tu ti riferisci sia:
sudo /etc/init.d/networking restart
non:
sudo /etc/init.d/network restart
Crea uno script così:
Codice: Seleziona tutto
#! /bin/bash
IP_ROUTER="1.2.3.4"
if ! ping -c 3 $IP_ROUTER; then
/etc/init.d/networking restart
fiDopo di che fai:
Codice: Seleziona tutto
sudo crontab -eCodice: Seleziona tutto
*/3 * * * * /path/dello/script/nomescript.sh
Ultima modifica di Zoff il sabato 17 dicembre 2011, 12:34, modificato 1 volta in totale.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
-
l3on4rdo
Re: [bash] Script riconnessione
Con cron sicuramente è meglio.
Comunque, io ho messo due controlli con ping perché... non si sa mai
ciao
Comunque, io ho messo due controlli con ping perché... non si sa mai
ciao
- Dimension7
- Prode Principiante
- Messaggi: 109
- Iscrizione: mercoledì 2 luglio 2008, 0:32
- Località: Viterbo
Re: [bash] Script riconnessione
Sto usando lo script di zoff, non sembra funzionare. Ho messo lo script in /mieiScript/scriptRiavvio.sh
Il testo è questo
L'IP è corretto al 100%, perchè è lo stesso indirizzo che uso per la pagina di configurazione del router.
Il file crontab è
Da come mi hai detto di impostarlo, se ho capito bene lo script parte ogni minuto divisibile per tre, quindi ogni tre minuti in pratica. Per non sbagliare comunque ho aspettato anche più del doppio del tempo, ma niente. Non ho modificato lo script in nessun modo, ho solo creato il file scriptRiavvio.sh con nano e ci ho scritto dentro, ho sbagliato quello? Devo renderlo eseguibile?
Il testo è questo
Codice: Seleziona tutto
#! /bin/bash
IP_ROUTER="192.168.0.1"
if ! ping -c 3 IP_ROUTER; then
/etc/init.d/networking restart
fi
Il file crontab è
Codice: Seleziona tutto
# m h dom mon dow command# m h dom mon dow command
*/3 * * * * /mieiScript/scriptRiavvio.sh
Re: [bash] Script riconnessione
Dove si trova la cartella mieiscript?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
- Dimension7
- Prode Principiante
- Messaggi: 109
- Iscrizione: mercoledì 2 luglio 2008, 0:32
- Località: Viterbo
Re: [bash] Script riconnessione
L'ho messa nella cartella principale, quella dove c'è media, lost+found, etc e tutto il resto. Ho sbagliato ad indirizzarla dentro crontab?
Comunque prima l'avevo messa nella mia home (l'utente si chiama davidep3) ma non riuscivo lo stesso ad indirizzarla correttamente credo...
Comunque prima l'avevo messa nella mia home (l'utente si chiama davidep3) ma non riuscivo lo stesso ad indirizzarla correttamente credo...
Re: [bash] Script riconnessione
Hai provato a lanciare lo script a mano?
Prova a lanciare a mano questo:
Prova a lanciare a mano questo:
Codice: Seleziona tutto
#! /bin/bash
IP_ROUTER="192.168.0.1"
if ! ping -c 3 IP_ROUTER; then
/etc/init.d/networking restart
echo "RIAVVIO eseguito"
else
echo "NON riavviato"
fiPrima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
- Dimension7
- Prode Principiante
- Messaggi: 109
- Iscrizione: mercoledì 2 luglio 2008, 0:32
- Località: Viterbo
Re: [bash] Script riconnessione
Ok, avevo sbagliato perchè non avevo reso eseguibile lo script: ora l'ho fatto e ho lanciato manualmente sia questo con gli echo di controllo, che l'altro, solo che c'è un altro problema: apparentemente anche se è collegato, esegue comunque il riavvio.
Lo script vecchio si comporta identicamente, però senza la scritta "RIAVVIO eseguito", ovviamente.
Tutto ciò è avvenuto tramite putty, perciò il pc era per forza collegato al router.
Ora ho modificato lo script, in pratica invece di usare la variabile IP_ROUTER ho scritto direttamente l'indirizzo nell'if: lanciato a mano, capisce che è connesso quindi non riavvia la connessione. Invece quando serve la riavvia, quindi penso proprio sia risolto il problema, modifico il titolo.
Però non ho capito il motivo di questa cosa, di bash non ne so niente però insomma da quel che so di programmazione non ci dovrebbe essere nessun problema visto che è scritto in quella variabile... oppure ho capito male io, non so. Grazie della collaborazione a tutti
Codice: Seleziona tutto
davidep3@ubu-server:~$ ./scriptRiavvio.sh
ping: unknown host IP_ROUTER
* Reconfiguring network interfaces...
ifdown: failed to open statefile /var/run/network/ifstate: Permission denied
ifup: failed to open statefile /var/run/network/ifstate: Permission denied
[fail]
RIAVVIO eseguito
Tutto ciò è avvenuto tramite putty, perciò il pc era per forza collegato al router.
Ora ho modificato lo script, in pratica invece di usare la variabile IP_ROUTER ho scritto direttamente l'indirizzo nell'if: lanciato a mano, capisce che è connesso quindi non riavvia la connessione. Invece quando serve la riavvia, quindi penso proprio sia risolto il problema, modifico il titolo.
Però non ho capito il motivo di questa cosa, di bash non ne so niente però insomma da quel che so di programmazione non ci dovrebbe essere nessun problema visto che è scritto in quella variabile... oppure ho capito male io, non so. Grazie della collaborazione a tutti
Re: [bash] Script riconnessione
Hai usato sudo per modificare crontab?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
-
l3on4rdo
Re: [Risolto][bash] Script riconnessione
manca la $ prima di IP_ROUTER, nell'if.
-
l3on4rdo
Re: [Risolto][bash] Script riconnessione
Codice: Seleziona tutto
#! /bin/bash
IP_ROUTER="192.168.0.1"
if ! ping -c 3 $IP_ROUTER; then
/etc/init.d/networking restart
echo "RIAVVIO eseguito"
else
echo "NON riavviato"
fiSe lo usi come variabile, devi mettere la $, altrimenti si connette proprio all'ip IP_ROUTER... che non esiste.
Come vedi anche così:
ciaol3on4rdo@l3on4rdo-laptop:~$ IP_ROUTER="192.168.0.1"
l3on4rdo@l3on4rdo-laptop:~$ echo $IP_ROUTER
192.168.0.1
l3on4rdo@l3on4rdo-laptop:~$ echo IP_ROUTER
IP_ROUTER
@ Zoff
Come mai questa discussione è tra quelle evidenziate della sezione programmazione?
Ultima modifica di l3on4rdo il sabato 17 dicembre 2011, 12:34, modificato 1 volta in totale.
- Dimension7
- Prode Principiante
- Messaggi: 109
- Iscrizione: mercoledì 2 luglio 2008, 0:32
- Località: Viterbo
Re: [bash] Script riconnessione
Si si, infatti la riconnessione me l'ha fatta automaticamente, senza che lanciassi io lo script.Zoff ha scritto: Hai usato sudo per modificare crontab?
Ah ecco spiegato tutto. Comunque credo che lo lascerò così, tanto in uno script di tre righe non cambia nulla usare la variabile o il vero indirizzo penso. Grazie ancora a entrambi (good)l3on4rdo ha scritto: manca la $ prima di IP_ROUTER, nell'if.
-
l3on4rdo
Re: [Risolto][bash] Script riconnessione
Come abitudine, soprattutto quando si inizia con script corti, è bene sintonizzarsi con le pratiche "migliori" per la scrittura di codice.
Ti consiglio di scrivere come ha impostato la cosa Zoff.
Ovvero dai il valore alla variabile IP_ROUTER all'inizio e poi usi $IP_ROUTER.
Questo perché se un giorno dovessi cambiare ip... devi fare una modifica semplice e non devi andare a ripescare le cose all'interno dello script.
ciao
Ti consiglio di scrivere come ha impostato la cosa Zoff.
Ovvero dai il valore alla variabile IP_ROUTER all'inizio e poi usi $IP_ROUTER.
Questo perché se un giorno dovessi cambiare ip... devi fare una modifica semplice e non devi andare a ripescare le cose all'interno dello script.
ciao
- Dimension7
- Prode Principiante
- Messaggi: 109
- Iscrizione: mercoledì 2 luglio 2008, 0:32
- Località: Viterbo
Re: [Risolto][bash] Script riconnessione
Si si, so che è buona pratica perchè basta cambiare la variabile all'inizio anzichè cercarla nello script, ma appunto essendo una cosa piccola di qualche riga non ce n'è bisogno 
Fosse stata una cosa più complessa l'avrei fatto subito...
ciao
Fosse stata una cosa più complessa l'avrei fatto subito...
ciao
Re: [Risolto][bash] Script riconnessione
Codice: Seleziona tutto
#! /bin/bash
IP_ROUTER="192.168.0.1"
if ! ping -c 3 $IP_ROUTER; then
/etc/init.d/networking restart
echo "RIAVVIO eseguito"
else
echo "NON riavviato"
fi
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti
