SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
GNU/Linux@UNINA
● Educazione Complementare
○ Fare pratica!
○ Utile per i colloqui
○ Soft Skill
● Linux
○ Esami e Lavoro
○ Scegliere cos’è meglio per te!
● To Be Continued! Stay tuned
Perchè questo seminario!?
Perché sono cosi forti:
● Distribuzioni: Kernel + Applicazioni del progetto
GNU
● Progetto GNU e F.O.S.S.
○ 4 Libertà fondamentali
● FreeSoftware vs OpenSource
○ Free come libero!
● Linux e Linus
Cos’è GNU/Linux?
Perché sono cosi forti:Monolitico vs Microkernel
Perché sono cosi forti:Architettura
Perché sono cosi forti:Black… all the shell have a black background
Perché sono cosi forti:Come interagiamo normalmente con un sistema
Shell
Kernel
Hardware
Perché sono cosi forti:Shell
● Implementa l’interfaccia a riga di comando ;
● Si tratta di un interprete di comandi che permette all'utente di
comunicare col sistema operativo attraverso una serie di funzioni
predefinite;
● Concatena vari comandi, costruendo l’equivalente di una catena di
montaggio, realizzando così un comando complesso partendo da
comandi più semplici ;
● Permette di eseguire programmi e script .
Perché sono cosi forti:Shells???
la shell è un programma come qualsiasi altro pertanto si possono avere
diverse versioni di shell su sistema :
● sh (prima shell dei sistemi Unix);
● bash (shell degli attuali sistemi GNU/Linux);
● ash (shell minimale per sistemi con risorse limitate).
● shell fatte da voi !
Perché sono cosi forti:Utility sistema : Filosofia
Ogni strumento necessario al funzionamento del sistema è un
programma, che fa una cosa nel miglior modo possibile!
Ad esempio :
● mv ( move ) ;
● cp ( copy ) ;
● le altre core-utils ( coltellino svizzero ) ;
● interprete dei comandi.
Perché sono cosi forti:Shell : Ready ??? GO!!
● Apri terminale
○ Digita i seguenti comandi :
■ ls /;
■ ps ;
■ top ;
■ cat /etc/passwd ;
1
2
3
Perché sono cosi forti:Filesystem hierarchy standard
Perché sono cosi forti:
● Regular file [ - ]: un file che contiene dei dati
● Directory [ d ]: contiene una lista di nomi associati a degli inode.
● Symbolic link [ l ]: contiene un riferimento ad un altro file o directory.
● Char Device [ c ]: identifica una periferica ad accesso a caratteri.
● Block device [ b ]: identifica una periferica ad accesso a blocchi.
● fifo o pipe [ p ]:identifica una linea di comunicazione unidirezionale.
● socket [ s ]: identifica una linea di comunicazione bidirezionale.
Everything is a file
Perché sono cosi forti:Users and Permission
● Utenti e UID: /etc/shadow
● Gruppi e GUID: /etc/group
● Informazioni sui file: ls -n
Perché sono cosi forti:Sudo users
● Root vs Sudo
● Aggiungere un nuovo utente:
○ # adduser nomeutente
● Aggiungerlo al gruppo degli utenti sudo
○ # usermod -aG sudo nomeutente
● visudo /etc/sudoers
○ Definire regole per utenti e gruppi
Perché sono cosi forti:Installiamo!
● Sistemi Debian Like : APT,
dpkg (.deb)
● RedHat: yum, DNF (rpm)
● Arch: Pacman
● Multi distribuzione:
○ Snap
○ Flatpack
○ Compilare
○ Script
Perché sono cosi forti:Man : reference manuals
● Molti programmi hanno un manuale che ne descrive il suo
comportamento e le opzioni.
● Proviamolo :
○ man ls ;
○ man ps ;
○ man semop;
○ man semget;
○ man top ;
Navigare in man:
● premere “q” per uscire;
● premere “/” per entrare in modalità ricerca
Perché sono cosi forti:Struttura di un comando base
ls -a -l --color=no main.c
● ls : comando;
● -a,-l : opzioni in forma abbreviata;
● --color= : opzione in forma estesa;
● no : valore dell’opzione
● main.c valore in input al comando
Perché sono cosi forti:La redirezione dell’I/O
● Cosa succede quando un comando viene lanciato?
○ Esso si aspetta di avere disponibili e già aperti i seguenti file :
■ standard input filedescriptor: 0
■ output filedescriptor: 1
■ error filedescriptor: 2
In un sistema GNU/LInux tutto è un FILE!
Cosa è un fd ?
-- man fopen
Perché sono cosi forti:Redirezione dell’output sul file
● aprire due finestre di terminale
● nella prima
○ touch test ;
○ tail -f test .
● Nella seconda
○ echo “ciao” > test ;
○ echo “mondo” > test ;
○ echo “ciao mondo” >> test ;
○ cat test ⇐⇒ cat < test .
Perché sono cosi forti:Proviamo tail con apache
● # apt-get update
● # apt-cache search apache
● # apt-get install apache2
○ # service apache2 status
○ # service apache2 restart
○ tail -f < /var/log/apache2/access.log
● aprire nel browser 127.0.0.1
Il # indica che il comando deve
essere eseguito come con i
privilegi di superutente.
Il comando sudo sta per super
user do
Perché sono cosi forti:Redirezione dell’I/O (NextLevel)
● nella prima finestra:
○ nc -lnvp 4444
● nella seconda
○ cd /etc/
○ bash -i >& /dev/tcp/127.0.0.1/4444 0>&1
■ bash -i : esegue la shell in modalità interattiva ;
■ >&: “ redirezione lo standard output e lo standard error di bash
sulla socket “, invio i risultati dei comandi a nc;
■ 0 >&1: “muove il file descriptor dello standard output della socket
nello standard input del terminale “,(da i comandi a bash!).
/dev/tcp/127.0.0.1/4444
è un file!!
Perché sono cosi forti:Redirezione dell’output NextLevel
Perché sono cosi forti:La pipe “|”
● La pipe
○ ls -al | grep "main.c"
○ ifconfig wlo1 | grep "inet "
○ ifconfig wlo1 | grep "inet " | awk '{print $2}'
Perché sono cosi forti:Le variabili
● echo $PATH
● export TEST=”ciao mondo”
○ echo $TEST
○ unset $TEST
● export RES=$( ls -al /bin/ | grep mv | awk '{line=$1" "$3"
"$9;print line}')
○ echo $RES
Perché sono cosi forti:Script
Uno script può contenere :
● una semplice lista di comandi
● funzioni
● cicli
● istruzioni condizionali
Perché sono cosi forti:Base di uno Script
La prima cosa da indicare in uno script è il percorso dell’interprete che si
vuole utilizzare per eseguire i comandi preceduto dalla direttiva #! .
Ad esempio se si vuole utilizzare bash:
#! /bin/bash
Ogni riga dello script, a meno
che non presenti dei caratteri
di escape, viene interpretata
come un comando!
Perché sono cosi forti:Commenti
Le righe di commento iniziano con #.
Ad esempio :
#! Questo è un commento !
Perché sono cosi forti:Variabili
Bash è un linguaggio a tipizzazione dinamica, non è richiesto indicare
il tipo dei dati che la variabile conterrà.
Per dichiarare una variabile basta indicare il nome e il valore, utilizzando
la seguente sintassi:
NomeVariabile=Valore Attenzione agli spazi !!
La sintassi di bash non prevede
l’utilizzo degli spazi prima e
dopo il segno di =
Perché sono cosi forti:Variabili
Per utilizzare una variabile si utilizza la seguenti sintassi :
$NomeVariabile
# Variabile
X=2019
# Uso della variabile
echo $X
Perché sono cosi forti:Stringe
Le stringhe possono andare sia tra “” che tra ‘’.
Quando si usano i ‘’ il parser considera i caratteri speciali di bash come
normali caratteri e non come direttive per la shell.
Ad esempio :
X=2019
echo “Anno : $X” #Stampa il valore della variabile X
echo ‘Anno : $X’ #Stampa $X
Perché sono cosi forti:Array
Per definire un array basta sintassi :
NomeArray=(valore1 valore2 ….)
# Array
X=(‘NaLUG’ ‘Workshop’ ‘2019’)
# Uso
echo ${X[*]}
Perché sono cosi forti:Uso degli Array
Per gestire un array basta di solito la seguente sintassi :
● ${arr[*]} # Tutti gli elementi nell’array
● ${!arr[*]} # Tutti gli indici dell’array
● ${#arr[*]} # Numero di elementi nell’array
● ${#arr[0]} # Length of item zero
Perché sono cosi forti:Variabili di built-in
● $# : Numero di argomenti passati in input
● $$ : pid del comando corrente ;
● $0 : nome del comando in esecuzione ;
● $* (* ∈ N-{0} ) : variabili in ingresso ;
● $@ : Tutti i parametri in ingresso ;
● $? : Stato di uscita dell’ultimo comando.
Perché sono cosi forti:Operazioni tra numeri
Bash prevede una sintassi particolare per eseguire operazioni tra
numeri interi, in particolare una qualsiasi operazione va tra $(( ))
X=3
Y=4
#Stampo la somma tra i valori di X e Y
echo “$(( $X+$Y))”
Perché sono cosi forti:Comando Test
Il comando test è utilizzato per valutare il valore di un'espressione
logica.
test “ciao” != “Ciao”
test 1 == 2
[ “ciao” != “ciao” ]
Il risultato viene in una delle variabili di built-in della
shell.
in particolare in $? viene salvato il valore di ritorno
dell’ultimo comando eseguito ( 0 eseguito senza
errori )
Perché sono cosi forti:Come scrivere le condizioni??
man test
Perché sono cosi forti:Struttura dell’ IF
if [ condizione ] ; then
elif [ condizione ] ; then
else
fi
Perché sono cosi forti:Struttura del while e del for
while [ condizione ] do
done
for i in $(seq 0 n) ; do
done
Perché sono cosi forti:Esempio
Proviamo a realizzare uno script che ci fornisce l’indirizzo ip di un
interfaccia di rete presente nel nostro sistema.
L’interfaccia viene passata come parametro di input.
Perché sono cosi forti:Esempio
#!/bin/bash
#Controllo il numero di parametri in input
if [ $# -eq 1 ]; then
INTERFACE=$1
IP=$(sudo ifconfig $INTERFACE | grep "inet " | awk '{print $2}')
echo “L’ip dell’interfaccia $INTERFACE è $IP”
fi
chmod +x
./getIP.sh wlo1
Perché sono cosi forti:Proviamo a fare uno script
Contiamo il numero di occorrenze di una data parola nei file
.txt in una cartella.
Perché sono cosi forti:Continua ad esercitarti a casa
● https://explainshell.com
● http://www.pluto.it/files/ildp/HOWTO/Bash-Prog-Intro-HO
WTO/Bash-Prog-Intro-HOWTO.html
● https://www.fis.uniroma3.it/CALCOLO_DOC/unix/appuntil
inux/alndx.htm
Perché sono cosi forti:Contattaci
/NaLinuxUsersGroup
http://www.nalug.net
info@nalug.net
Perché sono cosi forti:That’s all Folks!
Attribuzione - Non commerciale - Condividi allo
stesso modo
Questa licenza permette a terzi di modificare,
redistribuire, ottimizzare ed utilizzare la tua opera
come base non commerciale, fino a che ti diano il
credito e licenzino le loro nuove creazioni mediante i
medesimi termini

Más contenido relacionado

La actualidad más candente

Linux day 2016 la shell in linux
Linux day 2016   la shell in linuxLinux day 2016   la shell in linux
Linux day 2016 la shell in linuxGiuseppe Piccolo
 
Lezione 4: Comunicazione con UDP
Lezione 4: Comunicazione con UDPLezione 4: Comunicazione con UDP
Lezione 4: Comunicazione con UDPAndrea Della Corte
 
Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...
 Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti... Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...
Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...Fulvio Corno
 
Assembly and Reverse Engineering
Assembly and Reverse EngineeringAssembly and Reverse Engineering
Assembly and Reverse Engineeringluigi capuzzello
 
Buffer Overflow - Shellcode - Shatter Attack
Buffer Overflow - Shellcode - Shatter AttackBuffer Overflow - Shellcode - Shatter Attack
Buffer Overflow - Shellcode - Shatter Attackluigi capuzzello
 
Sistemi operativi Fabiano Dalla Piazza
Sistemi operativi  Fabiano Dalla PiazzaSistemi operativi  Fabiano Dalla Piazza
Sistemi operativi Fabiano Dalla PiazzaFabiano Dalla Piazza
 
Presentazione Oz - Mozart
Presentazione Oz - MozartPresentazione Oz - Mozart
Presentazione Oz - Mozartfede
 
Groovy e Domain Specific Languages
Groovy e Domain Specific LanguagesGroovy e Domain Specific Languages
Groovy e Domain Specific LanguagesTiziano Lattisi
 
Introduzione al linguaggio PHP
Introduzione al linguaggio PHPIntroduzione al linguaggio PHP
Introduzione al linguaggio PHPextrategy
 
Let's give it a GO!
Let's give it a GO!Let's give it a GO!
Let's give it a GO!MarioTraetta
 

La actualidad más candente (17)

Linux day 2016 la shell in linux
Linux day 2016   la shell in linuxLinux day 2016   la shell in linux
Linux day 2016 la shell in linux
 
Lezione 4: Comunicazione con UDP
Lezione 4: Comunicazione con UDPLezione 4: Comunicazione con UDP
Lezione 4: Comunicazione con UDP
 
As it e icloud
As it e icloudAs it e icloud
As it e icloud
 
Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...
 Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti... Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...
Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...
 
Logging
LoggingLogging
Logging
 
Assembly and Reverse Engineering
Assembly and Reverse EngineeringAssembly and Reverse Engineering
Assembly and Reverse Engineering
 
Buffer Overflow - Shellcode - Shatter Attack
Buffer Overflow - Shellcode - Shatter AttackBuffer Overflow - Shellcode - Shatter Attack
Buffer Overflow - Shellcode - Shatter Attack
 
Gcc & Make
Gcc & MakeGcc & Make
Gcc & Make
 
Sistemi operativi Fabiano Dalla Piazza
Sistemi operativi  Fabiano Dalla PiazzaSistemi operativi  Fabiano Dalla Piazza
Sistemi operativi Fabiano Dalla Piazza
 
Rest sdk
Rest sdkRest sdk
Rest sdk
 
Presentazione Oz - Mozart
Presentazione Oz - MozartPresentazione Oz - Mozart
Presentazione Oz - Mozart
 
Groovy e Domain Specific Languages
Groovy e Domain Specific LanguagesGroovy e Domain Specific Languages
Groovy e Domain Specific Languages
 
Introduzione al linguaggio PHP
Introduzione al linguaggio PHPIntroduzione al linguaggio PHP
Introduzione al linguaggio PHP
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
 
Introduzione a Python
Introduzione a PythonIntroduzione a Python
Introduzione a Python
 
Il simulatore NS-2
Il simulatore NS-2Il simulatore NS-2
Il simulatore NS-2
 
Let's give it a GO!
Let's give it a GO!Let's give it a GO!
Let's give it a GO!
 

Similar a Linux@Unina

Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)CRS4 Research Center in Sardinia
 
Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018Marco Chiesi
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)STELITANO
 
RiminiLUG. Mini Corso su Linux p2: Networking & Terminal
RiminiLUG. Mini Corso su Linux p2: Networking & TerminalRiminiLUG. Mini Corso su Linux p2: Networking & Terminal
RiminiLUG. Mini Corso su Linux p2: Networking & TerminalAlessandro Carichini
 
Laboratorio Programmazione: Memoria dinamica
Laboratorio Programmazione: Memoria dinamicaLaboratorio Programmazione: Memoria dinamica
Laboratorio Programmazione: Memoria dinamicaMajong DevJfu
 
2 Linux Comandi Essenziali
2 Linux Comandi Essenziali2 Linux Comandi Essenziali
2 Linux Comandi EssenzialiMauro Ferrigno
 
Al telefono con Adhearsion e Ruby
Al telefono con Adhearsion e RubyAl telefono con Adhearsion e Ruby
Al telefono con Adhearsion e RubyLuca Pradovera
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourserik0
 
Codemotion 2012 creare un proprio linguaggio di programmazione
Codemotion 2012 creare un proprio linguaggio di programmazioneCodemotion 2012 creare un proprio linguaggio di programmazione
Codemotion 2012 creare un proprio linguaggio di programmazioneGabriele Guizzardi
 

Similar a Linux@Unina (20)

Bash programming
Bash programmingBash programming
Bash programming
 
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)
 
Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018
 
Linux shell
Linux shellLinux shell
Linux shell
 
Linux shell
Linux shellLinux shell
Linux shell
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)
 
