Ricerca personalizzata

mercoledì 22 aprile 2009

Linux; 10 modi per eseguire velocemente da BASH


Chi utilizza spesso sistemi Linux, magari per lavoro, si trova fin troppo spesso a necessitare della Shell (normalmente la Bash) per eseguire qualche operazione, magari in modo piu' rapido che non eseguendo comandi standard uno dopo l'altro.
Il problema e' che non sempre si ha l'occasione di conoscere i segreti piu' intrinseci della Bash, e quindi o si chiede ad amici, colleghi e conoscenti, oppure si resta, fondamentalmente, a piedi (e con un server che, magari, in piedi non sta).

Come risolvere il problema?


1. Un metodo semplice per redirezionare Output ed Errori
Per inviare 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

2. Parallelizza i tuoi Loop
Molto utile, se avete da compiere la stessa operazione ad esempio su piu' macchine, e magari anche in contemporanea:
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. Identificare Memory Leaks con Top via Cron
Non sempre si puo' stare davanti alla macchina a vedere cosa la fa bombare, e il crontab in questo aiuta molto, specie se puoi utilizzarlo per schedulare un top:
crontab - <<< ‘*/15 * * * * top -n 1 -b’
Questo li ordina per utilizzo di memoria, in modo da scoprire cosa vi sta succhiando tutta la ram.
Ogni 15 minuti.
Allarmi via mail :)

4. Standard In direttamente dalla Linea di Comando
Nel comando precedente abbiamo usato <<<, che permette di inviare lo stdin direttamente alla riga di comando.

5. Impostare una Password iniziale da cambiare al primo login
Da verificare, raramente ho necessita' di fare cose del genere:
umask u=rw,go=
openssl rand -base64 6 | tee -a PasswordFile | passwd –stdin joe
chage -d 0 joe

6. Aggiungi la tua Chiave Pubblica su Macchine Remote in Modo Semplice
Quando avete piu' chiavi pubbliche abilitate alla connessione su un server via ssh, la cosa diventa noiosa, piu' che altro scomoda, da fare a manina santa ogni volta.
Questo risolve il problema:
ssh-copy-id -i .ssh/id_rsa.pub hostname
(e mi serve al lavoro)

7. Estrarre un RPM senza Software aggiuntivo
Utile se volete avere solo dei pezzi di un pacchetto e non tutta la baracca, soprattutto quello da cui quel pacchetto dipende.
mkdir /tmp/deleteme
rpm -ivh –root /tmp/deleteme –nodeps –noscripts package.rpm
Ve lo piazza li', e potete cancellarlo quando vi pare (non rientra nel database RPM di sistema)

8. Controllare le modifiche ad un file rispetto ai default
Utilizzando il trucchetto precedente, potete, successivamente, eseguire questo comando per vedere in che cosa differiscono i due file, quello originale e quello vostro:
diff /etc/foo/foo.conf /tmp/deleteme/etc/foo/foo.conf

9. Annulla i tuoi script di rete se ti chiudi fuori
Capita a tutti, prima o poi.
La regola sbagliata nel momento sbagliato in iptables.
E siete tagliati fuori dalla macchina, che magari sta anche lontano da dove siete voi.
Prima di eseguire quindi un comando che vi possa causare il problema di cui sopra, 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 chiudervi fuori davvero.
Cancellatelo dall'at se riuscite a rientrare, prima che venga eseguito sul serio quando non serve.

10. Controllare se una porta e' aperta
E qui viene in aiuto netcat, il "coltellino svizzero" del sistemista.
Per vedere se un sistema risponde su una porta, invece di telnettarci, provate cosi':
if nc -w 3 localhost 22 <<< ” &> /dev/null
then
echo ‘Port is open’
else
echo ‘Port is closed’
fi

Semplice e veloce no? :)

Nessun commento:

Privacy Policy

This site uses Google AdSense for advertisements. The DoubleClick DART cookie is used by Google in the ads served on publisher websites displaying AdSense for content ads. When users visit an AdSense publisher's website and either view or click on an ad, a cookie may be dropped on that end user's browser. The data gathered from these cookies will be used to help AdSense publishers better serve and manage the ads on their site(s) and across the web. * Google, as a third party vendor, uses cookies to serve ads on this site. * Google's use of the DART cookie enables it to serve ads to you users based on your visit to this site and other sites on the Internet. * Users may opt out of the use of the DART cookie by visiting the Google ad and content network privacy policy. We use third-party advertising companies to serve ads when you visit our website. These companies may use information (not including your name, address, email address, or telephone number) about your visits to this and other websites in order to provide advertisements about goods and services of interest to you.

Questo sito utilizza Google AdSense per la pubblicità. Il DoubleClick DART cookie è utilizzato da Google per gli annunci pubblicati su siti web publisher AdSense per i contenuti, visualizzazzandone gli annunci. Quando un utente visita un sito web publisher AdSense e clicca su un annuncio, un cookie può essere rilasciato a tal fine, nel browser dell'utente. I dati raccolti da questi cookie verranno utilizzati per aiutare i publisher AdSense a servire meglio e a gestire gli annunci sul loro sito(i) in tutto il web. * Google, come parte di terzo fornitore, utilizza i cookie per la pubblicazione di annunci su questo sito. * L'uso del DART cookie consente a Google di pubblicare annunci per gli utenti, e si basa sulla vostra visita a questo sito e su altri siti su Internet. * Gli utenti possono scegliere di utilizzare i DART cookie visitando i contenuti sulla privacy nell'annuncio di Google. Usiamo società di pubblicità per la pubblicazione di annunci di terze parti, quando si visita il nostro sito web. Queste aziende possono utilizzare le informazioni (non compreso il vostro nome, indirizzo, indirizzo e-mail, o numero di telefono) sulle visite a questo e ad altri siti web, al fine di fornire la pubblicità su beni e servizi di vostro interesse.