Category: linux

Sono abitudinario, e al mattino…

… mi sveglio, faccio colazione, mi lavo e poi lancio

rsync -avz –delete –delete-after –progress rsync://$MIRROR_PREFERITO/slackware/slackware64-current /Slackware/

Poi se mi sveglio fin troppo fresco, reinstallo tutto e creo l’iso del DVD con:

mkisofs -o ~/slackware64-dvd.iso \
-R -J -A “Slackware Install” \
-hide-rr-moved \
-v -d -N \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-sort isolinux/iso.sort \
-b isolinux/isolinux.bin \
-c isolinux/isolinux.boot \
-V “SlackDVD” .

Ecco, questo per dire che avevo dei problemini con Arch e sono tornato alla distribuzione regina, la Slackware.

Diagnostica di un sistema Linux, ovvero “threads gone wild”

Ogni tanto succede che qualcosa non vada nel verso giusto, nel mio caso qualche processo fa troppo input/output ogni tanto, facendo laggare per qualche secondo il sistema. Non sapendo dove sbattere la testa sono andato a chiedere sul forum di supporto e ho scoperto l’esistenza di un tool che permette di confrontare diverse statistiche del sistema in parallelo. Dstat, un tool davvero formidabile. Io consiglio di provarlo con

dstat -cdnmgsf –top-cpu –top-bio –top-io

L’output di cui agevolo screenshot perchè è troppo largo è il seguente:

Output del comando suggerito "dstat"

Output del comando suggerito "dstat"

Esistono ovviamente molti altri parametri, io usavo questi per vedere chi faceva troppo I/O. Come vedrete genera una linea al secondo (delay personalizzabile, ovviamente) con tutte le statistiche (selezionabili) più salienti, mancherebbe il parametro “-f” di “full” che però usa troppe colonne e non può essere visualizzato (e succederà a chiunque di voi abbia più di un core…)

Rimane il dubbio che il problema sia Xorg, o addirittura in sync_supers che da quanto ho capito è parte del kernel, quindi per il momento ogni tanto mi becco delle laggatine, se qualcuno ha un’idea si faccia avanti.

Nortek HDBOX R1 HDMI – 1Tb

L’altro ieri ho comprato questo box, con incluso un hard-disk da 1Tb, al prezzo di 139 euro. Vediamo le caratteristiche che mi hanno spinto a comprarlo

  • 1Tb di spazio è tanto. Tanto.
  • HDMI, così posso collegarlo con un cavo solo (e non 5, 3YUV+2Audio) alla TV
  • Linux. È un embedded device, processore MIPS, 64Mb di RAM, e un’organizzazione interna da far venire il mal di testa, ma possiede delle partizioni scrivibili nelle quali depositare eventuali programmi compilati per quell’architettura
  • Ethernet. Ha la porta di rete, e oltre a poter riprodurre video da una condivisione windows (nel mio caso samba), ha anche funzionalità NAS (sebbene sia rumoroso quando è acceso), in più ci si può far girare molte cose (proxy, ssh, wget, …)
  • 2 porte USB, con supporto per qualche modello di chiavetta wifi-usb, e soprattutto per attaccarci eventualmente la stampante (se riuscirò a cross-compilare cups), o molte altre cose (l’UPS?)
  • 1 porta USB, la terza, per connettere il disco direttamente a un PC e scriverci dentro a velocità folli (ok, no, non così folli…)
  • Uscita YUV/AV, ingresso solo AV – potrebbero servire. L’ingresso per registrare, e per la funzione time-shift che non ho ancora provato…
  • Led blu. Tutti amano i led blu.

Per contro è rumoroso e non è adatto a stare sempre acceso come NAS nella stessa camera in cui io dormo, molta gente online dice che senza ventolina (che è la principale fonte di rumore) funziona comunqe alla grande senza surriscaldarsi. Vedrò.

Di default ha un’accesso telnet, senza password, che mi lascia un po’ basito se penso che dovrei usarlo come NAS, ma ovviamente si può rimediare spegnendo il telnet e usando SSH con keyfile (non ho ancora provato, quindi per ora sono ipotesi). Mi farebbe molto piacere se avesse qualcosa tipo il wake-on-lan e non so il perchè, mi è venuto in mente ora.

Nortek HDBOX R1 HDMI

Nortek HDBOX R1 HDMI

Non legge moltissimi formati, ma comunque legge tutti quelli che mi interessano, cito dal sito:

Formati video supportati: AVI, MPG, VOB, DAT, MPEG-2 TS, IFO
CODECs video supportati: MPEG-1, MPEG-2, MPEG-4 (DivX 5.x, DivX 4.x, DivX 3.x, XviD)
Decodifica video ad alta definizione: 720p, 1080i

