Home    Forum    Cerca    FAQ    Iscriviti    Login
Nuova Discussione  Rispondi alla Discussione Pagina 1 di 1
 
15 Shell Tricks
Autore Messaggio
Rispondi Citando
Messaggio 15 Shell Tricks 
 
Image
Usare l’interfaccia a linea di comando a mio parere rappresenta un’occasione per imparare qualcosa in più sui computer e i sistemi operativi.
Ci permetterà di diventare degli utenti più smaliziati, che sanno sfruttare a fondo le risorse di un computer e non sono costretti a ricorrere sempre all’amico o al familiare di turno per risolvere un problema.
Saremo noi, insomma a guidare il sistema e non viceversa.
La shell negli ambienti Unix (e Linux non fa eccezione) è un elemento fondamentale del sistema operativo.
Solo chi sa usare correttamente questo ambiente può affermare di conoscere i sistemi *nix, altrimenti è solo un semplice utilizzatore.
Lo scopo di questo post è di condividere con voi alcuni comandi bash interessanti che possono rivelarsi utili nell’utilizzo quotidiano di un OS Unix-Like.
Eccone 15, mi auguro che siano di vostro gradimento.

1) Trovare file più grandi di 10 Mega, modificati negli ultimi 3 giorni:

find / -size +10000k -mtime –3

2) Copiare la chiave pubblica ssh su un server da una macchina che non ha ssh-copy-id, es. Mac OS X o altre varianti di *nix:

cat ~/.ssh/id_rsa.pub | ssh [email protected] “mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys”

3) Sostituire tutte le occorrenze di “pippo” con “pluto” per ogni file con estensione .txt nella cartella corrente:

for NOMEFILE in *.txt; do sed -i 's/pippo/pluto/g' "${NOMEFILE}"; done

4) Sapere quanti MegaByte liberi abbiamo nella RAM:

free | awk '/Mem/ {print $4 / 1024}'

5) In alcune situazioni è necessario riuscire a trovare i file modificati  “n” minuti fa .
Come fare a individuare il file che ci interessa?
Avvaliamoci del comando “find” assieme alla sua opzione “-cmin”.
Supponiamo ad esempio di voler individuare tutti i file modificati entro 30 minuti, per cui digitiamo:

find / -cmin 30

6) Nascondere i comandi dentro la shell.
Se abbiamo la necessità di nascondere a video i comandi che impartiamo all’interno della shell, attiviamo tale funzione in questo modo:

stty –echo

e disattiviamola così:

stty echo

7) Stabilire se la CPU supporta la virtualizzazione dell’hardware.
Qualora ci interessi sapere se il processore supporta la virtualizzazione serviamoci di questo comando:

egrep -c '(vmx|svm)' /proc/cpuinfo

Se la risposta è 0 significa che la CPU non supporta la virtualizzazione dell’hardware, se invece la risposta è 1, la virtualizzazione è supportata, ma è necessario accertarsi che nel BIOS sia abilitata la relativa opzione.

8)Backup dell’Hard Disk su una partizione o su un disco esterno.
Di seguito, un classico esempio di dd che ci permette di eseguire un backup di una partizione del nostro hard disk su una partizione o su un disco esterno:

sudo dd if=/dev/sda1 of=/dev/sdc1 bs=4096 conv=noerror,sync

in questo caso abbiamo un blocksize di 4096 e l’opzione “noerror” per indicare a “dd” di continuare la copia dei file anche nel caso di settori illeggibili che potrebbero generare errori.
Se volessimo salvare il contenuto copiato con “dd” su un file immagine, facciamolo così:

sudo dd if=/dev/sda1 of=/dev/sdc1/hddbackup.img

9) Redirezione dell’output ed errori.
Per redirezionare l’output e gli errori di un comando in un file digitiamo:

command &> file

possiamo usare anche strace:

strace badapp &> errors_and_output

sapendo che il valore 1 rappresenta lo standard output e il valore 2 lo standard error, possiamo redirezionare usando anche 1> o 2>.

10) Aggiungere una chiave pubblica su macchine remote.
Se abbiamo più chiavi pubbliche abilitate alla connessione su un server via ssh, scriviamo:

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

Generalmente ssh risponderà:

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.

11) Parallelizzare i cicli (loops).
Un Sysadmin sicuramente conosce la potenza del ciclo for (fare qualcosa per uno, dieci, cento utenti o macchine).
Di solito ogni utente mette i propri cicli in sequenza, quindi  bisogna attendere che un ciclo di lavoro sia terminato prima di farne un altro.
Tramite questo trucchetto ogni lavoro o compito dei nostri cicli possono essere fatti girare in background, evitando di aspettare la fine di un ciclo prima di compiere un’altra operazione.
A seguire, un esempio con ‘sudo apt-get update’:

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

sfruttiamolo anche per un tunnel:

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

12) Estrarre un RPM senza software aggiuntivo.
Con il trucco seguente, invece di utilizzare rpm2cpio, adopereremo questi comandi per installare/estrarre un pacchetto in una directory temporanea evitando di alterare il database RPM di sistema.
Possiamo anche disabilitare gli script e le dipendenze:

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

il pacchetto viene inserito in /tmp/deleteme e la sua eliminazione non comporterà problemi di sorta.

13) Eseguire un comando su più host in parallelo (è consigliabile prima uno scambio di chiavi pubbliche, altrimenti dovremo immettere la password più volte):

for host in host1 host2 host3; do echo -n $host:; ssh $host uptime; done;

14) Generare una lista di tutti i pacchetti RPM installati sul sistema:

rpm -qa > pacchetti.txt

15) Verifica del kernel in esecuzione.
Per verificare se sia in esecuzione un kernel a 64 bit lanciamo questo comando:

uname –m

il risultato sarà simile ai seguenti:
x86_64 indica che il kernel è a 64 bit, mentre i386, i486, i586, i686 indicano un kernel a 32 bit.





Offline Profilo Invia Messaggio Privato
Download Messaggio Torna in cima Vai a fondo pagina
Mostra prima i messaggi di:   

Nuova Discussione  Rispondi alla Discussione  Pagina 1 di 1
 

Online in questo argomento: 0 Registrati, 0 Nascosti e 0 Ospiti
Utenti Registrati: Nessuno


 
Lista Permessi
Non puoi inserire nuovi Argomenti
Non puoi rispondere ai Messaggi
Non puoi modificare i tuoi Messaggi
Non puoi cancellare i tuoi Messaggi
Non puoi votare nei Sondaggi
Non puoi allegare files in questo forum
Non puoi scaricare gli allegati in questo forum
Non puoi inserire eventi calendario in questo forum