Vai a: [ Contenuti ] [ Categorie ] [ Cerca ]

Condividere una cartella in rete Lan con Python (e con Linux of course)

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.

share

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

Tags:

link sponsorizzati

Consiglialo su Facebook

Lascia un Commento

Iscriviti alle discussione senza commentare

Torna: [ Inizio ] [ Contenuti ] [ Categorie ] [ Cerca ]

Pagina renderizzata in soli 0,158 secondi dopo aver eseguito ben 59 query. Wordpress... prestazioni da urlo!