User Tools

Site Tools


sysadmin:index

Sysadmin training

Occupazione disco (df/du)

L'occupazione delle partizioni si può verificare velocemente con il comando df, mentre l'occupazione delle directory può essere verificata con il comando du. Vedremo di seguito le opzioni e i modi di utilizzo più comuni.

Occupazione di directory e files inclusi nella directory corrente:

du -sh *

Occupazione di directory e files che occupano almeno 1GB:

du -sh * | grep G

Occupazione di directory e files che occupano almeno 1GB ordinate per dimensione:

du -sh * | grep G | sort -n

Occupazione di directory e files ordinata:

du -sh * | sort -n

Occupazione dei singoli files inclusi nella directory /home/andrei/

du sh home/andrei/* 

Spazio occupato in ogni partizione in formato umano

df -h

Introduzione a SSH

[SSH](https://www.ssh.com) è l'acronimo di Secure Shell che può indicare sia un protocollo di sicurezza, sia un software. La sua implementazione libera è OpenSSH.

Gli utilizzi più frequenti di ssh sono: * accedere ad un server remoto per eseguire una shell (o un altro comando); * copiare files;

Nei sistemi GNU/Linux si usa il tool da riga di comando `ssh`, invece nei sistemi Windows si è storicamente utilizzato [Putty](https://putty.org/) anche se da [Windows 10 - Aprile 2018 hanno incluso il comando nativo ssh](https://www.howtogeek.com/340688/whats-coming-in-windows-10s-redstone-4-update-available-march-2018/)

Tre comandi su server remoto

Per accedere ad un host remoto 192.168.42.118 come utente “utente1” (password “utente1”) digitare:

io@my-laptop:~ $ ssh utente1@192.168.42.118

Potete eseguire tre comandi:

utente1@demo1:~ $ cat /etc/hostname
utente1@demo1:~ $ uptime
utente1@demo1:~ $ dmesg -T

E anche altri 2 comandi grazie all'utilizzo della pipe `|` che serve per concatenare 2 comandi:

utente1@demo1:~ $ dmesg -T | tail
utente1@demo1:~ $ dmesg -T | grep -i network
Uno sguardo d'insieme

Processi remoti

2 processi remoti per comunicare hanno bisogno di un indirizzo IP (intero a 32 bit se v4) e una porta (intero a 16 bit) ciascuno. Grazie a questi 2 parametri (e non solo) creano un `socket`. Il processo che fa la richiesta si chiama “client”, quello che sta in ascolto e offre il servizio si chiama “server”. Molti servizi su Internet sono in ascolto su porte note, che sono minori di 1024, il servizio ssh è in ascolto sulla porta 22

Ogni processo è in esecuzione su un sistema operativo a sua volta in esecuzione su un host.

Per esempio spostando la porta su cui è in ascolto il server SSH sulla porta 2222, il client ssh potrà accedere al server tramite il comando:

io@my-laptop:~ $ ssh -p2222 utente1@192.168.42.118

Host e indirizzi IP

Quindi abbiamo:

* Host A:

  • l'host da cui eseguiamo il programma client `ssh` (pacchetto openssh-client)
  • ha un indirizzo IP associato ad una delle sue schede di rete
  • questo perché ha un sistema operativo che implementa lo stack TCP/IP

* Host B:

  • l'host su cui è in esecuzione il server `sshd` (pacchetto openssh-server)
  • ha un indirizzo IP associato ad una delle sue schede di rete
  • questo perché ha un sistema operativo che implementa lo stack TCP/IP
  • l'indirizzo IP del server è statico (se è un vero server), perché deve essere sempre raggiungibile
  • opzionalmente il server ha associato un nome di host riconosciuto dal DNS che fa comodo per raggiungerlo

Host B in questo caso:

  • 192.168.42.118
Utente

Ogni volta che utilizziamo un sistema operativo accediamo come utente. Quindi anche quando accediamo al sistema remoto dobbiamo usare un utente.

Se non specifichiamo l'utente via ssh allora viene usato l'utente attuale. Di solito visibile nella stringa di ``prompt`` (ad es: `io@my-laptop:~ $`)

Altrimenti possiamo specificarlo nel client prima della @ prima dell'hostname

Incontro 2: comodità

Accesso senza password

É possibile sfruttare i meccanismi di crittografia asimmetrica alla base del protocollo SSH per autenticarsi ai server senza password.

Per fare ciò è necessario che possediate una coppia di chiavi (pubblica/privata) che poi potete usare per tutti i server o servizi basati su SSH. Successivamente è necessario inserire la propria chiave pubblica nel file del server ``~/.ssh/authorized_keys``.

Queste 2 operazioni possono essere svolte facilmente con i comandi:

io@my-laptop:~ $ y ssh-keygen  # da fare solo se non avete una coppia di chiavi in ``~/.ssh/``
io@my-laptop:~ $ ssh-copy-id -p 2222 utente1@192.168.42.118

Potete provare successivamente ad accedere al server ssh e verificare che potete accedere senza password.

Configurazione del proprio client ssh

`~/.ssh/config`

Opzioni comode

Incontro 3: avanzate

Tunnel SSH diretti

`-L 1234:localhost:8080`

Tunnel SSH inversi

`-R 1234:localhost:8080`

Introduzione a TMUX

Piccola teoria : Tmux è un terminale multiplexer. In altre parole, significa che è possibile avviare una sessione Tmux e quindi aprire più finestre all'interno di quella sessione. Le sessioni di Tmux sono persistenti, il che significa che i programmi in esecuzione in Tmux continueranno a funzionare anche se ci si disconnette.

Installazione di Tmux:

sudo apt install tmux 	per  Ubuntu e Debian
sudo yum install tmux 	per  CentOS e Fedora

Tutti i comandi in Tmux iniziano con un prefisso, che per impostazione predefinita è ctrl+b

Per aprire la tua prima sessione , digta semplicemente la parola tmux nella tua console:

tmux

Se vuoi avere tutte le informazioni sui commandi tmux digita Ctrl+b puoi Shift+?

E consigliato usare un nome per ogni sessione tmux attiva, soprattuo quando si lavora con tante finestre virtuali

Il commando per creare una sessione con un nome.

tmux new -s sessione_name

Per staccarti dalla sessione di Tmux e tornare alla tua shell normale digitando _

Ctrl +b d

!!! ATTENZIONE !!! Il programma in esecuzione nella sessione di Tmux continuerà a essere eseguito dopo il distacco dalla sessione.

Per ottenere un elenco delle sessione attive:

tmux ls

Commandi tmux più comuni:

Ctrl+b c Crea una nuova finestra (con shell)
Ctrl+b w Scegli la finestra da un elenco
Ctrl+b 0 Passa alla finestra 0 (per numero)
Ctrl+b , Rinomina la finestra corrente
Ctrl+b % Dividi il riquadro corrente in orizzontale in due riquadri
Ctrl+b " Dividi il riquadro corrente verticalmente in due riquadri
Ctrl+b o Vai al riquadro successivo
Ctrl+b ; Passa dal riquadro corrente a quello precedente
Ctrl+b x Chiudi il riquadro corrente
Ctrl+b p Passa alla finestra precedente

Ctrl+b n Passa alla finestra successiva

Introduzione a GIT

Git è un strumento di versionamento che ci permette di tenere traccia delle versione di un file,questo ci permette di poter richiamare una specifica versione in un secondo momento.

Utilizza una interfaccia a riga di comando.

Comandi
git init - Crea un repository Git vuoto o reinizializza uno esistente
git log permette di tenere traccia delle nostre versioni.
git checkout + codice univoco  permette di spostarsi dentro la repository

git checkout master ti riporta al ramo principale 
git add  Indica a Git che si desidera includere gli aggiornamenti di un determinato file nel prossimo 
commit. Tuttavia le modifiche non vengono effettivamente registrate fino a quando non si esegue git 
commit
git status permette di determinare lo stato dei tuoi file. 
git commit viene utilizzato per salvare le modifiche nel repository locale
sysadmin/index.txt · Last modified: 2019/10/10 10:20 by andrei