T4n|n0 Ru|3z Official Site

Tutto ciò che hai sempre cercato,forse lo hai trovato..

Shell Linux: 10 trucchi semplici e forse sconosciuti da molti

Pubblicato da T4n|n0 Ru|3z su 24 Giugno 2008

Ogni utente linux ha a che fare quotidianamente con la shell ed i suoi comandi: loggarsi,cambiare i permessi ai file,tagliare,copiare,rimuovere,compilare sorgenti ecc.. I comandi bash sono imporantissimi e spesso molti scriptini ci facilitano molto il lavoro.

Oggi vi ” traduco ” da questo sito 10 trucchetti che possono tornarvi davvero utili. Alcuni forse li conoscevate già:

1. Redirezione dell’ Output ed Errori

Per redirezionae l’output e gli errori di un comando in un file, utilizzate questo comando:

command &> file

Molto comodo anche con l’strace:

strace badapp &> errors_and_output

Sapendo che il valore 1 rappresenta lo standard output e il valore 2 lo standard error,potete redirizionare anche usando rispettivamente 1> oppure 2>.

2. Parallelizzare i cicli(loops)

Ogni buon amministratore di linux conosce la potenza del ciclo for: fare qualcosa per uno,dieci,cento utenti o macchine. Solitamente ogni utente mette i propri cicli in sequenza e bisogna aspettare che ogni ciclo di lavoro è finito prima di farne un altro. Ogni lavoro o compiti dei nostri cicli,possono essere fatti girare in background,senza aspettare che finisca un ciclo prima di fare un’altra operazione.Ecco un esempio con sudo apt-get update:

for HOST in $(cat ListOfHosts); do ssh $HOST ’sudo apt-get update’ & done

E perche’ non usarlo magari anche per un bel tunnel? :P

for HOST in $(cat ListOfHosts); do ssh -C -N -R 80:localhost:80 $HOST & done

3. Memory Leaks con Top

Su linux è raro vedere programmi di memoria,ma questo può succedere se si usa una distro beta o software fatti in casa :P Non sempre si puo’ stare davanti alla macchina a fare ciò che si vuole,spesso c’è bisogno di programmare o pianificare qualcosa. Top ci viene in aiuto:

  • Eseguiamo top.
  • Usiamo < e > per ordinare i processi in ordine RES (resident memory usage).
  • Premiamo W per inserire la nostra config
  • Aggiungiamo una cron job:

    crontab – <<< ‘*/15 * * * * top -n 1 -b’

Ogni 15 minuti riceveremo un allarme/notifica di email.

4. Standard Input dalla Linea di Comando

Nel comando precedente abbiamo usato <<<, che permette di inviare lo stdin del programma direttamente dalla riga di comando.

5. Impostare una Password iniziale da cambiare al primo login

umask u=rw,go=
openssl rand -base64 6 | tee -a PasswordFile | passwd –stdin joe
chage -d 0 joe

Crea una password che deve essere cambiata al primo login. Nello specifico,viene creato un fil PasswordFile che solamente il proprietario che l’ha creato può leggere e modificare.

6. Aggiungere una Chiave Pubblica su Macchine Remote

Quando avete piu’ chiavi pubbliche abilitate alla connessione su un server via ssh potete usare:

ssh-copy-id -i .ssh/id_rsa.pub hostname

Spesso l’SSH rispoderà:

Now try logging into the machine, with “ssh ‘hostname’”, and check in:

.ssh/authorized_keys

to make sure we haven’t added extra keys that you weren’t expecting.

7. Estrarre un RPM senza Software aggiuntivo

Questo trucco non è necessario sulle distro Debian based,dato che ci sono i pacchetti .deb. Invece di usare rpm2cpio,possiamo avvalerci dei seguenti comandi per installare/estrarre un pacchetto in una directory temporane,senza modificare RPM database di sistema. Possiamo anche disabilitare le dipendenze e gli scritp:

mkdir /tmp/deleteme
rpm -ivh –root /tmp/deleteme –nodeps –noscripts package.rpm

Ve lo piazza in /temp/deleteme e potete cancellarlo quando volete.

8. Controllare come è cambiato un file rispetto al suo stato di default

Utilizzando il seguente trucchetto possiamo vedere le modifiche di un file dal suo stato iniziale di default:

dpkg -S /etc/foo/foo.conf

rpm -qf /etc/foo/foo.conf

Estraiamo i pacchetti originali entrambi con DPkg o con il trucchetto degli  rpm trick visto prima ede eseguiamo:

diff /etc/foo/foo.conf /tmp/deleteme/etc/foo/foo.conf

Ora notate le differenze :D

9. Annullare gli script di rete se si perde la connessione

Avete mai fatto casini con il firewall o connessioni remote?La regola sbagliata nel momento sbagliato in iptables. Vi trovte fuori dalla macchina, che magari sta anche lontano da dove siete voi.
Per evitare quindi questi inconvenienti,prima di eseguire quindi un comando che vi possa causare il problema, potreste fare una cosa del genere:

at now + 5 minutes <<< ‘cp /etc/ssh/sshd_config.old /etc/ssh/sshd_config; service sshd restart’

Ovviamente dovete fare il backup dei file, e ricordarvi di eseguire questo comando prima di rimanere fuori :D Cancellatelo  dalla coda atq con il comando atrm se riuscite a rientrare, prima che venga eseguito sul serio quando non serve.

10. Controllare se una porta e’ aperta

Possiamo servirci di netcat. Possiamo usarlo facilmente per controllare una porta. Possiamo provare con i seguenti comandi,volendo possiamo creare anche un piccolo script bash:

if nc -w 3 localhost 22 <<< ” &> /dev/null
then
echo ‘Port is open’
else
echo ‘Port is closed’
fi

Spero vi siano utili :D

Consiglio inoltre di leggervi

Bash base

Bash avanzato

3 Risposte a “Shell Linux: 10 trucchi semplici e forse sconosciuti da molti”

  1. T4n|n0 Ru|3z detto

    x Gianfranco: certo tutto si può fare,basta fare uno script in bash ;) però per queste cose,iscriviti al forum e chiedi li che non ti rispondo solo io :P

  2. Gianfranco detto

    Ciao…..ottimi questi comandi

    E’ possibile creare uno script sotto linux che copia automativamente un file da linux a windows xp?

    potresti aiutarmi a scrivere il codice?

    Grazie Ciao

  3. emumsspat detto

    Thanks for the post

Lascia una Risposta

XHTML: Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>