Più che onesto, certo gli MKV sarebbero stati utili, ma conoscendoli… anche no. Per ora così. Magari in futuro avrò più informazioni da condividere.

Schede audio integrate…

… non sono proprio eccezionali se dovete lavorare i modi digitali. Ecco uno il “waterfall” della mia scheda integrata senza alcun ingresso.

Ingresso flottante, da 0 a 3.9 kHz

Ingresso flottante, da 0 a 3.9 kHz

Fino a 750 Hz notevoli i disturbi, o meglio, le interferenze rilevate. Dopo questa frequenza già meglio, però qualcosa anche a 1kHz si vede. Notevole la riga a 3.1 kHz circa. Molto notevole. L’immagine l’ho stampata da “fldigi” mettendo la sensibilità al massimo. Ovviamente queste righe non sono così forti in confronto ai segnali “veri” che dovremo analizzare. Però non danno tutta questa sicurezza. Ora vediamo con un cavo jack-jack 2.5mm lungo circa 1 metro, lasciato flottante (non è schermato, è un cavo economicissimo) cosa riusciamo a rilevare, che sostanzialmente è anche cosa non vorremmo rilevare.

Ingresso con cavo jack jack economico flottante, da 0 a 2.9 kHz

Ingresso con cavo jack jack economico flottante, da 0 a 2.9 kHz

E in questo caso, chi più ne ha, più ne metta, farei prima ad elencare gli intervalli “liberi” che quelli “occupati”. Insomma il cavetto raccoglie un sacco di immondizia radiata da chissà cosa (computer, monitor, periferiche, etc…). Fatto questo piccolo test, credo che mi metterò alla ricerca di una buona scheda audio USB, da tenere il più vicino possibile all’RTX, e di buon cavettame schermato.

Salvare i video da qualsiasi player flash

So che per i siti più popolari esistono delle comode estensioni, come Easy YouTube Video Downloader, ma di tanto in tanto ci si ritrova a voler salvare un video da un player personalizzato di qualche sito web. Ora vi spiego un modo semplice ed efficace per salvare tutti questi video.

Innanzitutto aprite la pagina col video, mettete il video in pausa, e lasciatelo caricare completamente. Quando il caricamente è finito (ricordatevi di lasciare aperto il browser su quella pagina), dobbiamo solo cercare sul nostro hard-disk dov’è il file che lo contiene. Su linux, o per lo meno sulla mia linuxbox, i flash video (e i flash in genere) vengono stipati nella directory /tmp/, quindi io faccio così:

ls -alh /tmp/Flash*

Verrà stampata a video una lista di file dal nome Flash?????? (dove al posto dei punti di domanda c’è un misto di numeri e lettere), ora con un player video (io uso mplayer) provate a visionare questi file, se il vostro sistema è abbastanza in ordine ce ne saranno pochi, e probabilmente il più grande in dimensioni sarà proprio il video che volete salvare. Alcuni potrebbero essere vecchi video che per qualche crash o altro motivo non sono stati eliminati alla chiusura del browser, visionateli ed eliminateli se non volete salvarli. Quelli che vi interessano li copierete dandogli un nome indicativo e con l’estenzione .flv e il gioco è fatto.

Per gli utenti windows il metodo è lo stesso, però i file vengono salvati in una directory nascosta che ora non ricordo, comunque basta fare una piccola ricerca all’interno delle directory come “dati applicazioni” e simili (tipo le varie “temp” e affini) e scoprirete velocemente dove vengono salvati i video.

Buon salvataggio.

Creare un ramdisk

Ogni tanto si vorrebbe una partizione “virtuale” su cui provare i propri smanettamenti. Script potenzialmente dannosi da debuggare, insomma, qualsiasi cosa, e la soluzione è: creare un ramdisk di piccole dimensioni e lavorarci sopra. Un’altro motivo per volerlo creare potrebbe essere per tenerci tutto il sistema, o parte, e mettere a riposo i dischi. Insomma, potenzialmente ha mille utilizzi.

I modi di crearlo sono due, uno è scrivere/usare uno dei device /dev/ram[0-15] (voi potreste averne di più, o di meno) che però hanno una dimensione prefissata, stabilita nel kernel (e modificabile con un parametro all’avvio, googlate). L’altro modo è più pregiato, e si tratta di

mount -t tmpfs none /var/ramdisk -o size=32m

Ovviamente invece di 32m userete la dimensione che vi interessa, e al posto di /var/ramdisk, il mountpoint che volete. Siccome mi sento generoso vi faccio dono anche dell’incipit di un’altra manpage che è in topic

