Ho realizzato uno script in bash che permetta di visualizzare la situazione dei download di WinMX direttamente da web. Lo script è primitivo, visualizza il nome del file in download e la sua percentuale di completamento.
Ovviamente come avrete capito c'è bisogno di una distro GNU/Linux per far girare questo script.
I casi sono due: o avete un server linux muletto che fa da p2p server sul quale c'è installato WinMX oppure potete optare per la mia soluzione. Ho un bel server con installato Ubuntu 32 bit sul quale gira una macchina virtuale XP. Su XP c'è installato WinMX il quale salva i file in download in una cartella condivisa con samba del server Ubuntu. In questo modo le dimensioni della macchina virtuale non raggiungono livelli abominevoli e salvando su una cartella condivisa e fisicamente collocata sul server Ubuntu, posso gestire meglio le funzioni dello script.
Ecco il codice commentato:
#!/bin/bash # ########################################################## # Name: WinMX Web Monitor # # Distributed under the terms of GNU GPL version 3 or later # Copyright (C) Luca Scalvi (luca.scalvi(a)yahoo.it) # Date: 20090928 # Last updated: 20090930 # version: Beta 0.2 # ########################################################## #Costanti page_html="/home/server/www/P2P/winmx.html" folder_winmx="/home/server/NetDrive/WinMX" header="__INCOMPLETE___" #NON MODIFICARE #Aggiorna il file eliminando quello vecchio rm $page_html #Lista il contenuto della directory /home/server/NetDrive/WinMX ls $folder_winmx > /home/server/www/P2P/winmx.txt #Conta le righe ( quindi i file ) del file /home/server/www/P2P/winmx.txt righe=$(ls $folder_winmx | wc -l) #Setta riga a 0 riga=0 #Ciclo principale while [ $riga -lt $righe ]; do let riga+=1 current=$(head -$riga /home/server/www/P2P/winmx.txt | tail -1) #Trova la dimensione dei file contenuti nella directory /home/server/NetDrive/WinMX dimensione_down=$(stat -c%s $folder_winmx/$current) #Toglie __INCOMPLETE___ e .avi dal nome del file nome=$(echo $current | sed 's/__INCOMPLETE___//g' | sed 's/.avi//g' ) #Estrazione ultimi 8 caratteri dimensione_tot_hex_low=$(echo $nome | sed 's/^.*\(........\)$/\1/' ) echo $dimensione_tot_hex_low > /home/server/www/P2P/.dthl #Trasforma tutti i caratteri da minuscoli a MAIUSCOLI dimensione_tot_hex_upp=$(cat '/home/server/www/P2P/.dthl' | tr '[a-z]' '[A-Z]') #Conversione Hexadecimal -> Decimal dimensione_tot=$(echo "ibase=16; $dimensione_tot_hex_upp" | bc ) #Calcola la % di completamento del file dim_virgola=$(echo " $dimensione_down / $dimensione_tot " | bc -l ) dim_decimali=$(echo '0'$dim_virgola ) percentage=$(echo "$dim_decimali * 100" | bc -l ) echo $percentage > /home/server/www/P2P/.tmp perc_trunk=$(cat '/home/server/www/P2P/.tmp' | cut -c1-5) #Controlla se il file è completo o meno if [[ $current =~ $header ]]; then echo ''$nome' - Completo al: '$perc_trunk'% ' >> $page_html else echo ''$nome' - FILE COMPLETATO! ' >> $page_html fi done #Struttura file HTML echo 'Totale file: ' $righe'' >> $page_html echo 'Ultimo aggiornamento:' >> $page_html echo '' >> $page_html date >> $page_html echo '' >> $page_html echo 'Note:' >> $page_html echo 'I file contenenti hash finale sono incompleti' >> $page_html echo '' >> $page_html echo '' >> $page_html echo '----------' >> $page_html echo 'About:' >> $page_html echo 'Win Web Server Beta 0.1' >> $page_htmlLa sezione #Struttura file HTML è completamente personalizzabile e potete impostarlo come volete. Per facilitare la personalizzazione ho impostato le directory come costanti. Personalizzate queste voci e lo script sarà pronto all'uso
#Costanti page_html="/home/server/www/P2P/winmx.html" folder_winmx="/home/server/NetDrive/WinMX"Per automatizzare il tutto, ricorriamo al Cron. Da terminale digitare
crontab -e
ed inserire la seguente riga:
* * * * * bash /directory_dello_script/nome_script.sh
In questo modo lo script verrà lanciato ogni minuto, dandovi una situazione sempre aggiornata
Clicca sul link per vedere l'output di esempio: DEMO X
THE END
THE END