visitor analysis
Blog

orgogliosamente (7 months ago)

Concept: WinMX Web Server (WWS)



wws_logo_bloggercrew


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_html

La 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

Luca Scalvi - Web designer e sistemista italiano, oltre che sim racer e gamer a tempo perso. Il suo lavoro è l'informatica: ha fondato bloggercrew.com e Bit.uZ. Potete seguire i suoi progetti via Twitter.

1 Commento

  1. [...] This post was mentioned on Twitter by BloggerCrew.com. BloggerCrew.com said: Concept: WinMX Web Server (WWS) http://bit.ly/aCCW2o [...]

Rispondi

Segui BloggerCrew

Ultime gallerie

 

febbraio: 2010
L M M G V S D
    mar »
1234567
891011121314
15161718192021
22232425262728

Immagini random

Loading...
image 3.jpg image 6.jpg image 5.jpg image 2.jpg image 4.jpg

Advertising

Facebook & sicurezza


Facebook & sicurezza nasce per informare gli utenti sui rischi che si celano dietro ad una piattaforma così vasta quale è Facebook. Al giorno d'oggi chiunque abbia un minimo di conoscenze, può creare una pagina di phising per rubare identità altrui e ottenere importanti informazioni personali. Verranno mostrati e spiegati i metodi utilizzati dai lamer per colpire gli utenti meno esperti e quali sono i semplici accorgimenti da applicare per evitare di incappare in queste trappole