X2 Linux Riassunti
X2 Linux RiassuntiX2 Linux Riassunti
X2 Linux Riassunti
 
As it e icloud
As it e icloudAs it e icloud
As it e icloud
 
Linux Day 2009 LAMP HowTo
Linux Day 2009 LAMP HowToLinux Day 2009 LAMP HowTo
Linux Day 2009 LAMP HowTo
 
RiminiLUG. Mini Corso su Linux p2: Networking & Terminal
RiminiLUG. Mini Corso su Linux p2: Networking & TerminalRiminiLUG. Mini Corso su Linux p2: Networking & Terminal
RiminiLUG. Mini Corso su Linux p2: Networking & Terminal
 
pugBO #10 PSR e Composer
pugBO #10 PSR e ComposerpugBO #10 PSR e Composer
pugBO #10 PSR e Composer
 
GNU Linux Programming introduction
GNU Linux Programming introductionGNU Linux Programming introduction
GNU Linux Programming introduction
 
Laboratorio Programmazione: Memoria dinamica
Laboratorio Programmazione: Memoria dinamicaLaboratorio Programmazione: Memoria dinamica
Laboratorio Programmazione: Memoria dinamica
 
2 Linux Comandi Essenziali
2 Linux Comandi Essenziali2 Linux Comandi Essenziali
2 Linux Comandi Essenziali
 
