Levysoft
  • Home
  • Portfolio
  • WordPress Plugin
  • Contattami

Dal 2004 il blog di Antonio Troise

RSS FeedTwitterFacebook
Dic 5 2008

Come scaricare da Rapidshare da riga di comando con Linux o Mac OS X

Posted by Antonio Troise
Tweet

Wget Rapidshare Alle volte può sembrare che, quando vengono proposte soluzioni a riga di comando, ci si voglia complicare le cose nonostante esistano decine di altri modi, molto più user friendly, semplici, efficaci e veloci. Vi starete chiedendo per quale motivo una persona vorrebbe scaricare un file da riga di comando piuttosto che usare una delle tanti utility grafiche e gratuite disponibili o, più semplicemente, usare il download manager del proprio browser, che qualunque esso sia, svolge già efficacemente il proprio lavoro?
Ebbene, la ricerca di queste soluzioni alternative avvengono semplicemente per necessità e non solo per il gusto di complicarsi la vita lanciandosi ogni volta in nuove sfide, o almeno è questo quello che accade a me!

Vi siete mai chiesti o vi siete mai trovati nella situazione di dover scaricare qualche file in parallelo? Ebbene, sicuramente avrete constatato un inevitabile rallentamento del sistema direttamente proporzionale al numero di download simultanei che vengono lanciati, sia perché, almeno in minima parte il processore deve gestire il trasferimento, sia perché la scrittura di più file contemporaneamente sull’hard disk (anche se in questo caso il concetto di simultaneità non è verosimile) impegnano il drive tanto da lasciare indietro le operazioni del sistema operativo.

Ebbene, la situazione potrebbe essere spiacevole se su quello stesso PC ci dovete lavorare. Ed è allora che vi viene in mente che forse potreste riutilizzare quel vecchio PC che non usate più, formattarlo, installarci sopra una qualsiasi distribuzione linux, e usarlo esclusivamente come Download Manager. Quindi, ogni qualvolta, vorrete scaricare un o più file da Rapidshare, basterà che vi colleghiate in telnet sul PC Muletto, aprite un file di testo, incollate le url dei file Rapidshare da scaricare, salvate il file e lanciate un piccolo script che eseguirà per voi tutto il lavoro, senza appesantire il sistema su cui state lavorando. Ovviamente, il sistema che adotterò, per essere il più leggero e flessibile possibile, non disporrà di una interfaccia grafica, bensì sarà esclusivamente a riga di comando, insomma da veri geek. Ma vi assicuro che questa è la soluzione inaspettatamente più semplice per risolvere il vostro problema di performance.

In questa sede, comunque, affronterò esclusivamente la soluzione che risolverà il problema di come scaricare un file da Rapidshare se si possiede un abbonamento Premium e quindi si potrà disporre di un utente e password che vi garantirà un servizio che può accettare più richieste di download contemporanee (anche se come vedremo più tardi ho deciso di non usarlo per non appesantire il vecchio PC Muletto) e che non richiede alcun tempo di attesa tra un download e il successivo.

Installare WGET

Per la mia soluzione userò wget, un potente comando per scaricare una pagina web o inviare richieste GET o POST, con o senza autenticazione. Se disponete di un sistema Unix/Linux, è molto probabile che lo troverete compilato e già pronto per essere eseguito. Se invece vi trovate su un sistema Mac OS X (Tiger o Leopard che sia), nonostante si abbia a disposizione nel sistema operativo una shell unix completa di tutti i maggiori comandi, l’unico a mancare sarà proprio wget. Ci sono alternative altrettanto valide, come curl o ftp (e, per chi se lo ricorda, anche lynx che col comando “lynx URL >dump.txt” è una variante alternativa), ma per i nostri scopi, wget è abbastanza flessibile e semplice tanto da essere necessario per creare il nostro script. Quindi, per chi non volesse passare per la fase di compilazione, qui potete scaricare la versione compilata per i sistemi Mac OS X 10.5.3 e superiori (quindi anche Tiger e Leopard): wget.zip. Una volta scaricato sarà già funzionante sul vostro sistema, ma per una installazione completa, lanciate questi comandi:

e se fosse necessario, eseguirte un

anche se nel file .profile della propria home directory dovrebbe già contenere il percorso settato, come qui mostrato:

Ora che abbiamo installato wget sul nostro sistema Mac, questo si comporterà a tutti gli effetti come un sistema Linux, quindi d’ora in poi non farò alcuna distinzione tra i due sistemi operativi.

