domenica 31 agosto 2008

Snoop, Tcpdump e l'AND

Per catturare del traffico ci sono vari tools; da CLI i più conosciuti sono senza dubbio Snoop e Tcpdump. Mentre il primo è incluso in Solaris e sviluppato da Sun, Tcpdump è un progetto open source e disponibile per essere compilato sui più disparati sistemi operativi.

In genere io uso Snoop, lo conosco abbastanza bene ed è disponibile subito e di default su qualsiasi release di Solaris.

Su Linux, però, non c'è ... quindi se non c'è già, mi aggiusto con tcpdump.
I due tools hano molte similarità, almeno per quanto riguarda logica, sintassi e per la definizione di porzioni specifiche del flusso di pacchetti da catturare tramite espressioni.

Oggi, mi son bloccato su un particolare:

dovendo catturare il traffico proveniente da 192.168.2.1 e destinato alla porta 514, con Snoop avrei digitato:
# snoop -d ce2 ip src 192.168.2.1 port 514
Quindi vado deciso, controllo che tcpdump sia installato e:
# tcpdump -i ce2 ip src 192.168.2.1 port 514
tcpdump: syntax error
Mmh ... chiedo in IRC, nei canali che frequento; la soluzione sta com'è ovvio, nella sintassi:
avevo già notato che ip src e port usate una alla volta funzionavano, inoltre sapevo e mi sono sincerato guardando il man, che fossero keyword esistenti;
comunque ... Tcpdump, a differenza di Snoop, vuole l'AND, quindi:
# tcpdump -i ce2 ip src 192.168.2.1 and port 514
Funziona.
Snoop, comunque, accetta l'and, sebbene lo sottintenda se non specificato.
Da ricordare. Risolto.

sabato 30 agosto 2008

Camminando per Torino




Sulla mia città se ne sono dette di tutti i colori; tombini che sono porte degli inferi, posti che concentrano energie incredibili e chi più ne ha più ne metta; sicuramente è stata capitale dell'occulto e conserva molti particolari di questo anche per le sue strade.

Oggi, in Via dell'Arsenale, strada che ho percorso centinaia di volte, ho per la prima volta notato la bellezza di questo portone e ancor più dei gargoyle che reggono i lampioncini ai suoi lati.


La foto non rende giustizia, quindi potete andare ad ammirare di persona; si trova qui.

giovedì 28 agosto 2008

Raccolta scripts

Qui c'e' una raccolta di scripts che mi port sempre dietro e che ho collezionato e/o scritto col tempo. Son quasi tutti miei, quindi la qualita' non e' ottima, ma fano quello che devono fare. Alcuni sono piu' "generici" e adattabili al contesto, altri invece meno e sono difficilmente riciclabili; i contenuti cambiano col tempo, quando ho tempo li sistemo o aggiungo opzioni, quindi versiono e metto l'anno di produzione in tutti, in modo da riuscire ad aggiornarli piu' facilmente.

Alcuni contengono un help o commenti.

domenica 24 agosto 2008

Escapare caratteri speciali su Blogger

Nel post precedente dovevo digitare <<EOF ma non ci riuscivo. Veniva interpretato come tag errato. Dopo un breve ricerca ho trovato come fare l'escape di alcuni caratteri:

< diventa &lt;
> diventa &gt;
© diventa &copy;
& diventa &amp;
" diventa &quot;

Riassunti qua sopra. Grazie all'autore di Anilinux per il tip leggibile qui su Anilinux

sabato 23 agosto 2008

Eseguire comandi multipli in remoto via SSH

Bisogno di utilizzare una interfaccia grafica su un server remoto; capita sovente: si tratta di esportare il display dal server alla macchina dalla quale si sta lavorando. Oggi mi e' venuto in mente di automatizzare la procedura; ecco il risultato:
  • Prende due parametri, l'host e il comando da eseguire
  • Si collega, estrae l'ip dalla variabile SSH_CLIENT e aggiunge il numero del display
  • Dopo aver collezionato quanto gli serve si connette e esegue quanto desiderato. Il secondo parametro puo' consistere di qualsiasi comando, eseguibile o puo' essere vuoto
