Elucubrato da saibal
Addì 10 luglio 2015
Condividere una cartella in rete Lan con Python (e con Linux of course)
Se avete una distribuzione Linux probabilmente avrete installato anche Python. E se avete Python avete anche un server integrato che, con un po’ di fantasia, potrebbe essere utile per condivedere temporaneamente una cartella in rete Lan. Basta uno script bash di poche righe da usare con Nautilus (Gnome), Caja (Mate) o con il file manager che preferite.
Lo script sarà utile in quei casi in cui sia necessario condividere temporaneamente, magari con i colleghi in ufficio, una cartella in sola lettura che solamente non è pubblica. Invece di perdere tempo ad impostare la condivisione per poi ricordarsi di eliminarla alla fine delle operazioni, basterà un click.
L’ unica dipendenza dello script è Zenity, utilizzato per mostrare le notifiche a video. Con distribuzioni Ubuntu based non avrete problemi dato che è installato di default. In altri casi potrebbe essere necessario modificare il codice.
Se volete scaricare il codice cliccate qui.
Ecco come si presenta la notifica quando attivate una condivisione. E sì, a Roma fanno 33° in questo momento.
Di seguito lo script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
#!/bin/bash # # temporary sharing # # Data: 30/06/2015 14:15:46 # Autore: Lorenzo Saibal Forti <saibal@lorenzone.it> # # Copyleft: 2010 - Tutti i diritti riservati # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #===================================================================== # porta della condivisione SHARING_PORT=8080 # tempo della condivisione (in secondi) SHARING_TIME=60 # il tuo nome utente (serve per abilitare le notifiche se usate da cron. lascia vuoto se non vuoi usarle) USERNAME_XAUTHORITY='' # ip lan via eth0. se non lo trovo provo su wlan0 LAN_IP='' for INTERFACE in eth0 wlan0 do if [ -z "$LAN_IP" ] then LAN_IP=$(ifconfig $INTERFACE | grep inet | awk '{print $2}' | cut -d':' -f2) fi done # controllo l'esistenza di connessioni già attive CHECK_SERVICE=$(ps ax | grep -v grep | grep "python -m SimpleHTTPServer $SHARING_PORT" | awk '{print $1}') if [ -z "$CHECK_SERVICE" ] then if [ "$USERNAME_XAUTHORITY" != "" ] then export XAUTHORITY="/home/$USERNAME_XAUTHORITY/.Xauthority" export DISPLAY=:0 fi CWD=$(pwd) python -m SimpleHTTPServer $SHARING_PORT & S_PID=$! zenity --notification --title="Python Share" --timeout=15 --width=450 \ --text "Condivisione attiva per $SHARING_TIME secondi : $CWD http://$LAN_IP:$SHARING_PORT" sleep $SHARING_TIME kill -s 15 $S_PID zenity --notification --title="Python Share" --timeout=5 \ --text "Condivisione disattivata: $CWD " else zenity --question --title="Python Share" --text="Condivisione Python già esistente. Chiudere condivisione?" if [ $? -eq 0 ] then kill -s 15 $CHECK_SERVICE if [ $? -eq 0 ] then zenity --notification --title="Python Share" --width=300 --timeout=5 --text "Condivisioni chiuse" fi fi fi exit 0
I parametri da impostare sono solo 2:
1 2 3 4 5
# porta della condivisione SHARING_PORT=8080 # tempo della condivisione (in secondi) SHARING_TIME=60
- SHARING_PORT: indica la porta per la condivisione. nella maggior parte dei casi il valore 8080 andrà bene ma potete personalizzarla a piacere.
- SHARING_TIME: indica la durata della condivisione. Di default è 60 secondi. Modificate a seconda delle vostre esigenze.
L’ultimo parametro che potrebbe essere personalizzato è per un utilizzo avanzato, magari perchè utilizzate un crontab per attivare periodicamente la condivisione di una cartella. In questo caso è necessario impostare il vostro nome utente per esportare a video le notifiche in modo corretto. In ogni caso lasciate vuoto se non siete sicuri del risultato.
- USERNAME_XAUTHORITY: impostare con il proprio nome utente
Chiamate il file come vi pare e inseritelo nella cartella degli script, ricordandoci di dare i permessi in esecuzione.
Se avete Mate il percorso è il seguente: ~/.config/caja/scripts
Se avete Gnome il percorso è il seguente: ~/.config/nautilus/scripts
A questo punto non resta che entrare nella cartella che vogliamo condividere e lanciare lo script. Ci verrà fornito il percorso da passare ai nostri colleghi che, via web, potranno raggiungere la cartella e scaricare i file.
L’indirizzo sarà composto dal vostro ip in Lan e la porta scelta. Ad esempio: http://192.168.0.2:8080
Lascia un Commento