Creare lo script – STEP 1

Per la creazione dello script ho preso spunto da my-guides.net e in questa sede mi dedicherò a spiegarne il funzionamento del codice adattato alle mie esigenze.

Rapidshare, per l’autenticazione, usa i cookie HTTP, dei file di testo inviati da un server ad un Web client (di solito un browser) e poi rimandati indietro dal client al server, senza subire modifiche, ogni volta che il client accede allo stesso server, e sono usati per eseguire autenticazioni e tracking di sessioni e per memorizzare informazioni specifiche riguardanti gli utenti che accedono al server.
Quindi, la nostra prima operazione, sarà quella di autenticarsi sul server Rapidshare e di salvare i cookie che mi permetteranno, in seguito, di scaricare qualsiasi file dal sito di hosting file.
Attensione, lo STEP 1, andrà eseguito solo una volta, perché i cookie, a meno che non si proceda alla loro eliminazione manuale, verranno salvati in una cartella della vostra home directory.

Il comando da lanciare è il seguente:

dove i parametri indicano:

  • –save-cookies: definisce dove salvare i cookies. Essendo dati più sensibili ho preferito creare un file nascosto (anche se ciò non garantisce la sicurezza del file)
  • –post-data: assegna il metodo POST (piuttosto che GET) per inviare al form di login i dati di username e password.
    –no-check-certificate: non richiede la validazione del certificato che restituisce il server (Se state usando una versione di wget precedente alla 1.10.2 l’opzione –no-check-certificate non è necessaria)
    -O: esegue il download della pagina html solo per ottenere i cookie e redirige l’output su /dev/null per non far comparire a video le righe del codice html.

Ovviamente, ricordatevi di sostuire USERNAME e PASSWORD con quelli del vostro account Rapidshare.

Creare lo script – STEP 2

Ora, ogni qualvolta dobbiamo scaricare un file da Rapidshare, dobbiamo digitare quanto segue:

dove il parametro -c si occupa di recuperare un eventuale download precedentemente interrotto che, quindi, ripartirò dal punto di arresto, mentre il parametro –load-cookies esegue un caricamento preventivo dei cookie precedentemente salvati per ottenere l’autorizzazione a scaricare, per poi, infine, dare in pasto la URL desiderata del file da scaricare. Però, nel momento in cui dovete scaricare più di un file, è evidente che dover scrivere ogni volta questa riga può essere noioso. Ecco perché ci troveremo a dover scrivere un piccolo script bash che automatizzerà il processo, dandogli in input le righe di un file urls.txt (che conterrà un file per ogni riga):

Salvate il codice sopra come file downloader.sh e rendetelo eseguibile con il seguente comando:

Ora copiate tutti i link dei file Rapidshare (uno per riga) che volete scaricare e incollateli nel file urls.txt. Quindi, per scaricare tutti i file, basterà digitare questo semplice comando:

Et Voilà! Il gioco è fatto e potete disporre di un sistema leggero, indipendente e autonomo per scaricare decine di file senza appesantire il vostro PC.

Scompattare un file RAR da riga di comando

Di solito i file su Rapidshare vengono compressi nel formato RAR e qualche volta sono anche protetti da password. Se volete completare l’opera, potete scaricare l’utility per riga di comando per Linux (o Mac) unRar 2.71 (ma esiste anche unrar della rarlab) e una volta decompresso

è possibile compilarlo entrando nella cartella unrar-2.71 appena creata e lanciando i comandi

Ora vi ritroverete il file eseguibile unrar nella directory /usr/local/bin/ e quindi accessibile da qualsiasi directory.

Tag:bash, curl, download, export, Linux, Mac os x, password, rapidshare, shell, unix, wget
CONTINUE READING >
0 comments
Lug 7 2008

Automatizzare le operazioni del cPanel da shell unix con i comandi wget, ftp e curl: download automatico del DB Mysql e monitorare la banda disponibile

Posted by Antonio Troise
Tweet

Il vantaggio di possedere un computer con Mac OS X è quello di avere sempre a disposizione, perché inclusa nativamente nel sistema operativo, una shell unix completa, per i più esperti, o Automator, per i meno esperti. Quest’ultimo strumento è una applicazione davvero potente perché consente di creare in maniera visuale, grazie ad un diagramma di flusso (workflow) e trascinando le azioni una dopo l’altra (drag & drop), programmi di automazione davvero complessi e articolati.

