Una guida ai Comandi Linux Essenziali – prima parte
Navigare nel terminale Linux non è sempre semplice, ma conoscere i comandi giusti può fare una grande differenza. In questa serie di articoli, proverò a guidarti attraverso alcuni dei comandi Linux più avanzati e utili, come `awk`, `sed`, e `systemctl`. Questa guida è pensata sia per chi si sta avvicinando ora a Linux sia per gli utenti esperti che vogliono approfondire le loro conoscenze.
Di seguito una breve guida per alcuni comandi Linux che ritendo sia necessario conoscere:
awk
Uso: `awk [opzioni] ‘programma’ input-file(s)`:
- Descrizione: `awk` è un linguaggio di programmazione usato per la manipolazione di dati e la generazione di report. Permette di scrivere piccoli programmi che implementano complesse operazioni su file di testo.
- Esempio: Stampa la seconda colonna di un file:
awk '{print $2}' file.txt
sed
Uso: `sed [opzioni] ‘comando’ file`:
- Descrizione: `sed` è uno stream editor per modificare i file di testo automaticamente. È utilizzato comunemente per sostituire testo, inserire o cancellare linee
- Esempio: Sostituisce “vecchio” con “nuovo” in un file:
sed 's/vecchio/nuovo/g' file.txt
grep
Uso: `grep [opzioni] pattern [file]`
- Descrizione: `grep` è usato per cercare all’interno dei file testuali per righe che corrispondono a un pattern specificato.
- Esempio: Cerca la parola “esempio” in `documento.txt`:
grep "esempio" documento.txt
systemctl
Uso: `systemctl [comando] [nome-servizio]`
- – Descrizione: `systemctl` è il comando centrale per gestire il sistema systemd e i servizi relativi.
- Esempio: Avvia il servizio ssh:
systemctl start sshd
iptables
Uso: `iptables [opzioni]`
- Descrizione: `iptables` è utilizzato per configurare le regole del firewall nel kernel Linux.
- Esempi: Bloccare tutto il traffico da una specifica subnet
a.Blocca tutto il traffico in entrata da una subnet specifica, ad esempio la subnet `192.168.1.0/24`:
iptables -A INPUT -s 192.168.1.0/24 -j DROP
b.Consente il traffico su una specifica porta, per consentire il traffico su una porta specifica, come la porta 80 (HTTP), puoi utilizzare il seguente comando:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
c. Reindirizza il traffico da una porta all’altra, questo comando è utile per il reindirizzamento del traffico, ad esempio, reindirizzare tutto il traffico dalla porta 80 alla porta 8080:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
d. Blocca il traffico in uscita verso un determinato IP, se vuoi bloccare tutto il traffico in uscita verso un IP specifico, come `123.123.123.123`, puoi fare così:
iptables -A OUTPUT -d 123.123.123.123 -j DROP
e. Limita i tentativi di connessione per mitigare gli attacchi di tipo DoS, puoi limitare il numero di tentativi di connessione da un IP usando il modulo `limit`, questo comando consente non più di 10 connessioni al minuto con una “bolla” di 3 connessioni.
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/min --limit-burst 3 -j ACCEPT
f. Consente il traffico solo se proviene da una specifica interfaccia di rete, per esempio, consentire il traffico in ingresso sulla porta 22 (SSH) solo se proviene dall’interfaccia `eth0`:
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
g. Registra i pacchetti droppati, per monitorare gli accessi o attività sospette, potresti voler registrare i pacchetti che vengono droppati:
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables dropped: " --log-level 4 iptables -A INPUT -j DROP
tcpdump
Uso: `tcpdump [opzioni]`
– Descrizione: `tcpdump` è uno strumento per analizzare il traffico di rete che passa attraverso il tuo sistema.
– Esempio: Cattura pacchetti sulla porta 80:
tcpdump port 80
rsync
Uso: `rsync [opzioni] sorgente destinazione`
– Descrizione: `rsync` è usato per la sincronizzazione di file e cartelle tra due sistemi in modo efficiente.
– Esempio: Sincronizza la directory locale con una remota:
rsync -avz /local/dir user@remote:/remote/dir
find
Uso: `find [percorso] [opzioni] [azione]`
– Descrizione: `find` cerca file e directory nel file system che soddisfano una condizione espressa.
– Esempio: Trova tutti i file .txt modificati negli ultimi 7 giorni:
find / -name '*.txt' -mtime -7
cron
Uso: Editing di crontab con `crontab -e`
– Descrizione: `cron` è usato per pianificare l’esecuzione di script a intervalli regolari.
– Esempio: Esegui uno script ogni giorno alle 5 AM:
0 5 * * * /path/to/script.sh
lsof
Uso: `lsof [opzioni]`
– Descrizione: `lsof` elenca i file aperti da processi in esecuzione.
– Esempio: Elenca tutti i file aperti da un utente specifico:
lsof -u nomeutente
Per maggiori dettagli e opzioni avanzate, consulta le pagine man del tuo sistema (`man nomecomando`).
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.
Comments