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?
Semplice e veloce no? :)
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
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:
Posta un commento