Ma dopo aver lavorato anni sui sistemi unix, avere sottomano una potente shell unix, è una tentazione di cui davvero non posso fare a meno. Infatti, con la semplice concatenazione di comandi (pipeline) come grep, sed e awk (altri comandi utili possono anche essere sort, uniq tail, head, cut e wc) in una sola riga, è possibile estrarre (scraping) informazioni da pagine web. Infatti, struttando il fatto che le pagine html sono, anche se in misura minora ad un più ordinato e formattato file xml, strutturate con i TAG, con pochi comandi è possibile fare del sano Web_scraping.

WGET

Il comando più potente da riga di comando per scaricare una pagina web o inviare richieste GET o POST, con o senza autenticazione è, come noto, WGET.
Per scaricare un file è possibile usare una sintassi tipo:

Ma la vera potenza di wget risiede nella possibilità di realizzare, con una sola riga di comando, un mirror ad un sito web.
Quindi per scaricare un intero sito in locale basta scrivere:

mentre, per scaricare solo una pagina con tutti i link interni:

Il problema è che sui sistemi MAC OS X, wget non è installato di default e, quindi, per chi non volesse passare per la fase di compilazione (anche se in giro esistono versioni già compilate per Tiger e Leopard) o, comunque, ha semplicemente la necessità di scaricare solo una file o una pagina web, allora è possibile usare una delle due alternative preinstallate su Mac OS X: ftp e curl.

FTP

Il comando FTP può essere usato anche per scaricare file HTTP.
La sintassi è molto semplice:

Come vedremo, in seguito, per i nostri scopi molto spesso il comando FTP è più che sufficiente per la maggior parte delle operazioni comuni.

CURL

CURL è un tool da riga di comando estremamente potente perché permette di scaricare in maniera molto flessibile ed automatizzata un qualsiasi numero di files da internet, secondo i protocolli HTTP o FTP, e di visualizzarli a schermo o di scriverli su disco.
La sintassi semplice, simile a quella dell’FTP, è:

In realtà la sintassi completa è:

Ma la vera flessibilità del comando nasce dalla possibilità di usare nella sintassi dell’URL le parentesi quadre per indicare una serie di URLs incrementali.
Per esempio una sintassi tipo:

creerà in modo automatico tutti gli URLs compresi nell’intervallo numerico specificato, e scaricherà in successione i file corrispondenti. Ai files sull’HD verrà assegnato il nome specificato dopo la flag -o, usando l’indice #1 per creare nomi univoci, incrementati allo stesso modo della sorgente.
In poche parole la singola riga di cui sopra equivarrà ad aver digitato in successione tutti i comandi:

Attenzione: il flag -O dell’ultimo esempio differisce dal flag con la o minuscola usato in precedenza, in quanto per nominare il file sul disco rigido usa lo stesso nome del file remoto.