Al telefono con Adhearsion e Ruby
Al telefono con Adhearsion e RubyAl telefono con Adhearsion e Ruby
Al telefono con Adhearsion e Ruby
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourse
 
Codemotion 2012 creare un proprio linguaggio di programmazione
Codemotion 2012 creare un proprio linguaggio di programmazioneCodemotion 2012 creare un proprio linguaggio di programmazione
Codemotion 2012 creare un proprio linguaggio di programmazione
 
introduzione a symfony 2
introduzione a symfony 2 introduzione a symfony 2
introduzione a symfony 2
 
Pycon
PyconPycon
Pycon
 

Más de NaLUG

Grid System
Grid SystemGrid System
Grid SystemNaLUG
 
Cyber Forensic
Cyber ForensicCyber Forensic
Cyber ForensicNaLUG
 
Digital Divide
Digital DivideDigital Divide
Digital DivideNaLUG
 
Drupal
DrupalDrupal
DrupalNaLUG
 
Digital Forensic
Digital ForensicDigital Forensic
Digital ForensicNaLUG
 
Open Source: strumento per l'e-democracy
Open Source: strumento per l'e-democracyOpen Source: strumento per l'e-democracy
Open Source: strumento per l'e-democracyNaLUG
 
OpenHardware : Arduino
OpenHardware : ArduinoOpenHardware : Arduino
OpenHardware : ArduinoNaLUG
 