losetup – set up and control loop devices

Buon lavoro.

Telegramma.

Immaginate di essere alla fiera dell’elettronica e di vedere un fantastico tasto telegrafico cecoslovacco in una bancherella di surplus militare, cosa fate? Io lo compro.

Telegrafia, io ti amo poi ti odio poi ti stimo.

Telegrafia, io ti amo poi ti odio poi ti stimo.

E una volta a casa? Si prende una vecchia tastiera, si cannibalizza il controller (USB) si collega il tasto morse ai capi dov’era collegato l’invio (o qualsiasi altro tasto esclusa la ‘q’), si infila il controller nella nostra linux box, si scarica morse-x e si inizia a tasteggiare. Io ho cablato l’invio così posso usarlo anche per l’im, ovviamente solo per inviare il messaggio. Chicca finale, una delle prime volte che provavo a digitare il mio nominativo (seguito da un punto) in morse.

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Yeah!

Esperimenti con Netcat

La man page ($ man nc) lo definisce “TCP/IP swiss army knife”, e ha ragione. L’ho usato per fare di tutto. Trasferire file, controllare le impostazioni del browser, e anche per puro e semplice divertimento. In questo articolo vediamo come usarlo per giocare con i browser e i server web, anzi, vediamo come usarlo in un modo assolutamente poco utile. Ma per imparare va bene così.

Prima cosa, vediamo come intercettare la richiesta che un nokia N78 manda ad un server web quando richiede la homepage, per farlo apriamo un terminale e diamo il comando:

$ nc -l -p 8080

Dove nc è appunto netcat, -l dice di stare in ascolto, precisamente sulla porta 8080 (-p 8080), fatto questo apriamo il browser sul telefono, connettiamoci alla Wifi domestica, e digitiamo http://ip_del_pc:8080 come destinazione, nel mio caso l’ip è 192.168.1.10

Browser dell'N78

Browser dell'N78

Confermiamo, e poco dopo il terminale ci darà in output la richiesta inviata dal telefono, ecco come si presenta il terminale.

