Autojump: per zompare da una cartella all’altra

Autojump è uno di quei giochetti che una volta scoperti diventano essenziali e mancano tantissimo quando si finisce su una macchina che ne è sprovvista. In pratica, una volta installato, potrete anche scordarvi a cosa serve il comando cd.

Installarlo su Ubuntu 18.04 LTS è semplicissimo:

sudo apt-get install autojump

Ci manca ancora un passaggio per poterlo utilizzare in Bash: dobbiamo aggiungere la riga che segue al fondo del file .bashrc presente nella nostra home directory.

. /usr/share/autojump/autojump.sh

Riavviamo la sessione e vediamo se funziona tutto.

Per zompare in una cartella che contiene foo nel nome, a prescindere da dove si trovi e a patto che sia già stata visitata:

j foo

Bash completion per Vagrant

Siccome la prima virtù del buon sistemista deve essere la pigrizia, configuriamo l’autocompletamento per Vagrant in Bash. Per qualche strano motivo, pur essendo incluso nella distribuzione, il file non viene attivato.
Facciamolo noi.

cd /etc/bash_completion.d/
sudo cp /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/contrib/bash/completion.sh .
sudo mv completion.sh vagrant

Riavviamo la sessione e dovrebbe funzionare tutto correttamente.

Pingare più host con un solo comando

Poniamo il caso di avere la necessità di pingare più host, dove per “più host” potremmo anche intenderne 40,50 o un’intera classe C. Se non capite a cosa possa servire, probabilmente non vi serve. Nessun problema. Se invece vi è capitato di avere questa necessità, la soluzione si chiama fping.

Se gli host che vogliamo pingare non hanno indirizzi consecutivi dovremo crearci un file di testo da passare come argomento al comando. Ad esempio creiamo il file ip_address con un indirizzo per riga, come questo:

10.102.0.1
10.102.0.2
192.168.1.1
192.168.2.1
192.168.2.2

Ora per pingare tutti gli ip basterà usare il comando

fping -f ip_address

Se vogliamo ricevere in output solo gli ip degli host irragiungibili dobbiamo aggiungere lo switch -u (unreachable)

fping -u -f ip_address

Per pingare un’intera classe C il comando sarà

fping -g 192.168.1.0/24

Useremo lo switch -g anche per indicare a fping un intervallo, come in quest’esempio

fping -g 192.168.1.10 192.168.1.100

Installare Dropbox su Red Hat e CentOS 5.3


Se si usano postazioni diverse (e magari sistemi operativi diversi) Dropbox è uno strumento assolutamente essenziale.

Vediamo come installarlo su RHEL e CentOS 5.3 Per prima cosa dobbiamo risolvere un po’ di dipendenze sudo yum install bzip2 wget make gtk+-devel libnotify-devel nautilus-extensions nautilus-devel gnome-vfs2-devel compat-glibc-headers compat-glibc gnome-desktop-devel Molto probabilmente alcuni di questi pacchetti saranno già presenti. Creiamo ora, se non esiste già, una sottodirectory nella nostra home che chiameremo bin e scarichiamo dbcli.py, lo script che lancerà l’installazione vera e propria. mkdir -p ~/bin; cd ~/bin; wget https://dl.getdropbox.com/u/43645/dbcli.py Convertiamo il file per Unix dos2unix ~/bin/dbcli.py; chmod +x ~/bin/dbcli.py Ora aggiungiamo “25” al fondo della prima riga del file, in modo che risulti così: #!/usr/bin/python25 Ora dobbiamo scaricare Python 2.5 da questo sito, i pacchetti sono fatti in modo da non sovrapporsi alla versione di ufficiale di Python distribuita da Red Hat (o CentOS) di conseguenza si possono installare con una certa tranquillità.
mkdir -p ~/tmp/python25; cd ~/tmp/python25; for PACKAGE in python25-2.5.1-bashton1.i386.rpm python25-debuginfo-2.5.1-bashton1.i386.rpm python25-devel-2.5.1-bashton1.i386.rpm python25-libs-2.5.1-bashton1.i386.rpm python25-test-2.5.1-bashton1.i386.rpm python25-tools-2.5.1-bashton1.i386.rpm tkinter25-2.5.1-bashton1.i386.rpm; do wget http://mirrors.geekymedia.com/centos/$PACKAGE; done Installiamoli cd ~/tmp/python25 && sudo yum --nogpgcheck localinstall *.rpm Ora c’è tutto quello che serve. Non ci resta che lanciare lo script python, se il sistema è a 64bit dobbiamo sostituire “x86” con “x86_64” ~/bin/dbcli.py install x86 Finito. Dovremmo avercela fatta e l’icona dovrebbe comparire nel Pannello di Gnome.


Non ci resta che abilitare l’avvio automatico a ogni login. System » Preferences » More Preferences » Sessions e aggiungere /home/nostroutente/.dropbox-dist/dropboxd Come nell’ immagine seguente


Via | Dropbox wiki

Ottenere informazioni su un modulo del kernel

Breve viaggetto speleologico al centro di Linux.

Problema: voglio sapere qual è la versione in uso del driver della scheda di rete wireless.
Soluzione: da riga di comando uso modinfo così: modinfo nomedelmodulo Nel mio caso modinfo rt2860sta E questo è l’output filename: /lib/modules/2.6.31-12-generic/kernel/drivers/staging/rt2860/rt2860sta.ko
version: 1.8.1.1
license: GPL
srcversion: 1C1D2752CED2C3EC1543E1D
alias: pci:v00001A3Bd00001059sv*sd*bc*sc*i*
alias: pci:v00001814d00000781sv*sd*bc*sc*i*
alias: pci:v00001814d00000701sv*sd*bc*sc*i*
alias: pci:v00001814d00000681sv*sd*bc*sc*i*
alias: pci:v00001814d00000601sv*sd*bc*sc*i*
depends:
staging: Y
vermagic: 2.6.31-12-generic SMP mod_unload modversions 586
parm: mac:rt28xx: wireless mac addr (charp)

Controllare la posta in arrivo su GMail da riga di comando

Un’ altra dimostrazione della potenza della riga di comando di Linux e degli strumenti che su di essa si appoggiano.

Con la stringa che segue (che usa curl) è possibile controllare quali sono i messaggi ancora da leggere nella nostra casella GMail. Basta sostituire username con il vostro nome utente. Ecco il comando: curl -u username --silent "https://mail.google.com/mail/feed/atom" | perl -ne 'print "\t" if //; print "$2\n" if /(.*)/;' Ricordare tutta ‘sta roba non è semplicissimo, lo so, ma una volta copiata ed eseguita, basterà richiamarla dall’ history così !curl o creare un alias.

Redirigere standard output e standard error in /dev/null

Non sempre è necessario tenere traccia di tutto quello che succede durante l’esecuzione di un nostro script. Per annichilire tutti i messaggi di output e di errore la sintassi da utilizzare è questa:
./esempio.sh > /dev/null 2>&1 In pratica diciamo alla shell che vogliamo che lo standard output finisca in /dev/null e che lo standard error (file descriptor 2) finisca proprio là dove finisce lo standard output.