Interessante l'uso dell'EOF, preso da uno spunto letto in rete; a questo proposito e' da segnalare una cosetta: le variabili vanno trattate nel modo giusto perche' sia possibile l'uso corretto in remoto. A questo proposito e' necessario "escaparle" perche' non vengano parsate subito e vengano passate nel modo giustoAd esempio: la terza riga dal fondo stampa a schermo il valore di DISPLAY sul server remoto. Senza il \ davanti restituirebbe il valore che ha in locale.

#!/bin/bash
HOST="$1";
COMMAND="$2";
LOGINFROM=`ssh -q $HOST env|grep SSH_CLIENT|awk '{print $1}'|cut -f2 -d"="`
REMIP="${LOGINFROM}:0"
ssh -q $HOST <<EOF
export DISPLAY=${REMIP};
echo \$DISPLAY
$COMMAND
EOF

domenica 17 agosto 2008

Sun Cluster Proxy File System

Finalmente, sebbene in un blog, qualcuno in Sun ha deciso di spendere qualche parola e un pò di tempo per spiegarci qualcosa sul PXFS (Proxy File System) di Sun Cluster.

Si può leggere qui.

A q2uando la documentazione ufficiale?

giovedì 14 agosto 2008

Mount e l'opzione size

Una opzione di mount e' size. Questa option dipende dal filesystem in uso. Su Solaris, ad esempio, non e' disponibile con UFS, ma e' usabile con TMPFS. Offre quindi la possibilita' di decidere a boot-time la dimensione del tmpfs

Cosi':
# mount -F tmpfs -o size=1g swap /tmp
Oppure permanente:
# cat /etc/vfstab
swap - /tmp tmpfs - yes size=Xg

Ramdisk puro in Solaris

Come fare un ramdisk in Solaris? tmpfs, il pseudo filesystem utilizzato anche per lo swap, utilizza la Virtual Memory; in Solaris la Virtual Memory e' controllata dal sistema e utilizza la memoria fisica e le eventuali slices allocate per lo swap tagliate su uno o piu' dischi duri. Questo mix non e' gestibile, quindi questa non e' strada percorribile per avere un ramdisk puro. Inoltre un tmpfs non ha un device logico e non supporta la formattazione per spalmarci sopra qualcosa come UFS, QFS o VxFS.

Ramdisk, e' un driver del kernel Solaris, per creare block o raw devices in RAM. Con ramdiskadm e' possibile creare e distruggere ramdisks. Notare che per la creazione del ramdisk la RAM necessaria deve essere disponibile, pena messaggio d'errore e mancata creazione:
# vmstat
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr m0 m1 m4 m5 in sy cs us sy id
0 0 0 23058496 7046264 0 1 0 0 0 0 0 0 12 0 0 371 156 432 0 0 99
# ramdiskadm -a ramb 8g
ramdiskadm: couldn't create ramdisk "ramb": Resource temporarily unavailable
Creiamo:
# ramdiskadm -a rama 1g
/dev/ramdisk/rama