La successione di URLs incrementali non deve essere necessariamente numerica, ma anche alfabetica, ad esempio [a-z]. Inoltre in uno stesso comando si possono combinare più indici incrementali (notate come nel nominare il file è possibile usare anche i due indici #1 e #2)

Monitorare la banda del proprio sito da riga di comando

Dati gli ultimi problemi di esaurimento della banda che hanno afflitto il mio sito, era evidente che una delle prime necessità che avevo era quello di monitorare costantemente la banda usata. Il problema è che, per farlo, dovevo ogni volta accedere al cPanel, il Pannello di Amministrazione del mio sito, dove, in un menu laterale, era possibile visualizzare la banda usata.

cPanel Bandwidth

Allora ho deciso di crearmi un semplice script che, scaricasse la pagina html del mio cPanel, andasse a selezionare, con il comando grep, la riga che conteneva la frase “Monthly Bandwidth Transfer” e attraverso due comandi awk (i file separator usati in Awk sono relativi alla mia pagina cPanel e potrebbero variare a seconda delle diverse versioni e configurazioni del pannello di controllo), estrarre la banda usata:

Come potete notare, per semplicità ho incluso, direttamente nella URL, lo username e la password per accedere al Pannello di Amministrazione. Questo è possibile solo perché il metodo di autenticazione del cPanel si basa su htpasswd ma ricordiamo che non è un metodo sicuro perché, oltre a lasciare memorizzati informazioni personali, nella barra degli indirizzi del proprio browser o nella history del terminale usato, si lasciano tracce anche nei vari proxy in cui si passa e nei log del webserver, oltre, come comunque avviene l’autenticazione classica se non passa per SSL, con un semplice sniffer.

Ci tengo a precisare che quello sopra illustrato è solo uno dei tanti modi per risolvere il problema: questo, in particolare, è il primo che mi è venuto a mente, forte delle decine di script shell realizzati negli anni. Ovviamente è possibile anche renderlo più complesso ed efficiente, parametrizzando username, password e url e, magari, notificando con una mail o con un messaggio a video (magari anche con Growl), quando la banda è prossima all’esaurimento. Il tutto ovviamente potrebbe anche essere inserito nel crontab di sistema in modo da girare ogni ora.

Per esempio, un metodo non ortodosso, sarebbe quello di visualizzare l’output non a video ma direttamente in TextEdit usando il comando open con le pipeline. Per farlo, ho riunito i tre comandi sopra elencati in un file bash di nome: monitora_banda.bash.
Quindi lanciando:

avremo questo risultato:

Output Textedit

Più in generale questo è il risultato del comando ‘open’ presente su Mac OS X.
Altri esempi, potrebbero essere:

Ma le possibilità, come vedete, sono infinite. Ma lo scopo di questo articolo era solo di illustrare alcuni metodi per automatizzare da riga di comando delle procedure. Il resto è lasciato all’inventiva di ciascuno di voi.

Download automatico del backup del DB Mysql

Il mio hosting non supporta il backup automatico del DB di Mysql perché non gestisce correttamente le schedulazioni di comandi da riga di comando. E’ per questo che ho realizzato un semplice script da inserire nel crontab, per scaricare quotidianamente il backup del proprio database.
Infatti, sempre nel cPanel, è presente una sezione “Backups” che permette di scaricare, manualmente e con un link statico, un full backup del sito, oppure un backup parziale del solo database Mysql o della sola home directory (il concetto esposto rimarrà comunque analogo per qualsiasi soluzione adottiate).
E’ evidente che, a questo punto, con un semplice comando, è possibile scaricare da terminale i backup:

Basterà quindi inserirlo (con il comando crontab -e) nel crontab (se non siete esperti potrete usare il Easy Crontab Creation Tool) in modo da fargli scaricare il backup del DB, per esempio, ogni giorno alle ore 11:30 del mattino:

Attenzione: come ogni comando da terminale, FTP (ma lo stesso vale se usate WGET o CURL) andrà ad operare nella directory corrente di lavoro, quindi se volete archiviare i file scaricati in una directory apposita, spostatevici preventivamente con il comando cd nome_directory.
Inoltre, dovete tenere presente che tutti i downloads andranno a scrivere lo stesso file e, quindi, ogni giorno ci si ritroverà con solo l’ultimo file scaricato. Se avete intenzione di tenere traccia di tutti i backup scaricati, dovrete rinominare il file, per esempio, aggiungendoci un suffisso come la data di download (realizzabile o con il comando curl o con uno script bash).

Tag:automator, awk, backup, banda, bandwidth, bash, cpanel, curl, database, download, ftp, grep, html, ksh, Mac os x, Mysql, password, sed, shell, unix, url, wget
CONTINUE READING >
5 comments
SeguiPrezzi - Risparmia con Amazon.it

Categorie

Commenti Recenti

  • Antonio Troise on UltraEdit: per i programmatori esigenti il miglior editor di testo per Windows, Mac OS e Linux
  • Fioredicollina on UltraEdit: per i programmatori esigenti il miglior editor di testo per Windows, Mac OS e Linux
  • Antonio Troise on UltraEdit: per i programmatori esigenti il miglior editor di testo per Windows, Mac OS e Linux
  • Emanuele on UltraEdit: per i programmatori esigenti il miglior editor di testo per Windows, Mac OS e Linux
  • Luca on iDatabase: la valida alternativa di Bento per macOS e iOS per i database personali

Meta

  • Accedi
  • Entries RSS
  • Comments RSS
  • WordPress.org

Friends Link

  • GamerTagMatch
  • SeguiPrezzi.it – Risparmia con Amazon.it
  • Trendy Nail

Seguimi su:

  • facebook
  • twitter
  • rss
Creative Commons License
Levysoft by Antonio Troise is licensed under a Creative Commons Attribuzione-Non commerciale 2.5 Italia License.
© Copyright 2004 - 2014 - Levysoft by Antonio Troise