Understanding Linux
Understanding LinuxUnderstanding Linux
Understanding LinuxNaLUG
 
Net Neutrality: HoBBIT
Net Neutrality: HoBBITNet Neutrality: HoBBIT
Net Neutrality: HoBBITNaLUG
 
Opensource per un Sistema Informativo Territoriale
Opensource per un Sistema Informativo TerritorialeOpensource per un Sistema Informativo Territoriale
Opensource per un Sistema Informativo TerritorialeNaLUG
 
Knomos
Knomos Knomos
Knomos NaLUG
 
App comunicazione comune di Napoli
App comunicazione comune di NapoliApp comunicazione comune di Napoli
App comunicazione comune di NapoliNaLUG
 
BISmark : the broadband internet service benchmark
BISmark : the broadband internet service benchmarkBISmark : the broadband internet service benchmark
BISmark : the broadband internet service benchmarkNaLUG
 
ClearOS
ClearOSClearOS
ClearOSNaLUG
 
Security and hacking Engineering
Security and hacking EngineeringSecurity and hacking Engineering
Security and hacking EngineeringNaLUG
 
Software libero at ENEA
Software libero at ENEASoftware libero at ENEA
Software libero at ENEANaLUG
 
Una nuova crittografia frattale: Crypt fna
Una nuova crittografia frattale: Crypt fnaUna nuova crittografia frattale: Crypt fna
Una nuova crittografia frattale: Crypt fnaNaLUG
 