# ls -la /dev/ramdisk/rama
lrwxrwxrwx 1 root root 38 Aug 14 22:13 /dev/ramdisk/rama -> ../../devices/pseudo/ramdisk@1024:rama
1 # ls -la /dev/rramdisk/rama
lrwxrwxrwx 1 root root 42 Aug 14 22:13 /dev/rramdisk/rama -> ../../devices/pseudo/ramdisk@1024:rama,raw
Ci possiamo fare piu' o meno quello che ci pare; creiamoci su un normalissimo filesystem UFS:
# newfs /dev/rramdisk/rama
/dev/rramdisk/rama: Unable to find Media type. Proceeding with system determined parameters.
newfs: construct a new file system /dev/rramdisk/rama: (y/n)? y
/dev/rramdisk/rama: 2097000 sectors in 3495 cylinders of 1 tracks, 600 sectors
1023.9MB in 219 cyl groups (16 c/g, 4.69MB/g, 2240 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 9632, 19232, 28832, 38432, 48032, 57632, 67232, 76832, 86432,
2006432, 2016032, 2025632, 2035232, 2044832, 2054432, 2064032, 2073632,
2083232, 2092832
Montiamolo:
# mount /dev/ramdisk/rama /mnt

# df -n|grep "^/mnt"
/mnt : ufs
Creiamo un file e compariamo i tempi di creazione con quelli di un file identico creato su hard disk SAS:
*ramdisk ufs
# time mkfile 700m /mnt/700mega

real 0m5.368s
user 0m0.091s
sys 0m5.272s

*SAS interno ufs
# time mkfile 700m /FS/700mega

real 0m12.301s
user 0m0.081s
sys 0m2.907s

*FC array qfs
# time mkfile 700m /qfs_di_prova/700mega

real 0m5.866s
user 0m0.074s
sys 0m3.973s
La differenza nei tempi di creazione tra un disco interno al server SAS e il ramdisk e' ovviamente enorme; interessante vedere come sia necessario lo stesso tempo per la creazione del file su una lun residente su array FC, che fa il suo buon uso della sua cache.

Va bene! Gli usi possibili di un ramdisk sono tra i piu' disparati, diamoci da fare!

Filesystems about in linux e unix

Tra le altre cose, il comando df e' utile per conoscere il tipo di un filesystem.
Se su Solaris e' visualizzabile con:
# df -n
/ : ufs
/devices : devfs
/system/contract : ctfs
/proc : proc
/etc/mnttab : mntfs
/etc/svc/volatile : tmpfs
/system/object : objfs
/platform/sun4u-us3/lib/libc_psr.so.1: lofs
/platform/sun4u-us3/lib/sparcv9/libc_psr.so.1: lofs
/dev/fd : fd
/var : ufs
/tmp : tmpfs
/var/run : tmpfs
/dev/vx/dmp : tmpfs
/dev/vx/rdmp : tmpfs
/REPLICA_BACKUP : samfs
Su Linux:
# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda2 ext3 20161204 16495184 2641880 87% /
varrun tmpfs 387640 76 387564 1% /var/run
varlock tmpfs 387640 0 387640 0% /var/lock
udev tmpfs 387640 56 387584 1% /dev
devshm tmpfs 387640 0 387640 0% /dev/shm
lrm tmpfs 387640 39776 347864 11% /lib/modules/2.6.24-20-generic/volatile
/dev/sdb2 ext3 117188268 98941524 12293860 89% /mmedia
/dev/sda3 ext3 16247640 13169908 2252396 86% /extra
overflow tmpfs 1024 92 932 9% /tmp
Su Solaris e' possibile farlo anche con:

# ' fstyp /dev/vx/dsk/bootdg/rootvol
ufs

mercoledì 13 agosto 2008

Il mio cane e' qui

Oggi son andato a prendere da mia madre Rage, il mio cane, anzi cagna. Tra pochi giorni e' anche il suo compleanno ... infatti il 25 agosto compie ben 13 anni!!

Rage mi segna il passare del tempo ... ogni suo anno mi fa pensare a quanto tutto passi, ancor più del mio compleanno. La cosa interessante è che se Rage compie gli anni il 25, c'è Cristina che li fa il 24 e io il 26 agosto, che è anche il mio onomastico.

martedì 12 agosto 2008

Areanetworking: articolo QFS

Il mio recente blog sull'aggiunta di nuovi hosts a un filesystem QFS shared e' stato pubblicato su Areanetworking, del quale sono staff; era da una vita che non pubblicavo un articolo sul sito, e son contento di questo contributo ... magari mi dara' lo sprint per essere produttivo come lo ero qualche tempo fa (prima che le trasferte mi togliessero pure il tempo di allacciarmi le scarpe e stirarmi le camicie):

E' disponibile qui, contiene parte del blog rivisto e corretto e alcuni cenni di premessa su cos'e' QFS e com'e' composto

domenica 10 agosto 2008

Paradiso qua dietro



Son tornato venerdi sera, causa impegni familiari, in anticipo dalle vacanze alle Cinque Terre.
Alla fine ci siamo sistemati (io, Cristina e Dimitri, un amico) a Monterosso, in un carinissimo Bed & Breakfast stracolmo di americani (come del resto, ovunque, c'erano solo americani) che si puo' vedere qui . Punto di forza, padroni di casa piu' "user friendly" di Ubuntu e birra e vino alla spina giu' nel dehors!!! Dal balcone con tavolino dove la sera giocavamo a scopa e a Magic avevamo vista sull'intera cittadina. 5 giorni che penso ricordero' tra le migliori vacanze della mia vita. Non e' mancata la scarpinata Vernazza-Corniglia per il Coastal Path in ricordo dei vecchi tempi quando campeggiavo a Guvano (vestito pero'), oh che ricordi!! E che panorama!!
Ora ci metto la polemica, giusto per non far sembrare tutto bellissimo.
Da monterosso si parte in treno per Vernazza, tre minuti di tragitto che mi riportano alla mente la Torino-Milano (depressione). Dopo un bel bagno rigenerante a Vernazza si parte per il sentiero verso Corniglia; dopo una bella dose di scalini leggo qualcosa tipo:
"Checkpoint, controllo biglietti a 100 metri".
Io e Cri ci guardiamo ... proseguiamo.
Saliamo ancora, la cosa si fa faticosa, non me la ricordavo cosi' massacrante ... ed ecco che passiamo affianco a un ripostiglio a bordo sentiero che appena sorpassato fa uscire una testa di ragazzetto (probabilmente in stage "lavoro gratis" con rimborso spese di 50 euro al mese) che ci dice:
"Avete i biglietti, signori?".
"Che biglietti"
"Per l'ingresso al parco, 5 euro a testa"
"A cranio!!!"
"Si puo' anche fare 8.50 incluso il treno"
"Questa non me la ricordavo, ma da quand'e' che si paga il pedaggio"
Non risponde.
"Dammene due ... ... ... ... "

Ingresso al parco. Siamo messi sempre peggio, striscie blu a pagamento per il parcheggio fino a 1km in salita a picco da ognuno dei paesi del comprensorio ... come ovunque del resto.
Nessun servizio a corredo, se si eccettua qualche transenna sgangherata e qualche scalino in legno combinato malissimo, molto piu' pericoloso di quelli in pietra.
Ma soprattutto, io non pago gia' le tasse? Non conosco bene dove vanno a finire i miei soldi ma credo che il territorio, soprattutto quello che frutta, riceva una fetta della torta. Cosi' pago due volte? Se qualcuno volesse commentare su cio' benvenga.

Comunque ... e' stato splendido, ci voglio tornare e ve lo consiglio vivamente!

venerdì 8 agosto 2008

Files in uso ma rimossi: trovarli

Ringrazio Massimo per questa segnalazione che annoto di seguito qui pronto per essere trovato quando mi serve:

In questo post (http://wikis.sun.com/display/BigAdmin/Checking+for+Deleted+Files+Held+Open+in+UFS+File+Systems) in fondo c'è un commento dove si suggerisce di usare il "find" per scovare processi che hanno files aperti ma cancellati.

Il comando è:

find /proc/*/fd -type f -links 0 -exec ls -l {} \;

Lo segnalo giusto come elemento di analisi in più per quelle situazioni "simili" già capitate in passato.

lunedì 4 agosto 2008

Pendolari e treni: conosciamoli

Segnalo questo sito di informazione, articoli, opinioni personali sulle Ferrovie dello Stato.
Ricco di cose utili, anche tecniche, e curiosità, per un pendolare abituale:

http://www.miol.it/stagniweb/

Il sito si dice in fase di riapertura, tra 36 giorni; ma i contenuti sono accessibili.

Interessante il seguente articolo:
Aprono le linee ad alta velocità Torino-Novara e Roma-Napoli: qualche breve cenno

Magari da leggere in treno :)

sabato 2 agosto 2008

Aggiungere hosts a uno shared QFS

Ecco gli steps necessari ad aggiungere dei servers agli hosts che sharano un fs qfs denominato "qfs" .
I files da configurare sono 2 + 1 da verificare. La directory contenente la config è /etc/opt/SUNWsamfs

root@box3 # ls /etc/opt/SUNWsamfs/
VERSION.4.6 hosts.qfs notify.cmd
startup mcf scripts

- hosts.qfs , basta editarlo su uno degli hosts e copiarlo sugli altri.

root@box3 #cat hosts.qfs
box1 172.30.10.1 1 - server
box2 172.30.10.2 2 -
box3 172.30.10.3 3 -

Si commenta da se. Il server è la macchina 1, gli altri sono potenziali
metadata servers nell'ordine di diritto dato dal numero nella terza colonna.

- mcf:
root@box3 # cat mcf
qfs 10 ma qfs - shared
/dev/dsk/c4t6d0s0 11 mm qfs -
/dev/dsk/c4t6d0s7 12 mr qfs -

Contiene la struttura di volume e filesystem. Va definito uno stesso
filesystem su tutte le macchine, specificando un identico nome (in
questo caso "qfs") e definendo come sopra data e metadata slices, ma soprattutto mettendo la dicitura shared.
Attenzione a un'errore banale, ma facile che possa capitare di incapparci. Il
logical device path della lun in uso dalle 4 macchine va definito localmente
su ogni host, appunto ha significanza locale, con il path "corretto". Ad esempio su box1 è
/dev/dsk/c3t6d0 mentre sulla 3 /dev/dsk/c4t6d0. Cambia il controller per la stessa lun da sharare, è un errore non accorgersene andando a inserire un device errato nell'mcf.

mcf è il file dove si va ad agire quando si intende ingrandire il filesystem. Qui si aggiungono le luns da assegnare come spazio per dati e metadati.

- /etc/inittab . Contiene la riga:
sf:023456:respawn:/usr/lib/fs/samfs/sam-fsd
Verificare che non sia stata precedentemente commentata (ad esempio in seguito a shutdown del demone qfs conseguente a rimozione del filesystem shared.

Potrebbe essere necessario avviare i demoni:
/etc/init.d/samfs.shared start

Si lancia il comando
root@box3 # samsharefs -u qfs

Che rilegge il file hosts.qfs e aggiorna la configurazione del demone in accordo ad esso.
Se il filesystem è smontato su uno degli hosts, allora usa:
root@box1 # samsharefs -u -R qfs # !!! OKKIO !!! usare l'opzione -R solo se il fs è SMONTATO , se è MONTATO si rischia una corruzione, usare solo -u
root@box1 # samd config
Configuring SAM-FS

partendo dal metadata server e passando poi alle altre macchine.
Quest'ultimo comando applica i cambiamenti. E' possibile montare i filesystems se non lo si è già fatto.

Un paio di comandi di verifica, utili anche nel caso di problemi durante operazioni del genere:
- samsharefs qfs
- samfsinfo qfs

root@box3 # samsharefs qfs
#
# Host file for family set 'qfs'
#
# Version: 4 Generation: 28 Count: 4
# Server = host 2/box3, length = 138
#
box1 172.30.10.1 1 -
box2 172.30.10.2 2 -
box3 172.30.10.3 3 - server

root@box3 # samfsinfo qfs
samfsinfo: filesystem qfs is mounted.
name: qfs version: 2 shared
time: SatAug 1 22:00:00 CET 2008
count: 2
capacity: 000000000047f000 DAU: 64
space: 0000000000370a40
meta capacity: 0000000000080000 meta DAU: 16
meta space: 00000000000706e0
ord eq capacity space device
0 11 0000000000080000 00000000000706e0 /dev/dsk/c4t6d0s0
1 12 000000000047f000 0000000000370a40 /dev/dsk/c4t6d0s7

Rimane da testare il corretto switch del server; il freeze del
filesystem durante lo switch è abbastanza trasparente, discretamente veloce, e comunque tutte le operazioni vengono messe in attesa e portate a termine appena il sistema torna disponibile.
E' possibile forzare lo switch così:
root@box3 # samsharefs -s HOSTNAME qfs

Si vedrà qualcosa di molto simile:
Aug 1 15:36:06 box1 samfs: [ID 145691 kern.notice] NOTICE: SAM-QFS:
qfs: Failing over to new server box3, frozen (2000821)
Aug 1 15:36:06 box1 samfs: [ID 668864 kern.notice] NOTICE: SAM-QFS:
qfs: Set client: new server box3 (2000821), 1.3, fl=0
Aug 1 15:36:06 box1 samfs: [ID 665295 kern.notice] NOTICE: SAM-QFS:
qfs: Reset leases, then send resync message to new server box3,
thawing (4000821)
Aug 1 15:36:10 box1 samfs: [ID 999740 kern.notice] NOTICE: SAM-QFS:
qfs: New server box3 (8800811) responded to resync message, thawing
(4800821)
Aug 1 15:36:10 box1 samfs: [ID 515541 kern.notice] NOTICE: SAM-QFS:
qfs: Waiting for new server box3 (8800811): thawing (4800821)
Aug 1 15:36:12 box1 samfs: [ID 206251 kern.notice] NOTICE: SAM-QFS:
qfs: Received faildone message from new server box3, thawing (4c00821)
Aug 1 15:36:12 box1 samfs: [ID 685965 kern.notice] NOTICE: SAM-QFS:
qfs: Failed over to new server box3: (21)

Dovrebbe essere tutto. Per aggiunte, correzioni, estensioni, commenti:
FALLE in un commento, scrivimi a alex.t@areanetworking.it e diventeranno a disposizione su questo blog

Visite