Una panoramica su come riconoscere e utilizzare il software di utilità sul Raspberry PI.
Abbiamo letto i primi quattro punti della rubrica
Raspberry Pi, le basi
Avendo il sistema operativo pronto, iniziamo a scoprire un po' i software e file che ho trovato utili nella mia esperienza con RaspberryPi.
SSH e configurazioni di rete
Dopo l'installazione di Raspbian ho sempre l'abitudine di copiare i miei due fidati file dentro la cartella /BOOT, il file
sshe
wpa_supplicant.conf.
Personalmente avere la possibilità di accedere in locale tramite ssh, mi permette di mettere il RaspberryPi dove voglio, semplicemente collegandolo all'alimentazione e alla rete.
Per non aver seccature nel trovarlo, nel router, nella sezione server DHCP, ho prenotato l'indirizzo ip fisso al suo MAC address della scheda WiFi, cosi senza configurare nulla, avrò sempre lo stesso ip, indipendentemente dal sistema operativo.
Per trovare il MAC address ci sono vari modi, io semplicemente o lo cerco tramite il pannello del router adsl domestico o in alternativa si possono usare i vari scanner di rete disponibili, per Windows di norma uso Advanced IP Scanner. Con Linux si può provare
sudo fing 10.9.8.0/24dove al posto dei numeri userai quelle della tua rete interna, mentre se sei gia connesso al RaspberryPi, un semplice
ifconfigsarà sufficente.
Grazie al file wpa_supplicant.conf potremmo collegarci al WiFi automaticamente al primo avvio, niente di più comodo per un dispositivo IoT.
country=IT ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1network={ ssid="NomeDelTuoWifi" psk="PasswordWifi" key_mgmt=WPA-PSK }
Per gli amanti degli ip statici, la configurazione è gestibile tramite
sudo nano /etc/dhcpcd.confin Raspbian Buster.
In questo file troverai varie configurazione da personalizzare e decommentare. Per attivarle la via più semplice sarà riavviare il dispositivo.
Di rete ce ne sarebbe da parlare all'infinito, ma concludiamo con qualche comando e file che io ritengo pratico ed utile anche all'inizio.
hostname -I
: permette di leggere gli ip di tutte le interfacce.curl ifconfig.me
: è molto utile per leggere l'ip pubblico della rete a cui è collegato il RaspberryPi, nel caso tu non usassi duckdns o simili.curl wttr.in
: ok ok , non centra con la rete, ma provalo dai!ifconfig
: da informazioni più dettagliate sulle schede di rete.sudo nano /etc/hostname
: per modificare il nome del RaspberryPi, si può anche fare consudo raspi-config
.sudo nano /etc/hosts
: permette di forzare l'associazione nome dispositivo-ip.ping 8.8.8.8
: pratico per testare se internet funziona e quanto è stabile, se perde pacchetti ci sono problemi.ping libero.it
: se il comando precedente funziona, ma questo no, hai problemi con i dns.nmap 192.168.1.0/24 -Pn
: scansiona i dispositivi e le porte standard nella rete locale. Scrivi il numero corretto per la tua rete.
Un comando molto utile usando ssh è
ssh-copy-id, in pratica invia la propria chiave ad un altro linux per evitare di mettere utente e password ad ogni accesso. Pensa ad esempio nel voler usare uno script per eseguire il backup tra due server linux, o accedervi tramite ssh evitando il login con la password. MobaXTerm esegue questa comoda procedura automaticamente al primo login.
Perfetto! per la rete già ne avrai di esperimenti da fare, passiamo al resto dei comandi utili.
Espressioni regolari
Le espressioni regolari hanno un vantaggio, con loro funziona la regola 80/20.
Otterrai l’80% dei risultati con il 20% degli sforzi
Le Regex sono complicate da digerire, ma entrando nel mondo linux di sicuro ti ci imbatterai. Riassumendo brutalmente, se devi eseguire un comando , grazie a dei semplici caratteri puoi ampliarne le potenzialità.
Esempio pratico:
cat /var/log/miolog15012020.logleggerà un solo log.
cat /var/log/miolog*leggerà tutti i log che nel nome, dopo miolog avranno qualsiasi parola o numero.
Guida alle espressioni regolari (RegEx) per webmaster
Gestire i file
Linux ha moltissimi file editabili, per esempio in /etc troverai gran parte delle configurazioni dei software che userai, di norma bene commentate e con un file sample di esempio.
Per gestire i file potrebbe essere necessario avere i permessi, basterà precedere il comando con sudo.
ls /etc
: elenca i file nel persorso selezionato o usando RegEx, solo quelli con determinati pattern.mv file_da_spostare directory_di_destinazione
: muove i file.cp file_da_copiare directory_di_destinazione
: copia i file, spesso usato per fare un backup di un file config prima di modificarlo.touch /percorso/nomedelfile
: si usa spesso per creare un nuovo file vuoto.nano /precorso/nomedel file
: nano è un editor di testo, nei tutorial per la rete trovi sempre la scritta vi , personalmente amo la semplicità.cat /percorso/file
: leggere il contenuto dei file, si può usare con le RegEx per concatenarne vari.zcat /percorso/file
: utile per leggere il contenuto di file di testo zippati, come spesso accade con i log.tail : perfetto ler leggere il log
, visualizza le ultime righe di un file di testo.rm /percorso/file
: cancella i file, da usare con attenzione.nano ~/.bashrc
enano ~/.bashrc_aliases
: puoi crearci alias e modificare la shell, dagli un occhiata.chmod +x /percorso/file
: rende eseguibile un file. In generale chmod serve per impostare qualsiasi permesso sul file.chown
: invece permette di cambiarne il proprietario.
Gestire le cartelle
La gestione delle cartelle è già più semplice.
cd /percorso/file
: ci si sposta nella determinata cartella, premendo tab completerà il nomecp dir1 dir2
: copia le cartellersync /path/to/source/ /path/to/destination/
: un modo ottimale per copiare le cartelle, spesso usato per i backup.rmdir
: cancella le cartellechmod
echown
: funzionano come per i file
Gestione dei software e servizi
I software dopo le modifiche di norma hanno dei servizi da riavviare, principalmente ogni software ha una sua procedura preferita, ad esempio
nginx -s reload, ma diciamo a grandi linee che su Raspbian Buster, io uso
systemctl.
systemctlgestisce i servizi , utilizzandolo con i suo parametri, si possono riavviare, avviare, fermare i servizi. Ricordarsi i nomi precisi non è semplice, ma basta usare l'asterisco e passa la paura.
Un esempio pratico
systemctl status cro*, visualizzerà lo stato di tutti i servizi che iniziano per cro, nel mio caso cercavo
cron.service.
La cosa bella è che verranno visualizzati anche alcune righe del log, utili per verificare al volo delle anomalie. Inoltre troveremo lo stato se attivo oppure no, pid, docs, ram e comando usato per avviarlo.
Gli altri parametri più usati sono
start,
stop,
restart,
enablee
disable, con
man systemctltroverai tutto il manuale di istruzioni.
I singoli processi invece di solito li uccido tramite il comando
sudo killall nomecomando, magari controllando prima tramite
ps aux | grep NomeComando*.
Direi che per oggi questi comandi sono sufficienti per partire a muovere i primi passi in Linux e RaspberryPi, ci vediamo nella prossima parte della nostra rubrica, RaspberryPi, le basi.
Bonus
Come bonus che ne dici di provare raspi-info ?
RASPI-INFO fornisce oltre 100 "suggerimenti sulla shell" che possono esserti utili per bash!
I dispositivi che ho provato negli anni
- RaspberryPi 2
- RaspberryPi 3B
- RaspberryPi Zero W
- Sensori di ogni sorta, e ancora sensori, acquistati da Amazon