Ordinare script ed eseguibili su Linux con una comoda directory

I sistemi operativi Linux sono eccellenti e versatili. Hanno una lista talmente lunga di pregi e vantaggi che qualcuno ci ha addirittura fatto un sito web. Elencarli tutti risulterebbe impossibile, tuttavia uno dei miei preferiti è la capacità di personalizzazione.

Che si tratti di aggiungere temi, indicatori sulla barra di stato, software o anche piccoli comandi (script) per effettuare compiti ripetitivi, c’è solo l’imbarazzo della scelta. Il terminale fornisce una interfaccia a riga di comando che può tornare utile a principianti ed esperti. Ve ne avevo parlato in passato: alcuni comandi sono molto semplici e si imparano in fretta.

I programmi e gli script

La maggioranza dei programmi su Linux è disponibile in comodi pacchetti, scaricabili direttamente dal gestore pacchetti (o “centro software”, oppure altri nomi simili). Tuttavia esistono degli strumenti che vengono distribuiti come eseguibili da estrarre in una cartella e lanciare subito.

Alcuni sono software un po’ di nicchia, come ad esempio K2pdfopt. Si tratta di un eccellente programma open source in grado di reimpaginare completamente un PDF anche scannerizzato e ottimizzarlo per un lettore ebook o uno smartphone. Altri sono programmi molto più conosciuti e “grossi” come l’IDE Eclipse.

Esistono poi innumerevoli script sparsi in giro per il web. Queste vere e proprio gemme si trovano solitamente su siti e blog specializzati e possono essere sotto forma di script già pronti oppure di un elenco di comandi Linux. Nel secondo caso basta metterli in un file con estensione sh e renderli eseguibili per poterli richiamare ogni volta.

Per esempio, potreste essere interessati a un metodo per pulire le tracce di Wine. Cercando sul web trovate questo mio articolo e lanciate i 5 comandi. Per evitare di cercarli di nuovo e copiarli ogni volta, potete creare un semplice file chiamato cleanwine.sh con il seguente contenuto:

#!/bin/bash
rm -rf ~/.config/menus/applications-merged/wine-*
rm -rf ~/.local/share/applications/wine*
find ~/.local/share/icons/ -name "*wine*" | xargs rm -rf
rm -rf ~/.local/share/desktop-directories/wine-*
rm -rf ~/.wine*

In sintesi, dovete includere i comandi desiderati preceduti da una riga chiamata shebang, che specifica quale shell deve essere eseguita. Il file non ha ancora il permesso di essere eseguito. Ciò si può risolvere da terminale, dando:

chmod +x cleanwine.sh

Oppure cliccando col destro e accedendo alle proprietà del file, alla scheda permessi.

Questo lo potete fare con molti altri comandi che trovate in rete, per evitare di ricordare a memoria sequenze lunghissime e impossibili da ripetere senza errori. Esistono naturalmente anche esempi più complicati, come i comandi che richiedono parametri (se agiscono su file o altro). Il mio era solo un esempio, ci vorrebbe un altro articolo per trattare approfonditamente tutto ciò.

Lo stesso discorso vale per molti script in Python formati da un singolo file, come ad esempio il mio script per usare il servizio gratuito di VPNGate.

Lanciare i propri script o programmi

Quello che abbiamo visto finora è bello e interessante, sorge però un problema. Voi potete avere scaricato k2pdfopt o altri eseguibili, oppure potete aver scritto (o salvato dal web) qualche script come cleanwine.sh. Però il vostro sistema non sa che esistono. Intendo dire che, provando a lanciare un comando da terminale, otterrete un errore:

$ k2pdfopt
k2pdfopt: comando non trovato

Finché è uno solo, va bene anche richiamare il percorso completo, supponendo di aver dato i permessi di esecuzione:

/home/andrea/Scaricati/k2pdfopt # oppure ~/Scaricati/k2pdfopt

Questo però non è pulito. Immaginate di avere anche 4-5 script o eseguibili: intasereste qualche cartella adibita ad altro (per esempio Scaricati) e poi dovreste ricordare l’intero percorso ogni volta. Impraticabile.

