Pagina 1 di 1
[Risolto] Montare cartelle rete quando connessione attiva
Inviato: venerdì 9 dicembre 2016, 10:40
da agarest
Buongiorno,
ho un dilemma da risolvere, ho provato a cercare in giro per il forum ma non ho trovato soluzione... La cosa mi sembra strana dato che credo che sia un problema non solo mio ma ora ve lo espongo.
Su fstab ho aggiunto un paio di cartelle di rete da montare in automatico all'avvio del PC con Ubuntu.
All'avvio del PC però non trovo le cartelle montate ma se do "sudo mount -a" mi vengono montate correttamente senza nessun problema.
Sembra che il problema sia dato dal fatto che il file fstab viene caricato prima che la connessione alla rete wifi sia attiva. Ci ho visto giusto?
C'è una qualche soluzione al problema, per esempio lanciare in automatico "sudo mount -a" appena il wifi del PC si connette alla rete? Oppure fare in modo che fstab venga avviato in un secondo momento?
Grazie mille in anticipo.
Re: Montare cartelle rete quando connessione attiva
Inviato: lunedì 19 dicembre 2016, 11:54
da agarest
Nessuno che mi può aiutare? :-(
Re: Montare cartelle rete quando connessione attiva
Inviato: lunedì 19 dicembre 2016, 12:14
da DoctorStrange
Probabimente ci hai visto giusto.
C'è la possibilità di lanciare degli script non appena il wifi è connesso, usando il dispatcher del network manager.
Se guardi nella cartella del NetworkManager, sotto etc ci dovrebbe essere il dispatcher appunto, che magari potrebbe esserti utile.
Re: Montare cartelle rete quando connessione attiva
Inviato: lunedì 19 dicembre 2016, 13:58
da agarest
Si, ho la cartella dispatcher con 3 sottocartelle, pre-up, pre-down e no-wait. Dovrei mettere lo script nella pre-up? Non sarebbe comunque troppo presto per lanciarlo se viene eseguito prima dell'UP della scheda come dice il nome?
Re: Montare cartelle rete quando connessione attiva
Inviato: lunedì 19 dicembre 2016, 17:15
da rai
Dovresti avere in /etc/NetworkManager/dispatcher.d/ lo script 01ifupdown
Se è così, devi mettere il tuo script (contenente il comando per montare quello che ti serve e reso eseguibile) nella cartella /etc/network/if-up.d/
Re: Montare cartelle rete quando connessione attiva
Inviato: lunedì 19 dicembre 2016, 17:46
da agarest
Si, nella cartella dispatcher.d ho 01ifupdown.
Ho creato lo script (dovrebbe essere semplice, ho messo solamente sudo mount -a e reso eseguibile) nella cartella /etc/network/if-up.d/ ma non funziona.
Non è che in questo modo esegua lo script appena la scheda va UP ma non è ancora connessa alla rete?
PS. se lancio lo script a mano funziona
Re: Montare cartelle rete quando connessione attiva
Inviato: lunedì 19 dicembre 2016, 18:01
da rai
Se sei certo che il tuo comando funziona fallo precedere da un rigo che ne posticipa l'esecuzione per esempio di 60 secondi
Nel caso fortunato che questo funzioni puoi provare a ridurre gradualmente il tempo di attesa
Per essere certo che il comando sia effettivamente eseguito fallo precedere anche da un comando di cui tu possa controllare l'output come il seguente
Re: Montare cartelle rete quando connessione attiva
Inviato: lunedì 19 dicembre 2016, 20:09
da thece
script di nome
02MyScript da inserire nella directory
/etc/NetworkManager/dispatcher.d con proprietà
root:root e permessi
755
Codice: Seleziona tutto
#!/bin/bash
if [[ -z "$1" || -z "$2" ]]; then
exit 1
fi
if [[ "$1"=="WLAN0" ]]; then
case "$2" in
up)
mount -t cifs -o username="USERNAME",password="PASSWORD",uid=USERID,gid=GROUPID "//SERVER_IP/SHAREPOINT" "/PATH/MOUNTPOINT"
;;
down)
umount "/PATH/MOUNTPOINT"
;;
*)
exit 0
esac
fi
exit $?
Re: Montare cartelle rete quando connessione attiva
Inviato: mercoledì 21 dicembre 2016, 8:54
da agarest
Che cosa avrebbe dovuto fare quella riga "touch ..."? a me sebra che non abbia fatto nulla... :-(
Ora provo il consiglio di thece
su
al posto di WLAN0 scriverò il nome della mia scheda wifi, giusto?
e al posto di
Codice: Seleziona tutto
mount -t cifs -o username="USERNAME",password="PASSWORD",uid=USERID,gid=GROUPID "//SERVER_IP/SHAREPOINT" "/PATH/MOUNTPOINT"
posso mettere
altrimenti dovrei mettere 3 righe di connessione perchè ho 3 cartelle di rete a cui connettermi...
Grazie!
Re: Montare cartelle rete quando connessione attiva
Inviato: mercoledì 21 dicembre 2016, 10:44
da agarest
Ottimo, credo di aver risolto così:
Codice: Seleziona tutto
#!/bin/bash
if [[ -z "$1" || -z "$2" ]]; then
exit 1
fi
if [[ "$1"=="nome_mia_scheda_wifi" ]]; then
case "$2" in
up)
sudo mount -a
;;
down)
umount "/PATH/MOUNTPOINT"
;;
*)
exit 0
esac
fi
exit $?
In questo modo vengono montate tutte le cartelle di rete configurate su fstab quando la connessione con la rete wifi è attiva.
Grazie mille a tutti per l'aiuto!
Re: [Risolto] Montare cartelle rete quando connessione attiv
Inviato: mercoledì 21 dicembre 2016, 12:22
da thece
più che risolto temo che tu abbia solamente combinato un pasticcio, per i seguenti motivi:
1) non leggi la documentazione dei comandi
2) lo script viene eseguito dal dispatcher come utente root, quindi il "sudo" non serve
3) il comando "mount -a" fa più di quello che ti è necessario, ossia rimonta tutto quello che è indicato nel file /etc/fstab. Tu devi solamente montare gli share di rete e niente altro
4) quando l'interfaccia di rete WIFI viene disattivata devi smontare di share di rete altrimenti vai incontro a malfunzionamenti se la stessa interfaccia viene ripetutamente attivata e disattivata. Quindi il comando "umount" serve.
Al di là di questo, non volendolo proprio usare, nel tuo script dovevi avere almeno l'accortezza di commentarlo: al momento quella riga ti sta solamente generando degli errori
Re: [Risolto] Montare cartelle rete quando connessione attiv
Inviato: mercoledì 21 dicembre 2016, 13:48
da agarest
thece [url=http://forum.ubuntu-it.org/viewtopic.php?p=4943928#p4943928][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
più che risolto temo che tu abbia solamente combinato un pasticcio, per i seguenti motivi:
1) non leggi la documentazione dei comandi
2) lo script viene eseguito dal dispatcher come utente root, quindi il "sudo" non serve
3) il comando "mount -a" fa più di quello che ti è necessario, ossia rimonta tutto quello che è indicato nel file /etc/fstab. Tu devi solamente montare gli share di rete e niente altro
4) quando l'interfaccia di rete WIFI viene disattivata devi smontare di share di rete altrimenti vai incontro a malfunzionamenti se la stessa interfaccia viene ripetutamente attivata e disattivata. Quindi il comando "umount" serve.
Al di là di questo, non volendolo proprio usare, nel tuo script dovevi avere almeno l'accortezza di commentarlo: al momento quella riga ti sta solamente generando degli errori
1) in che senso? vuoi dire che non mi sono documentato sui comandi da usare?
2) posso togliere sudo ma a questo punto se dici che questo sistema non va bene provo a far funzionare lo script senza mount -a ma con le stringhe singole
3) si, sapevo che mount -a, come già avevo scritto sopra, monta tutto quello che c'è in fstab ma l'avevo messo proprio perchè così montava tutte le cartelle di rete senza doverle specificare una per una nello script ma se dici che non va bene posso anche scriverle singolarmente nello script. Il problema è che quando avevo provato a metterle singolarmente con la stringa seguente non funzionava
Codice: Seleziona tutto
mount -t cifs -o username="USERNAME",password="PASSWORD",uid=USERID,gid=GROUPID "//SERVER_IP/SHAREPOINT" "/PATH/MOUNTPOINT"
e credo sia perchè in fstab la stringa è così:
Codice: Seleziona tutto
//INDIRIZZO/SHAREPOINT /PATH/MOUNTPOINT cifs users,auto,username=xxx,password=xxx 0 0
ma è un mio pensiero perchè non sono assolutamente un esperto.
4) la riga per smantare le unità è scritta correttamente e sembra funzionare, è solo qui che copiandola dalla discussione è rimasta con i percorsi di esempio, nel mio PC ha i nomi dei mountpoint corretti.
Ora provo a rifare lo script con le stringhe singole e vediamo se riesco a trovare l'inghippo.
Intanto grazie mille per l'aiuto!
Re: Montare cartelle rete quando connessione attiva
Inviato: mercoledì 21 dicembre 2016, 14:09
da agarest
Così può andare?
Codice: Seleziona tutto
#!/bin/bash
if [[ -z "$1" || -z "$2" ]]; then
exit 1
fi
if [[ "$1"=="wlp3s0" ]]; then
case "$2" in
up)
mount -t cifs -o username=user,password=psw //192.168.221.251/cartella1 /mnt/cartella1
mount -t cifs -o username=user,password=psw //192.168.221.251/cartella2 /mnt/cartella2
mount -t cifs -o username=user,password=psw //192.168.221.251/cartella3 /mnt/cartella3
mount -t cifs -o username=user,password=psw //192.168.221.1/cartella4 /mnt/cartella4
mount -t cifs -o username=user,password=psw //192.168.221.1/cartella5 /mnt/cartella5
mount -t cifs -o username=user,password=psw //192.168.221.1/cartella6 /mnt/cartella6
mount -t cifs -o username=user,password=psw //192.168.221.1/cartella7 /mnt/cartella7
;;
down)
umount "/mnt/cartella1"
umount "/mnt/cartella2"
umount "/mnt/cartella3"
umount "/mnt/cartella4"
umount "/mnt/cartella5"
umount "/mnt/cartella6"
umount "/mnt/cartella7"
;;
*)
exit 0
esac
fi
exit $?
In questo modo funziona e le cartelle vengono correttamente montate alla connessione e smontate quando il wifi è disconnesso.
PS: ho cambiato i nomi delle cartelle, utente e password, ovviamente nella realtà non sono questi ;-)
Re: Montare cartelle rete quando connessione attiva
Inviato: mercoledì 21 dicembre 2016, 15:38
da thece
Lo script adesso rispetta le indicazioni che ti ho dato. Se funziona lascialo così
Re: Montare cartelle rete quando connessione attiva
Inviato: mercoledì 21 dicembre 2016, 15:47
da agarest
Ottimo! Grazie mille ancora!
Gentilissimo!