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.

Come cancellare l’history della bash

Se abbiamo la necessità di cancellare completamente l’history, vale a dire lo storico dei comandi che abbiamo impartito attraverso la shell, possiamo utilizzare il builtin history così:

history -c Se siamo un pochino paranoici ma non vogliamo privarci della comodità di avere quantomeno l’history per la sessione corrente, possiamo decidere di cancellare tutto una volta chiusa la shell.
Per cancellare l’history al logout dobbiamo aprire (o eventualente creare) nella nostra directory home il file .bash_logout
vi ~/.bash_logout E aggiungerci esattamente lo stesso comando che abbiamo visto prima history -c

Catturare screenshot da riga di comando

Oltre a registrare screencast, dalla riga di comando è anche possibile catturare singole schermate, per farlo è necessario il comando import, che fa parte della suite ImageMagick.

Per salvare un’immagine di tutto lo schermo dobbiamo aprire una finestra di terminale e digitare
import -window root nome-a-caso.pngPossiamo anche salvare schermate di un server remoto, ed è qui, a mio avviso la realte utilità del comando. Se siamo collegati in remoto il comando sarà leggermente diverso e useremo l’opzione -display
import -window root -display :0 nome-a-casso.pngNOTA: il server remoto ovviamente deve eseguire una sessione grafica!

Con import si può scegliere di salvare screenshot di una singola finestra, per poterlo fare occorre conoscere l’id della finestra. Ecco come fare:

  1. Per prima cosa si lancia xwininfo e si seleziona la finestra. Otterremo una grande quantità di informazioni, quella che ci interessa è il Window id, copiamolo e usiamolo così con import.
  2. import -window 0x3200008 test.png

Eliminare il box di ricerca dai video di Youtube

Da qualche giorno vi sarete accorti che sui video embeddati da Youtube è comparso un box di ricerca. A me piace davvero poco. Peraltro non mi sembra che abbia molto senso mostrarlo all’inizio di un video.
Fortunamente esiste la possibilità per eliminarlo: basta aggiungere l’opzione &showsearch=0 al fondo della stringa che identifica il video. Vediamo un esempio:


In questo caso la stringa che identifica il video è:

embed src="http://www.youtube.com/v/XSXoap2h3Mw&hl=it&fs=1"

Linkiamo ora la seconda parte del video, un tutorial su Vim, questo volta però, nascondendo il box di ricerca.


In questo caso la stringa diventa

embed src="http://www.youtube.com/v/dsKGMxoydCc&hl=it&fs=1&showsearch=0"

Il modo più semplice per sapere su quale distro stiamo lavorando

Ho scoperto casualmente un comando che potrebbe tornare utile in diverse occasioni, il primo esempio che mi viene in mente è uno script che debba comportarsi in maniera diversa su distribuzioni diverse.
Il comando è questo:
lsb_release -is
Il risultato potrà essere ad esempio: Debian, Ubuntu, SUSE LINUX, CentOS ecc. ecc.
Con -i chiediamo l’identificativo per la distribuzione, mentre con il -s abbiamo scelto di avere un output short, senza intestazioni.

Altre opzioni interessanti sono:

  • -r per stampare il numero di release
  • -d che mostra una breve descrizione della distribuzione
  • -a che mostra tutte le informazioni disponibili