$ nc -l -p 8080
GET / HTTP/1.1
Host: 192.168.1.10:8080
Accept: text/html,text/css,multipart/mixed,application/java-archive, application/java, application/x-java-archive, text/vnd.sun.j2me.app-descriptor, application/vnd.oma.drm.message, application/vnd.oma.drm.content, application/vnd.oma.dd+xml, application/vnd.oma.drm.rights+xml, application/vnd.oma.drm.rights+wbxml, application/x-nokia-widget, */*
Accept-Charset: iso-8859-1, utf-8; q=0.7, *; q=0.7
Accept-Encoding: gzip, deflate, x-gzip, identity; q=0.9
Accept-Language: it;q=1.0,en;q=0.5,fr;q=0.5,de;q=0.5,es;q=0.5,pt;q=0.5
User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN78-1/20.149; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
X-Nokia-MusicShop-Version: 09.0820.9
X-Nokia-MusicShop-Bearer: WLAN
x-wap-profile: “http://nds1.nds.nokia.com/uaprof/NN78-1r100.xml”

Con CTRL+C chiudiamo netcat, e vediamo cosa fare. Innanzitutto noto con piacere i richiami a KHTML e WebKit, roba molto seria. Vedo che nell’User-Agent si può vedere addirittura quale versione del firmware sto utilizzando (20.149) e poi ci sono riferimenti al Nokia MusicShop, vabbè. Prendiamo questa richiesta, da GET fino in fondo e salviamola in un file, facciamo attenzione a come finisce il file, dopo xml” devono esserci SOLO due “a capo”, ovvero premete invio due volte. Prima di salvarlo modificate la linea Host, cambiate :8080 in :80, o con la porta con cui è configurato il vostro apache (default :80), io l’ho salvato come ~/N78.get . Ora lanciamo Apache, sulla mia linux box si fa con (da root)

# apachectl start

Sulla vostra potrebbe essere diverso (ad esempio /etc/rc.d/httpd start) documentatevi. Ora che abbiamo un webserver in esecuzione, procuriamoci una risposta valida alla richiesta che ci siamo salvati.

$ nc 192.168.1.10 80 < ~/N78.get
HTTP/1.1 200 OK
Date: Sun, 19 Apr 2009 11:24:13 GMT
Server: Apache/2.2.10 (Unix) DAV/2
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: “404df-2c-3e9564c23b600″
Accept-Ranges: bytes
Content-Length: 44
Content-Type: text/html

<html><body><h1>It works!</h1></body></html>

Ovviamente in questo caso il server è in esecuzione sulla macchina all’ip 192.168.1.10 porta 80 (notare che per la connessione in uscita non si usa -p, ma si scrive solo la porta separata ocn uno spazio dall’ip), se non volete avviare apache, o non l’avete installato, cambiate Host in N78.get con, ad esempio www.un_sito_a_vostra_scelta.com e lanciate

$ nc www.un_sito_a_vostra_scelta.com 80 < ~/N78.get > ~/N78.page

Notare che ho aggiunto un piccolo dettaglio, la redirezione dell’output nel file ~/N78.page, per comodità. Sappiate che ‘nc’ resterà in esecuzione finchè il server non deciderà di interrompere la connessione, se volete interrompere prima, usate CTRL+C. Bene, ora abbiamo una risposta HTTP completa e valida da poter rimandare indietro al telefono.

$ nc -l -p 8080 < ~/N78.page

Quando riceve una connessione netcat invia i contenuti del file ~/N78.page , ora puntiamo il telefono di nuovo all’indirizzo di prima e vediamo se funziona.

Pagina di benvenuto di Apache 2

L'esperimento funziona!

Bene, fine dell’esperimento. Un ultima cosa, vi lascio i comandi, che dovreste aver già capito come funzionano, per trasferire un file. Sul pc ricevente (che supponiamo abbia ip 10.0.0.1)

$ nc -l -p 8080 > ~/file.ricevuto

Sul pc mittente (il cui ip non ci interessa)

$ nc 10.0.0.1 8080 -q0 < ~/file.da.inviare

Il parametro -q0 dice di interrompere subito la connessione dopo aver ricevuto un EOF (End of file). In questo caso è obbligatorio a fine trasmissione un controllo con ‘md5sum’ per accertare che i due file siano uguali.

Tags: ,

categories linux

Debuggare una connessione, con tcpdump

Ogni tanto capita di essere curiosi, quando un sito nasconde da dove prende le proprie immagini, i media inseriti, e varie altre cose. Siccome il browser le visualizza, vuol dire che qualche server gliele invia, molto probabilmente l’immagine che cercate di salvare è solo sotto ad un immagine trasparente, per quello con click-destro -> salva immagine continuate a salvare GIF trasparenti di 1 pixel.

Vediamo come fare per vedere TUTTE le richieste HTTP che vengono inviate dal nostro PC. Questo può essere fatto per mille motivi, io ad esempio lo faccio per vedere quante GET servono per servire le pagine del mio sito. Ok, sono proprio un nerd. Il comando che uso io è semplice, e “raw” come piace a me. Il che vuol dire che è inelegante, brutto, ma funziona quel tanto che mi basta per usarlo.

tcpdump src port 80 or dst port 80 -s 0 -w – | grep -ao ‘GET.*[\ ]HTTP.*\|POST.*[\ ]HTTP.*’

Tcpdump intercetta (in modalità promiscua, quindi usate lo switch -p per evitare di intercettare robaccia non vostra, io non lo uso perchè tanto nella LAN ci sono solo io) tutti i pacchetti che rispondono al criterio ” src port 80 or dst port 80″ (quindi niente HTTPS), gli altri switch dicono di stampare l’intero pacchetto allo standard output. Se non mettete il grep vedrete tutte le pagine, le immagini, i dati, che passano fra voi e un server http, molto interessante per vedere quanti dati sulla vostra piattaforma invia il vostro browser.

In questo caso il grep (switch -o per stampare solo la parte di stringa che combacia) ricerca stringhe che iniziano per GET o POST (attenzione, esistono altri metodi HTTP meno utilizzati) e finiscono per HTTP*, in pratica le comuni richieste di pagine, immagini, script, dati (ajax?).

Altri “grep” interessanti potrebbero essere “User-Agent”, “Referer” e tutto quello che riuscite a pensare.

Fidocad per Linux? Esiste.

Un tempo non esisteva, o forse non c’era una versione uguale a quella originale, oggi esiste FidoCadJ, scritto in Java, linguaggio che non amo particolarmente, ma che permette un’ottima portabilità multipiattaforma.

Screenshot di FidoCadJ su KDE 3.5

Screenshot di FidoCadJ su KDE 3.5

L’idea di fidocad, di un formato libero, diciamo anche “umano” siccome è su per giù intelligibile, mi è sempre piaciuta, per schemi non troppo complessi la dimensione del file è ottima per essere allegata su un forum, o in un newsgroup, magari per schemi grandi prevedere un zip + base64 non sarebbe male, ma non credo ce ne sia bisogno.