Archive for category linux
HOWTO: come redirezionare l’output su file e/o su standard output
Quando si usa la console, soprattutto per gli script, è molto utile saper redirezionare l’output su file o su standard output/error. Questo howto è valido per tutti i sistemi *NIX (linux, unix, osx, bsd, etc) basati su standard POSIX.
Ci sono varie redirezioni, vediamo quali:
- Redirezionare l’output in un file:
echo "hello world" > hello.txt
- Redirezionare l’output in un file:
echo "hello world" | tee hello.txt
- Per “appendere” (aggiungere in fondo) l’output in un file si usa il doppio “>”:
echo "hello world" >> hello.txt
- Redirezionare lo standard error in un file e mostrare lo standard output (script.py è uno script che produce uno standard error ed uno standard output)
./script.py 2> hello.txt
- Redirezionare lo standard error e lo standard output in un file:
./script.py 2&> hello.txt
- Mostrare e redirezionare lo standard error e lo standard output in un file:
./script.py 2>&1 hello.txt
Fonte: linux.byexamples.com
Se hai domande e suggerimenti, commenta oppure contattami
HOWTO: Come sostituire in disco rotto da un RAID software su linux
Se sei un sysadmin oppure ti piace smanettare con linux + dischi + RAID questo howto ti potrebbe essere molto utile. Se hai un RAID, qualunque tipo esso sia, questo howto ti indica come procedere nel sostituire il disco rotto di un RAID. Ovviamente se un disco si rompe, il RAID può decidere autonomamente di espellerlo da solo. A volte questo non succede e lo si deve fare a mano. Ecco come:
Supponiamo che il disco da rimuovere sia /dev/sda
- Manda in stato di fail il disco su tutte le partizioni in cui è coinvolto (qui nell’esempio 3 partizioni):
mdadm /dev/md0 --fail /dev/sda1 mdadm /dev/md1 --fail /dev/sda2 mdadm /dev/md2 --fail /dev/sda3
- Attendi il resync (questa operazione può richiedere molto tempo) tramite:
cat /proc/mdstats - Rimuovi dal RAID il disco rotto:
mdadm /dev/md0 --remove /dev/sda1 mdadm /dev/md1 --remove /dev/sda2 mdadm /dev/md2 --remove /dev/sda3
- Estrai il disco /dev/sda
- Copia l’MBR (uguale su tutti i dischi) in un file:
dd if=/dev/sda of=mbr bs=512 count=1
- Inserisci il nuovo disco
- Copia l’MBR sul nuovo disco appena inserito:
dd if=mbr of=/dev/sdf
- Immetti il nuovo disco nel RAID:
mdadm /dev/md0 --re-add /dev/sdf1 mdadm /dev/md1 --re-add /dev/sdf2 mdadm /dev/md2 --re-add /dev/sdf3
- Ora il disco appena inserito prenderà il ruolo di quello rotto.
Se hai suggerimenti, problemi, domande, commenta il post oppure contattami!
Autore originale: Lorenzo
HOWTO: Configurare VirtualHost su OSX
OSX, come molte distribuzioni linux hanno integrato il webserver Apache. Apache ha centinaia di opzioni e configurazioni disponibili per la gestione di qualsiasi situazione.
Tra queste configurazioni ci sono i VirtualHost, che permettono l’esecuzioni di più siti (www.sito1.com, www.sito2.com) sulla stessa macchina. I siti possono essere suddivisi basandosi sia su nomi differenti sia su IP.
In OSX tutte le configurazioni si trovano dentro la cartella “/etc/apache2/”. I passi da fare per abilitare i VirtualHost sono i seguenti:
- Apri un Terminale e digita il comando:
sudo vim /etc/apache2/httpd.conf
- Intorno alla linea 460 c’è questa direttiva
# Virtual hosts #Include /private/etc/apache2/extra/httpd-vhosts.conf
che dovrà diventare:
# Virtual hosts Include /private/etc/apache2/extra/httpd-vhosts.conf
- Il prossimo passo è editare il file con il comando:
sudo vim /private/etc/apache2/extra/httpd-vhosts.conf
- Ora configura il tuo VirtualHost seguendo questa documentazione
- Riavvia Apache per fargli rileggere la configurazione. Per fare ciò vai sulle “Preferenze di Sistema -> Condivisione”
- Disabilita ed abilita la condivisione Web cliccando sul segno di spunta.
- Apri il tuo browser e testa il corretto funzionamento dei VirtualHost
Se hai suggerimenti, correzioni, domande… sai cosa fare!
HOWTO: Installare Tilimi su Linux
Tilimi è una fantastica applicazione che porta il mondo della radio a portata di computer o iPhone. Tilimi è un progetto interamente italiano ed è veramente ben fatto. Tramite un’interfaccia chiara e semplice puoi scegliere il canale che vuoi (il corrispettivo della frequenza per la radio) vedere chi è collegato in quel canale, premere il tasto e parlare con le persone di quel canale. Ovviamente la comunicazione è half-duplex, come nella comunicazione classica radioamatoriale.
L’applicazione è disponibile per tre piattaforme: Macintosh, PC ed iPhone. Io l’ho installato su iPhone (qui per scaricarlo) e su Mac (qui per scaricarlo). Noto con dispiacere che l’applicazione NON è disponibile per altre piattaforme tipo GNU/Linux, Symbian, Android, etc. La prima cosa che ho provato è stato installare Tilimi per Windows su Linux utilizzando l’emulazione wine.
Ho effettuato l’installazione su una Ubuntu 9.10, grazie anche all’aiuto di Pablo e alle dritte del team di sviluppo di Tilimi stesso. Ecco i semplici passi per installare Tilimi su Linux:
- Installa Wine: “apt-get install wine1.2” (con wine 1.0.X l’installer non funziona)
- Scarica il file winetricks seguendo le istruzioni di questa pagina: http://wiki.winehq.org/winetricks
- Installa la libreria GDIPLUS: “sh winetricks gdiplus” (necessaria per visuallizare correttamente l’interfaccia)
- Installa Tilimi tramite il comando: “msiexec /a TilimiInstaller.exe”
- Lancia Tilimi cliccando su “Applicazioni -> Wine -> Programs -> Tilimi -> Tilimi“
Ovviamente per far funzionare il tutto devi avere sia il microfono che la scheda audio funzionanti sotto Linux, poichè wine “si appoggia” ai driver audio di Linux.
Se hai domande, delucidazioni, correzioni, sugerimenti o altro, commenta oppure contattami. Sarò felice di rispondere.
HOWTO: autenticazione SSH tramite chiave
Già ho parlato di SSH in questo post. Oggi vedrai impostare il tuo client ed il tuo server per accedere in maniera sicura e veloce tramite l’autenticazione con chiave, piuttosto che con una semplice password. L’autenticazione basata su nomeutente e password rende il sistema potenzialmente insicuro per i seguenti motivi:
- la password può essere indovinata in qualsiasi momento (tramite attacco brute force)
- la maggior parte degli utenti non guardano il file secure.log o auth.log per vedere gli accessi non autorizzati
- per default il server SSH ha l’accesso di root abilitato, mettendo a rischio la sicurezza di tutto il sistema
Per rendere più sicura l’autenticazione puoi usare una coppia di chiavi crittografate al posto dell’autenticazione con password. Esistono due tipi di algoritmi per generare le chiavi ssh: RSA (cripta e firma) e DSA (firma solamente). Personalmente consiglio di usare RSA.
Dunque per generare le chiavi digita:
# ssh-keygen -t rsa Generating public/private rsa key pair.
A questo punto premi invio se non vuoi dare un nome personalizzato alla chiave:
Enter file in which to save the key (/Users/exampleuser/.ssh/id_rsa):
Se vuoi usare l’algoritmo DSA basta specificare “-t DSA”. Ad un certo punto ti verrà chiesto di inserire una passphrase per proteggere la chiave privata:
Enter passphrase (empty for no passphrase): Enter same passphrase again:
La scelta di una passphrase dipenda da situazione a situazione. Se non immetterai nessuna passphrase potrai accedere al tuo server direttamente senza dover digitare niente. Questo però comporta se qualcun altro accede alla tua chiave privata oppure ad una copia può entrare senza nessun problema nel server dove è impostata quella chiave. Se invece decidi di proteggerla con una passphrase dovrai digitare ogni volta la password per sbloccare la chiave privata. Per venirti incontro potresti usare un ssh-agent per memorizzare la password del certificato per un tempo finito come ad esempio un’ora, una giornata, al termine della sessione grafica etc.
Appena finita la creazione delle due chiavi le potrai trovare in “/home/tuo_username/.ssh/” per sistemi GNU/Linux oppure “/Users/tuo_username/.ssh/” per sistemi OSX. Ora devi copiare la tua chiave pubblica nel server remoto tramite il seguente comando:
# scp id_rsa.pub username@server.remoto:/home/username/.ssh/authorized_keys
Questo comando sovrascrive il file authorized_keys nel server remoto. Se vuoi aggiungere la tua chiave ad altre già esistenti fa in questo modo:
- copia la chiave sul server remoto
- loggati sul server remoto
- appendi la tua chiave a quelle esistenti
# scp id_rsa.pub username@server.remoto:/home/username/.ssh/
# ssh username@server.remoto
server_remoto# cd .ssh server_remoto# cat ip_rsa.pub >> authorized_keys
Ora devi impostare i giusti permessi. Sul server remoto fai
server_remoto# chmod 700 ~/.ssh server_remoto# chmod 600 ~/.ssh/authorized_keys
A questo punto puoi accedere al tuo server senza dover far uso della password. Se vuoi proteggere il tuo server da attacchi brute force sulle password puoi dire al server ssh di non accettare l’autenticazione ssh.
ATTENZIONE: prima di fare questa operazione assicurati di avere un accesso secondario alla macchina per non rimanere tagliati fuori
Vai sul tuo server ed edita il file “/etc/sshd_config” in modo da avere questa questa direttiva:
PasswordAuthentication no
Fatto ciò riavvia il server ssh per fargli leggere la nuova configurazione.
Fonte: www.unt.net
HOWTO: tunneling con ssh
Il tunnel ssh è un modo sicuro per raggiungere un host che normalmente non potrebbe essere raggiunto. Il metodo sfrutta una canale (tunnel) sicuro tra la tua macchina e la macchina remota sfruttando però un altro server che farà da ponte. Esempi: se vuoi raggiungere una macchina dietro un firewall o dietro NAT, oppure se vuoi usare MSN da una rete aziendale che vieta l’uso dell’instant messenger.
Ci sono fondamentalmente due modi per effettuare il tunnel:
- forwarding della porta locale
- forwardind della porta remota
Forwarding della porta locale
Con questo metodo puoi accedere a porte su host che non puoi raggiungere direttamente facendo passare il traffico in una connessione SSH ad un host pubblico (che a sua volta deve poter raggiungere direttamente l’host finale). L’esempio più classico è di voler raggiunere una macchina che si trova dietro NAT sfruttando il server che “natta” l’host finale. L’immagine sottostante può schiarirti ulteriormente le idee!
Per raggiungere ad esempio il webserver che è in esecuzione su OS9 (dell’immagine) devi aprire una connessione SSH verso il firewall dirigendo il tunnel secondo le tue esigenze, come ad esempio effettuare il forward di tutte le richieste fatte sulla porta locale 8080 alla porta 80 del server web che si trova su OS9. Il comando che dovrai eseguire sarà il seguente:
ssh -N -L 8080:os9.server.lan:80 user@firewall.company.com
che letteralmente significa: forwarda la porta locale 8080 a firewall.company.com e digli di mandare il traffico a os9.server.lan sulla porta 80.
I paramentri del comando ssh sono:
- -N: di a ssh di creare il tunnel senza creare una shell sull’host
- -L: specifica il tipo di tunneling (locale)
- 8080: porta locale da usare
- os9.server.lan: è l’host accessibile dal firewall
- 80: è la porta da raggiungere su os9.server.lan
- user: utente per la connessione a ssh
- firewall.company.com: server publico da usare come rampa di lancio
Ora non resta che connetterti con il tuo browser web al http://127.0.0.1:8080 per raggiungere la porta 80 di os9.server.lan.
Forwarding della porta remota
Questo approccio ti permette di effettuare il forward di connessioni fatte a un host remoto, ad un host della tua rete. Un esempio è che vorresti rendere visibile all’esterno una macchina della tua rete privata. L’immagine sottostante ti aiuta a capire lo scenario:
Forwarding della porta remota
Per farti capire meglio: hai sviluppato una nuova web application in un server di sviluppo che è presente nella tua rete privata. Se vuoi far vedere questa web application ai tuoi clienti devi aprire un tunnel ssh dalla macchina che può raggiungere entrambe i server ovvero il server pubblico che i tuoi clieti devono contattare ed il tuo server di sviluppo.
Il comando da lanciare sarà il seguente:
ssh -N -R 8080:os9.server.lan:80 user@server.company.com
che tradotto significa: “Di a server.company.com di effettuare il forward della porta 8080 a me, dando il traffico a os9.server.lan sulla porta 80.
I paramentri del comando ssh sono:
- -N: di a ssh di creare il tunnel senza creare una shell sull’host
- -R: specifica il tipo di tunneling (remoto)
- 8080: porta locale da usare
- os9.server.lan: è l’host della tua lan
- 80: è la porta da raggiungere su os9.server.lan
- user: utente per la connessione a ssh
- firewall.company.com: server publico che i tuoi clienti contatteranno
Ora devi dire ai tuoi clienti di digitare nel proprio browser: http://server.company.com:8080/
Risponderà così la porta 80 di OS9, dove è la tua web application. Ti vorrei ricordare che puoi ridirigere qualsiasi tipo di porta, non solo la 80.
Buon tunneling!
Fonte: http://projects.tynsoe.org/en/stm/doc.php
HOWTO: programmare in python da console
Oggi voglio segnalarti alcune utility che ti aiuteranno a programmare in python dalla console di un sistema Unix-like (Linux, BSD, OSX etc). Molti preferiscono il classico vim, ma per progetti più grandi potrebbe risultare scomodo.
A tal proposito voglio indicarti due progetti promettenti per il python da console. Il primo è iPython, una shell interattiva con tante funzionalità per la programmazione in python, quali:
- autocompletamento di variabili, classi, packages, metodi, premendo il tasto TAB
- sintassi automatica
- evidenziazione del codice
- history dei comandi
- altre funzionalità avanzate
Personalmente uso ipython come console di default per il python e per eseguire test di script o altro che poi importerò nel mio editor preferito (Textmate). iPython può essere installato in vari modi: con easy_install, da sorgente, eseguibile per windows. Maggiori dettagli li puoi trovare qui.
L’altro progetto è bpython, un’interfaccia funzionale per la console del python. Ha le seguenti caratteristiche:
- evidenziazione del codice in linea
- autocompletamenteo con suggerimenti mostrati mentre scrivi
- lista dei parametri attesi per le funzioni Python
- funzione di “rewind” per prendere l’ultima linea di istruzione dalla memoria e rivalutarla
- inviare il codice a pastebin
- salvare il codice che hai scritto in un file
- auto indentazione
Anche questo progetto sembra promettere bene e lo uso in OSX. Ci sono vari modi di installazione che sono tutti spiegati nel suo sito. bpython può essere scaricato da qui e in questa pagina puoi trovare la documentazione associata.
Happy hacking!
Risorsa online di ebook gratuiti per computer
Ciao, voglio chiudere questa settimana con un link molto interessante. Se sei appassionato di computer, programmazione, software, hardware e tutto ciò che gira intorno a questi argomenti questo sito fa al caso tuo: qui potrai trovare libri elettronici riguardani il C, Java, Python, OSX, Linux, Windows, Reti, Algoritmi, Image processing, circuiti elettronici, server, cisco, grafica, matematica, qualsiasi linguaggio di programmazion e chi più ne ha, più ne metta.
Il link al sito è http://www.netbks.com/ ed ogni giorno ha decine e decine di nuove pubblicazioni. Veramente ben fornito. L’unica pecca che potrebbe essere uno svantaggio per tanti è l’utilizzo della lingua inglese in tutti i libri. Forsè è l’occasione buona per impararlo!
Ah, ovviamente se non sei interessato a questi argomenti il sito non sarà una risorsa fondamentale che cambierà il corso della tua vita!
Dunque non mi resta che augurarti, buona lettura e buon hacking!
HOWTO: trovare file e cancellarli in un solo comando
Eccomi di nuovo. Oggi vedrai come trovare e cancellare file in un solo step con il comando “find“. Questo comando lo trovi in tutte le distribuzioni linux, in OSX, BSD ed in tutti i sistemi operativi *NIX like.
“find” è molto potente ed ha una flessibilità non indifferente. Oggi vedrai come cancellare i file che “find” trova. Come caso di esempio, hai un progetto python o java molto esteso. Questi due linguaggi di programmazione sono precompilati, ovvero generano del bytecode che l’interprete eseguirà. Il Python genera file .pyc, mentr il Java genera file .class. É da matti andare directory per directory e cancellare tutti i file uno ad uno. Il comando “find” ti viene in aiuto.
Infatti basta andare sulla root del progetto e digitare il seguente comando:
$ find . -iname *.pyc $./trunk/progetto/urls.pyc ./trunk/progetto/utility_functions.pyc ./trunk/progetto/porting_conf.pyc
Per trovare i file da cancellare. Ti consiglio sempre di testare il comando “find” prima di cancellare i file, per evitare brutte sorprese! Una volta che sei sicuro dei file che vuoi cancellare ti basta lanciare il comando precedente con una opzione in più:
$ find . -iname *.pyc -delete
Puoi vedere il risultato del “delete” ricercando di nuovo i file *.pyc. Sicuramente vedrai che i file *.pyc non ci sono più! ![]()
A seconda del sistema operativo che usi la sintassi del comando potrebbe cambiare leggermente. Questi comando sono stati provati su OSX. Per linux ad esempio lo stesso comando produrrebbe un errore. Su linux sarebbe in questo modo:
$ find . -iname "*.pyc" -delete
Dunque ti consiglio sempre di leggerti prima il manuale di find digitando:
$ man find
oppure andando su questa pagina.
Ti accorgerai che find farà molto di più oltre a semplici ricerche.
Happy find!





Recent Comments