ROS@Unina
ROS@Unina   ROS@Unina
ROS@Unina NaLUG
 
Python@Unina - Exercises
Python@Unina - ExercisesPython@Unina - Exercises
Python@Unina - ExercisesNaLUG
 
Python@Unina - Theory
Python@Unina - TheoryPython@Unina - Theory
Python@Unina - TheoryNaLUG
 

Más de NaLUG (20)

Grid System
Grid SystemGrid System
Grid System
 
Cyber Forensic
Cyber ForensicCyber Forensic
Cyber Forensic
 
Digital Divide
Digital DivideDigital Divide
Digital Divide
 
Drupal
DrupalDrupal
Drupal
 
Digital Forensic
Digital ForensicDigital Forensic
Digital Forensic
 
Open Source: strumento per l'e-democracy
Open Source: strumento per l'e-democracyOpen Source: strumento per l'e-democracy
Open Source: strumento per l'e-democracy
 
OpenHardware : Arduino
OpenHardware : ArduinoOpenHardware : Arduino
OpenHardware : Arduino
 
Understanding Linux
Understanding LinuxUnderstanding Linux
Understanding Linux
 
Net Neutrality: HoBBIT
Net Neutrality: HoBBITNet Neutrality: HoBBIT
Net Neutrality: HoBBIT
 