La soluzione è creare una o più directory in cui mettere gli script e poi “informare” il vostro sistema della sua esistenza.

Organizzare tutto con una directory

Con questa guida intendo spiegarvi l’organizzazione che utilizzo io. Ovviamente potete variarla e adattarla alle vostre esigenze. Sul mio portatile, ho creato nella home una cartella chiamata bin, che contiene anche altre sottocartelle:

$ ls -1d ~/bin/*/
/home/andrea/bin/eclipse/
/home/andrea/bin/sage/
/home/andrea/bin/script/

In sintesi, ho una directory dove ho estratto l’ultima versione di Eclipse, una dove tengo installato Sage e una cartella dove tengo due dozzine di script di vario genere. Ho anche qualche altro software che non ho incluso nell’output, per evitare confusione.

L’idea di base è semplice: includere la maggior parte degli script (in Bash e in Python) dentro a script, alcuni eseguibili come k2pdfopt direttamente in bin e i programmi grossi nelle proprie directory. Qualunque eseguibile o script messo dentro a una di queste cartelle deve poter essere richiamato dal terminale scrivendone il nome.

Una volta organizzata la struttura di cartelle e inseriti i vari script o programmi, è il momento di rendere tutto ciò “visibile” dal terminale.

Aggiustare il PATH

La shell della vostra distribuzione Linux è in grado di riconoscere i comandi che digitate perché sa dove andarli a cercare. Per esempio, se digitate who e premete Invio, il sistema cercherà tutte le cartelle nel PATH fino a trovare un programma che si chiami esattamente così. Il programma (probabilmente /usr/bin/who) viene quindi eseguito.

Qui entra il gioco la personalizzazione: possiamo aggiungere le nostre directory e richiamare gli script e gli eseguibili scaricati. Per farlo, vi basta aprire il file .bashrc nella vostra cartella home.

Due cose a cui fare attenzione:

  • Sto supponendo che la vostra versione di Linux usi Bash come shell predefinita, se non siete sicuri al 99% è così. Gli utenti esperti possono modificare la propria shell e usarne una alternativa.
  • Il file da modificare è nascosto (inizia con un punto), perciò dovrete attivare la visualizzazione dei file nascosti per poterlo individuare. Su alcuni gestori di file, come quello di Ubuntu, si può fare anche premendo Ctrl+H mentre siete nella cartella home.
  • Queste modifiche valgono solo per il vostro utente. Gli altri utenti del sistema non noteranno differenze.

È necessario aggiungere alcune righe in fondo. Magari mettete anche un paio di righe bianche per separare il contenuto precedente da quello aggiunto da voi. In particolare sono una per directory:

# Percorsi aggiunti al PATH
export PATH=$PATH:~/bin
export PATH=$PATH:~/bin/script
export PATH=$PATH:~/bin/sage

Non ho aggiunto Eclipse perché non mi interessa richiamarlo da terminale, ma solo tenerlo in una cartella “in ordine”. Come potete vedere, stiamo ridefinendo il PATH aggiungendovi un separatore (due punti) e la directory desiderata. Ne mettiamo una alla volta per comodità.

Ricordate di modificare il mio esempio, non copiatelo così com’è. Un paio di osservazioni:

  • Se non usate Sage o se avete predisposto altre cartelle, adattate le righe di conseguenza.
  • La tilde serve a rappresentare il percorso della vostra cartella home.

Ora dovreste chiudere il terminale e riaprirlo. Qualsiasi script o eseguibile messo nella cartella bin o in un’altra di quelle che avete elencato potrà essere richiamato con il relativo nome.

Alcuni consigli

Aggiungendo altri programmi potrebbe capitarvi di creare altre sottodirectory, e queste non sono incluse nel PATH. Potete modificarlo ogni volta, oppure mettere un collegamento simbolico all’esegubile principale nella cartella bin: questo in genere funziona bene con i programmi in Java.

Un esempio è jPdf Tweak, un altro software per modificare i PDF. L’ho scaricato in questo percorso:

~/bin/jpdftweak-linux-x64-1.1

Poi però l’ho collegato nella directory principale, per evitare di dover modificare la mia configurazione:

cd ~/bin/
ln -s jpdftweak-linux-x64-1.1/jpdftweak.jar .

Ciò potrebbe non funzionare per alcuni software, provate caso per caso. Ecco come appare attualmente la mia directory per gli script e gli eseguibili:

Esempio di contenuto della directory predisposta
Esempio di contenuto della directory predisposta

Per quanto riguarda i programmi che hanno interfaccia grafica, può essere utile creare un’icona per il menu. Il lanciatore va inserito in:

~/.local/share/applications

Deve inoltre avere una estensione .desktop. Eccovi un esempio del contenuto del mio file jpdftweak.desktop:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=jPdf Tweak
Icon=/home/andrea/bin/jpdftweak-linux-x64-1.1/icons/icon256.png
Path=/home/andrea/bin/jpdftweak-linux-x64-1.1/
Exec=jpdftweak.jar

Ovviamente i campi vanno adattati al caso specifico.

Spero di aver fornito una spiegazione esauriente per creare una propria directory dove immagazzinare gli script e i file binari. Chiaramente queste istruzioni rispecchiano le mie personali preferenze, altri potrebbero usare metodi differenti.

Se avete dei suggerimenti a questo proposito o volete condividere la vostra organizzazione in questo ambito, lasciate un commento. 🙂

Uno script in Bash per visualizzare le dirette Rai con Linux

Nei meandri della rete a volte si nascondono delle vere e proprie gemme. Un lettore mi ha recentemente segnalato questa, indicata nel blog di Andrea Ferroni in un articolo anche un po’ vecchiotto, eppure bella e funzionante. Cito testualmente:

Installate, se non li avete già, i pacchetti mplayer e xmlstarlet. Scaricate questo script sul vostro computer, rendetelo eseguibile e rinominatelo da “rai.txt” a “rai”. A questo punto eseguitelo da console e vi comparirà l’elenco dei canali. La procedura, per chi ha Ubuntu, Debian o derivate, è:

sudo apt-get install mplayer xmlstarlet
wget -O rai http://fabrizio.zellini.org/magick/rai.txt
chmod +x rai

Per vedere RAI1, ad esempio, è sufficiente lanciarlo come ./rai 1, per RAI Sport ./rai sport.

Aggiungo anche che se non lo avete dovete installare pure curl, come mi è stato segnalato nei commenti. Lo script è stato realizzato da Fabrizio Zellini e nella sua semplicità è geniale: usa gli stream della Rai indicando gli header necessari a convincere il server che “va tutto bene” e quindi si visualizzano le dirette con Mplayer. Il risultato è una aggiunta perfetta al mio script che consente invece di vedere i video on demand del medesimo sito.

Una mia nota personale: se nel codice dello script cambiate il comando da mplayer a gnome-mplayer (posto che abbiate installato quest’ultimo) avrete la possibilità di usare una GUI un po’ più ricca e che consente di impostare il rapporto di aspetto e cose simili. 😉

È anche questo il bello del software libero: l’unione fa la forza!

Via Visualizzare gli stream delle trasmissioni RAI senza Silverlight « Informatiche {bubbakk}.

Scaricare video in formato Silverlight (Smooth Streaming) con Mac OS X

Prima di passare al tema vero e proprio dell’articolo, permettetemi di fare una dovuta premessa. Anche se il post lo sto scrivendo io, quanto è contenuto non sarebbe stato possibile senza il fondamentale contributo di Fabio Rachello, un amico e compagno di studi che — oltre a essere anche utente Mac — ha avuto la pazienza di sopportarmi per il tempo necessario a costruire e testare la procedura in questione. Grazie Fabio!

Passando allo Smooth Streaming, vi avevo già raccontato come la tecnologia Silverlight si sia diffusa sui siti delle principali TV (Rai e Mediaset) e non solo. Nello stesso post presentavo una spiegazione sull’uso di Wine, un software per Windows e un mio script al fine di poter salvare questi flussi con Linux. Dato che sto lavorando ad un post “più ampio”, con indicazioni generiche su come individuare e salvare i video dalle pagine web, mi sembrava un peccato avere raccolto istruzioni su tutto tranne che sul download di video in Smooth Streaming da Mac.

Per questo motivo, ho deciso di fare un piccolo off-topic e dedicare questo articolo a chi vorrebbe salvare video Smooth Streaming su Mac, in particolare vi fornisco un’ottima soluzione per utilizzare ISMdownloader su Mac OS X. Ciò va a chiudere il cerchio: il programma, pur essendo nato per Windows, lo possiamo adoperare su tutti i principali sistemi operativi. Questo senza dover chiamare in causa software come Jaksta, che oltre ad essere a pagamento, ha un supporto alquanto discutibile a questo tipo di stream.

Installazione e utilizzo

Installare Wine e configurarlo è un po’ meno semplice usando Mac OS X rispetto a Linux, e probabilmente gli utenti Apple sono meno abituati a questo software. Perciò io e Fabio abbiamo predisposto un “mega-pacchetto” che contiene al suo interno Wine, il finto disco C: configurato con l’ambiente .Net e ISMdownloader. A questo si aggiunge il mio piccolo script, che è sostanzialmente identico a quello per Linux e vi consente di usare ISMdownloader in modo “trasparente” e facile.

Per installare il tutto ci sono sostanzialmente tre cose da fare:

  1. Scaricare il file zip da questo indirizzo ed estrarre il file .app contenuto all’interno, mettendolo tassativamente nella cartella del vostro profilo utente (per esempio /Users/nomeutente) oppure una sottocartella.
    Importantissimo: non mettetelo nella cartella Applicazioni del sistema né in cartelle che contengano uno spazio nel nome. Altrimenti non funziona… Poi non dite che non siete stati avvisati. 😉 Il file .app in questione è solo il contenitore di Wine, non cercate di avviarlo cliccandoci sopra perché non succederà nulla.
  2. Salvare lo script, che si trova qui. Si tratta del file smooth.sh, cioè il mio wrapper per usare ISMdownloader. Vi consiglio di salvarlo nella cartella del vostro profilo utente (così è più semplice da richiamare) altrimenti ricordatevi il percorso in cui l’avete salvato.
  3. Dare i permessi di esecuzione, ovvero dire a Mac OS X «questo è un programma, non un file di testo qualunque». Lo potete fare usando il terminale (che per i meno pratici si trova in Applicazioni > Utility > Terminale.app). Ricordatevi che il terminale servirà anche dopo. Il comando da dare è il seguente (aggiustate le istruzioni col percorso corretto al file smooth.sh se l’avete salvato in una cartella diversa da quella che vi ho consigliato io):
    chmod +x smooth.sh

A questo punto è tutto pronto, vi basta procurarvi il link di un Manifest di un video in formato Smooth Streaming (per esempio scovando quelli di Video Mediaset) e lanciare lo script. Questo troverà automaticamente ISMdownloader.app nella vostra cartella utente e si occuperà di lanciare il programma. L’uso è molto semplice, la struttura del comando è la seguente:

./smooth.sh "http://url/del/manifest" "nome"

Anche per il nome del file vi consiglio di evitare gli spazi. Vi basta aspettare finché non leggete che ha finito, verrà poi aggiunta automaticamente l’estensione MKV (Matroska) ai video e potrete guardarli usando un player come VLC.

Lo script in azione con una clip de "i Cesaroni" da Video Mediaset
Lo script in azione con una clip de “i Cesaroni” da Video Mediaset

Ultime precisazioni

Ovviamente valgono le stesse limitazioni dette per quanto riguarda Linux. Il download non si può mettere in pausa e in qualche video ci sono piccole macchioline nere che compaiono ogni tanto, ma tutto sommato si vede bene nel complesso. A questo va aggiunto che il file dell’applicazione è un po’ “pesantino” ma tutto sommato non dovrebbe stupire, perché contiene tutto Wine e il software già configurato, che altrimenti avreste dovuto installare a parte.

Resta il fatto che in rete non si trova nessun’altra informazione sull’uso di ISMdownloader su Mac OS X e se non altro ora il download dei filmati in alta qualità da Video Mediaset (e non solo) non è più un sogno. Presto pubblicherò anche la guida “generica” per scovare gli URL dei video online e scaricarli, portate ancora un pochino di pazienza. 🙂

Aggiornato Slideshare Downloader

Dopo un bel po’ di tempo ho ripreso in mano Slideshare Downloader e l’ho aggiornato. Ora potete riprendere ad utilizzarlo e non ha più bisogno di swfdec! 😉

Scaricare il file originale probabilmente è impossibile, ma il mio script usa un approccio diverso… Se non posso scaricare la presentazione, la posso almeno “fotocopiare”. Di fatto scarica ogni singola slide in formato JPG, cioè una semplice immagine. È questo il tipo di dato che viene presentato a chi naviga con un dispositivo mobile.

via Slideshare Downloader: script per scaricare facilmente le presentazioni da Slideshare.

Scaricare facilmente video con tecnologia Silverlight (Smooth Streaming) in Linux

È già da un po’ di tempo che se ne parla, i siti di alcune delle maggiori televisioni (Rai e Mediaset) utilizzano la tecnologia Silverlight per pubblicare molti video che si possono (ri)vedere online. Si tratta di un sacco di programmi, fiction, telegiornali, eccetera forniti direttamente dalle suddette reti televisive, quindi si tratta di uno streaming perfettamente legale.

Il problema è che Silverlight è una tecnologia proprietaria di Microsoft che non è molto ben supportata da Linux. È vero, esiste il progetto Moonlight (sostanzialmente fermo), il quale però non supporta a pieno la riproduzione dei video di questi portali. Inoltre non è possibile scaricare le puntate offerte con tecnologia Smooth Streaming allo stesso modo in cui si fa solitamente con i siti che pubblicano video in Flash. Perciò tutto questo complica usi perfettamente legittimi (e prevedibili) dei video, come ad esempio poterli guardare in treno senza avere un computer con connessione 3G.

Per Linux esiste un progetto chiamato smooth-dl, realizzato da Antonio Ospite, un prolifico sviluppatore di software libero. Per i dettagli sul progetto e la tecnologia di Smooth Streaming, vi rimando al suo articolo che è scritto molto meglio di quanto potrei fare io.

Smooth-dl è però ancora in uno stato “non perfetto”, nel senso che non supporta tutti i siti che offrono video con questa tecnologia, ma lavora bene con il sito Rai. Esiste un software più completo chiamato ismdownloader, che però è realizzato per Windows. Perciò ho deciso di realizzare uno script che “maschera” il programma sotto Wine, e arricchisce la visualizzazione dello stato del download calcolando la percentuale rimanente e mostrandola a video. Di seguito vi spiegherò come effettuare la prima configurazione e poi usare lo script. Se volete fare la stessa cosa usando Mac OS X leggete la guida dedicata.

Creare l’ambiente Wine

Per evitare di “far confusione” e mischiare il programma che useremo per il download con altri eventuali software che girano sotto Wine, vi farò creare un “contenitore” personalizzato con una copia a se stante del disco “C:” simulato. Per prima cosa quindi nel terminale create la directory, dichiaratela come il prefisso di Wine che andrete ad utilizzare e poi “forzate” Wine all’uso dell’architettura a 32bit:


mkdir -p $HOME/.smoothwine
export WINEPREFIX=$HOME/.smoothwine
WINEARCH=win32 winecfg

Appena finisce di creare la configurazione e vi apre la finestra di Wine, potete chiuderla e proseguire. A questo punto vi servirà Winetricks, che solitamente (perlomeno su Ubuntu) viene installato assieme a Wine, altrimenti provvedete ad installarlo dal vostro gestore di pacchetti. Winetricks si occuperà di scaricare l’ambiente .Net Framework, che servirà poi ad eseguire il programma per il download vero e proprio dei video:


winetricks dotnet20

Seguite la semplice procedura nella finestra che si aprirà e .Net verrà installato. Ora non vi resta altro da fare che cliccare questo link e salvare il file EXE, per poi copiarlo nella cartella che potete aprire usando questo comando:


xdg-open $WINEPREFIX/drive_c

Questo termina la configurazione di Wine. Giunti a questo punto potete procurarvi una copia dello script smooth.sh col comando seguente, che lo salva nella vostra cartella home:


wget "http://cl.ly/code/3d063j2H1p1M/smooth-lin.sh" -O $HOME/smooth.sh
chmod +x $HOME/smooth.sh

Ovviamente se volete potete spostarlo dove vi pare, l’importante poi è richiamarlo correttamente.

Scaricare i video in Smooth Streaming

La parte di configurazione di cui sopra andrà fatta solo la prima volta, in seguito potete limitarvi all’utilizzo dello script come segue. Supponendo che lo script sia nella vostra home e la vostra directory corrente nel terminale sia altresì la medesima cartella, potete semplicemente richiamarlo come segue:


./smooth.sh "http://url/del/manifest" "nome"

Il primo parametro sarà l’URL del cosiddetto file “manifest” relativo al video. Qui viene il problema: ogni pagina web avrà un manifest diverso, e il metodo per ricavarne l’URL varia da sito a sito. Per questo motivo non posso dirvi dettagliatamente come fare a trovarlo in generale, perché la spiegazione sarebbe molto lunga. Per certi siti come quelli di Rai e Mediaset ci sono già delle indicazioni in rete, in ogni caso questo sarà oggetto di un mio prossimo articolo, dedicato appositamente a scovare gli URL dei video online.

Il secondo parametro è il nome (preferibilmente senza spazi) desiderato per il file video (senza estensione). Una volta terminato il download, il video verrà salvato nella vostra home con estensione MKV. Sebbene il contenitore sia Matroska, la codifica vera e propria di audio e video dipende soltanto dal sito web da cui scaricate, quindi potrebbe variare. In ogni caso con VLC e gli opportuni codec dovreste riuscire a visualizzare tutto e potete sempre convertire i video con Arista Transcoder.

Esempio di utilizzo dello script con una puntata di "Ris Roma" dal sito Video Mediaset
Esempio di utilizzo dello script con una puntata di “Ris Roma” dal sito Video Mediaset

Note finali

Come ogni cosa, anche lo script ha i suoi limiti. Il download non si può mettere in pausa, perché il programma originale non lo permette, e ogni tanto succede che l’eseguibile sotto Wine vada in crash. In generale comunque funziona bene, e avendo aggiunto il calcolo della percentuale (non presente in origine) penso di averlo reso abbastanza gradevole anche dal punto di vista estetico. La codifica del video finale è un po’ un terno al lotto, ma quasi sempre non crea nessun problema con VLC.

L’unico difetto visibile dei video è la presenza sporadica di lievissime macchioline nere, ma a dire il vero non so se imputare la cosa al programma che si occupa del download oppure al sito web che fornisce i video. In definitiva comunque i risultati sono buoni e con una risoluzione niente male. Il prezzo da pagare è l’uso di Wine e di qualche componente proprietario, ma d’altronde abbiamo a che fare con tecnologie Microsoft ed è difficile evitarlo del tutto.

Un’altra cosa (facilmente sistemabile) è che gli MKV prodotti possono dare problemi con l’avanzamento veloce e il riavvolgimento. Leggete questo articolo per sapere come risolvere. 😉

Spero di poter finire presto anche il post dedicato a “scovare gli URL” in modo da poter completare questa serie di articoli sul salvataggio dei video, che sembrano essere i più gettonati nel blog. Che ne pensate dello script? Vi tornerà utile?