Opensource per un Sistema Informativo Territoriale
Opensource per un Sistema Informativo TerritorialeOpensource per un Sistema Informativo Territoriale
Opensource per un Sistema Informativo Territoriale
 
Knomos
Knomos Knomos
Knomos
 
App comunicazione comune di Napoli
App comunicazione comune di NapoliApp comunicazione comune di Napoli
App comunicazione comune di Napoli
 
BISmark : the broadband internet service benchmark
BISmark : the broadband internet service benchmarkBISmark : the broadband internet service benchmark
BISmark : the broadband internet service benchmark
 
ClearOS
ClearOSClearOS
ClearOS
 
Security and hacking Engineering
Security and hacking EngineeringSecurity and hacking Engineering
Security and hacking Engineering
 
Software libero at ENEA
Software libero at ENEASoftware libero at ENEA
Software libero at ENEA
 
Una nuova crittografia frattale: Crypt fna
Una nuova crittografia frattale: Crypt fnaUna nuova crittografia frattale: Crypt fna
Una nuova crittografia frattale: Crypt fna
 
ROS@Unina
ROS@Unina   ROS@Unina
ROS@Unina
 
Python@Unina - Exercises
Python@Unina - ExercisesPython@Unina - Exercises
Python@Unina - Exercises
 
Python@Unina - Theory
Python@Unina - TheoryPython@Unina - Theory
Python@Unina - Theory
 

Linux@Unina

  • 2. ● Educazione Complementare ○ Fare pratica! ○ Utile per i colloqui ○ Soft Skill ● Linux ○ Esami e Lavoro ○ Scegliere cos’è meglio per te! ● To Be Continued! Stay tuned Perchè questo seminario!?
  • 3. Perché sono cosi forti: ● Distribuzioni: Kernel + Applicazioni del progetto GNU ● Progetto GNU e F.O.S.S. ○ 4 Libertà fondamentali ● FreeSoftware vs OpenSource ○ Free come libero! ● Linux e Linus Cos’è GNU/Linux?
  • 4. Perché sono cosi forti:Monolitico vs Microkernel
  • 5. Perché sono cosi forti:Architettura
  • 6. Perché sono cosi forti:Black… all the shell have a black background
  • 7. Perché sono cosi forti:Come interagiamo normalmente con un sistema Shell Kernel Hardware
  • 8. Perché sono cosi forti:Shell ● Implementa l’interfaccia a riga di comando ; ● Si tratta di un interprete di comandi che permette all'utente di comunicare col sistema operativo attraverso una serie di funzioni predefinite; ● Concatena vari comandi, costruendo l’equivalente di una catena di montaggio, realizzando così un comando complesso partendo da comandi più semplici ; ● Permette di eseguire programmi e script .
  • 9. Perché sono cosi forti:Shells??? la shell è un programma come qualsiasi altro pertanto si possono avere diverse versioni di shell su sistema : ● sh (prima shell dei sistemi Unix); ● bash (shell degli attuali sistemi GNU/Linux); ● ash (shell minimale per sistemi con risorse limitate). ● shell fatte da voi !
  • 10. Perché sono cosi forti:Utility sistema : Filosofia Ogni strumento necessario al funzionamento del sistema è un programma, che fa una cosa nel miglior modo possibile! Ad esempio : ● mv ( move ) ; ● cp ( copy ) ; ● le altre core-utils ( coltellino svizzero ) ; ● interprete dei comandi.
  • 11. Perché sono cosi forti:Shell : Ready ??? GO!! ● Apri terminale ○ Digita i seguenti comandi : ■ ls /; ■ ps ; ■ top ; ■ cat /etc/passwd ; 1 2 3
  • 12. Perché sono cosi forti:Filesystem hierarchy standard
  • 13. Perché sono cosi forti: ● Regular file [ - ]: un file che contiene dei dati ● Directory [ d ]: contiene una lista di nomi associati a degli inode. ● Symbolic link [ l ]: contiene un riferimento ad un altro file o directory. ● Char Device [ c ]: identifica una periferica ad accesso a caratteri. ● Block device [ b ]: identifica una periferica ad accesso a blocchi. ● fifo o pipe [ p ]:identifica una linea di comunicazione unidirezionale. ● socket [ s ]: identifica una linea di comunicazione bidirezionale. Everything is a file
  • 14. Perché sono cosi forti:Users and Permission ● Utenti e UID: /etc/shadow ● Gruppi e GUID: /etc/group ● Informazioni sui file: ls -n
  • 15. Perché sono cosi forti:Sudo users ● Root vs Sudo ● Aggiungere un nuovo utente: ○ # adduser nomeutente ● Aggiungerlo al gruppo degli utenti sudo ○ # usermod -aG sudo nomeutente ● visudo /etc/sudoers ○ Definire regole per utenti e gruppi
  • 16. Perché sono cosi forti:Installiamo! ● Sistemi Debian Like : APT, dpkg (.deb) ● RedHat: yum, DNF (rpm) ● Arch: Pacman ● Multi distribuzione: ○ Snap ○ Flatpack ○ Compilare ○ Script
  • 17. Perché sono cosi forti:Man : reference manuals ● Molti programmi hanno un manuale che ne descrive il suo comportamento e le opzioni. ● Proviamolo : ○ man ls ; ○ man ps ; ○ man semop; ○ man semget; ○ man top ; Navigare in man: ● premere “q” per uscire; ● premere “/” per entrare in modalità ricerca
  • 18. Perché sono cosi forti:Struttura di un comando base ls -a -l --color=no main.c ● ls : comando; ● -a,-l : opzioni in forma abbreviata; ● --color= : opzione in forma estesa; ● no : valore dell’opzione ● main.c valore in input al comando
  • 19. Perché sono cosi forti:La redirezione dell’I/O ● Cosa succede quando un comando viene lanciato? ○ Esso si aspetta di avere disponibili e già aperti i seguenti file : ■ standard input filedescriptor: 0 ■ output filedescriptor: 1 ■ error filedescriptor: 2 In un sistema GNU/LInux tutto è un FILE! Cosa è un fd ? -- man fopen
  • 20. Perché sono cosi forti:Redirezione dell’output sul file ● aprire due finestre di terminale ● nella prima ○ touch test ; ○ tail -f test . ● Nella seconda ○ echo “ciao” > test ; ○ echo “mondo” > test ; ○ echo “ciao mondo” >> test ; ○ cat test ⇐⇒ cat < test .
  • 21. Perché sono cosi forti:Proviamo tail con apache ● # apt-get update ● # apt-cache search apache ● # apt-get install apache2 ○ # service apache2 status ○ # service apache2 restart ○ tail -f < /var/log/apache2/access.log ● aprire nel browser 127.0.0.1 Il # indica che il comando deve essere eseguito come con i privilegi di superutente. Il comando sudo sta per super user do
  • 22. Perché sono cosi forti:Redirezione dell’I/O (NextLevel) ● nella prima finestra: ○ nc -lnvp 4444 ● nella seconda ○ cd /etc/ ○ bash -i >& /dev/tcp/127.0.0.1/4444 0>&1 ■ bash -i : esegue la shell in modalità interattiva ; ■ >&: “ redirezione lo standard output e lo standard error di bash sulla socket “, invio i risultati dei comandi a nc; ■ 0 >&1: “muove il file descriptor dello standard output della socket nello standard input del terminale “,(da i comandi a bash!). /dev/tcp/127.0.0.1/4444 è un file!!
  • 23. Perché sono cosi forti:Redirezione dell’output NextLevel
  • 24. Perché sono cosi forti:La pipe “|” ● La pipe ○ ls -al | grep "main.c" ○ ifconfig wlo1 | grep "inet " ○ ifconfig wlo1 | grep "inet " | awk '{print $2}'
  • 25. Perché sono cosi forti:Le variabili ● echo $PATH ● export TEST=”ciao mondo” ○ echo $TEST ○ unset $TEST ● export RES=$( ls -al /bin/ | grep mv | awk '{line=$1" "$3" "$9;print line}') ○ echo $RES
  • 26. Perché sono cosi forti:Script Uno script può contenere : ● una semplice lista di comandi ● funzioni ● cicli ● istruzioni condizionali
  • 27. Perché sono cosi forti:Base di uno Script La prima cosa da indicare in uno script è il percorso dell’interprete che si vuole utilizzare per eseguire i comandi preceduto dalla direttiva #! . Ad esempio se si vuole utilizzare bash: #! /bin/bash Ogni riga dello script, a meno che non presenti dei caratteri di escape, viene interpretata come un comando!
  • 28. Perché sono cosi forti:Commenti Le righe di commento iniziano con #. Ad esempio : #! Questo è un commento !
  • 29. Perché sono cosi forti:Variabili Bash è un linguaggio a tipizzazione dinamica, non è richiesto indicare il tipo dei dati che la variabile conterrà. Per dichiarare una variabile basta indicare il nome e il valore, utilizzando la seguente sintassi: NomeVariabile=Valore Attenzione agli spazi !! La sintassi di bash non prevede l’utilizzo degli spazi prima e dopo il segno di =
  • 30. Perché sono cosi forti:Variabili Per utilizzare una variabile si utilizza la seguenti sintassi : $NomeVariabile # Variabile X=2019 # Uso della variabile echo $X
  • 31. Perché sono cosi forti:Stringe Le stringhe possono andare sia tra “” che tra ‘’. Quando si usano i ‘’ il parser considera i caratteri speciali di bash come normali caratteri e non come direttive per la shell. Ad esempio : X=2019 echo “Anno : $X” #Stampa il valore della variabile X echo ‘Anno : $X’ #Stampa $X
  • 32. Perché sono cosi forti:Array Per definire un array basta sintassi : NomeArray=(valore1 valore2 ….) # Array X=(‘NaLUG’ ‘Workshop’ ‘2019’) # Uso echo ${X[*]}
  • 33. Perché sono cosi forti:Uso degli Array Per gestire un array basta di solito la seguente sintassi : ● ${arr[*]} # Tutti gli elementi nell’array ● ${!arr[*]} # Tutti gli indici dell’array ● ${#arr[*]} # Numero di elementi nell’array ● ${#arr[0]} # Length of item zero
  • 34. Perché sono cosi forti:Variabili di built-in ● $# : Numero di argomenti passati in input ● $$ : pid del comando corrente ; ● $0 : nome del comando in esecuzione ; ● $* (* ∈ N-{0} ) : variabili in ingresso ; ● $@ : Tutti i parametri in ingresso ; ● $? : Stato di uscita dell’ultimo comando.
  • 35. Perché sono cosi forti:Operazioni tra numeri Bash prevede una sintassi particolare per eseguire operazioni tra numeri interi, in particolare una qualsiasi operazione va tra $(( )) X=3 Y=4 #Stampo la somma tra i valori di X e Y echo “$(( $X+$Y))”
  • 36. Perché sono cosi forti:Comando Test Il comando test è utilizzato per valutare il valore di un'espressione logica. test “ciao” != “Ciao” test 1 == 2 [ “ciao” != “ciao” ] Il risultato viene in una delle variabili di built-in della shell. in particolare in $? viene salvato il valore di ritorno dell’ultimo comando eseguito ( 0 eseguito senza errori )
  • 37. Perché sono cosi forti:Come scrivere le condizioni?? man test
  • 38. Perché sono cosi forti:Struttura dell’ IF if [ condizione ] ; then elif [ condizione ] ; then else fi
  • 39. Perché sono cosi forti:Struttura del while e del for while [ condizione ] do done for i in $(seq 0 n) ; do done
  • 40. Perché sono cosi forti:Esempio Proviamo a realizzare uno script che ci fornisce l’indirizzo ip di un interfaccia di rete presente nel nostro sistema. L’interfaccia viene passata come parametro di input.
  • 41. Perché sono cosi forti:Esempio #!/bin/bash #Controllo il numero di parametri in input if [ $# -eq 1 ]; then INTERFACE=$1 IP=$(sudo ifconfig $INTERFACE | grep "inet " | awk '{print $2}') echo “L’ip dell’interfaccia $INTERFACE è $IP” fi chmod +x ./getIP.sh wlo1
  • 42. Perché sono cosi forti:Proviamo a fare uno script Contiamo il numero di occorrenze di una data parola nei file .txt in una cartella.
  • 43. Perché sono cosi forti:Continua ad esercitarti a casa ● https://explainshell.com ● http://www.pluto.it/files/ildp/HOWTO/Bash-Prog-Intro-HO WTO/Bash-Prog-Intro-HOWTO.html ● https://www.fis.uniroma3.it/CALCOLO_DOC/unix/appuntil inux/alndx.htm
  • 44. Perché sono cosi forti:Contattaci /NaLinuxUsersGroup http://www.nalug.net info@nalug.net
  • 45. Perché sono cosi forti:That’s all Folks! Attribuzione - Non commerciale - Condividi allo stesso modo Questa licenza permette a terzi di modificare, redistribuire, ottimizzare ed utilizzare la tua opera come base non commerciale, fino a che ti diano il credito e licenzino le loro nuove creazioni mediante i medesimi termini