<Precedenti | Contenuti | Succ.>
10.2.2. Esecuzione di comandi sui servitori
Non appena i minion sono collegati, puoi eseguire i comandi su di loro dal master:
maestro# salt '*' test.ping
kali-graffio:
Vero maestro di kali:
I veri
maestro# salt '*' test.ping
kali-graffio:
Vero maestro di kali:
I veri
Questo comando chiede a tutti i servitori (il '*' è un jolly che prende di mira tutti i servitori) per eseguire il ping funzione dal test modulo di esecuzione. Questa funzione restituisce a I veri valore sul successo ed è un modo semplice per garantire che la connessione funzioni tra il maestro e i vari servitori.
Puoi anche prendere di mira un servitore specifico fornendo il suo identificatore nel primo parametro, o eventualmente un sottoinsieme di servitori usando un carattere jolly meno generico (come '*-scratch' o 'kali-*'). Ecco un esempio di come eseguire un comando shell arbitrario sul minion kali-scratch:
maestro# salt kali-scratch cmd.shell 'uptime; uname -a'
kali-graffio:
05:25:48 fino a 44 min, 2 utenti, media di carico: 0.00, 0.01, 0.05
Linux kali-scratch 4.5.0-kali1-amd64 #1 SMP Debian 4.5.3-2kali1 (2016-05-09) x86_64
➥ GNU / Linux
maestro# salt kali-scratch cmd.shell 'uptime; uname -a'
kali-graffio:
05:25:48 fino a 44 min, 2 utenti, media di carico: 0.00, 0.01, 0.05
Linux kali-scratch 4.5.0-kali1-amd64 #1 SMP Debian 4.5.3-2kali1 (2016-05-09) x86_64
➥ GNU / Linux
Riferimento modulo sale Sono disponibili molti moduli di esecuzione per tutti i tipi di casi d'uso. Non li tratteremo tutti qui, ma l'elenco completo è disponibile su https://docs.saltstack.com/ it/latest/ref/modules/all/index.html. Puoi anche ottenere una descrizione di tutti i moduli di esecuzione e le loro funzioni disponibili su un determinato servitore con il sale tirapiedi sys.doc comando. L'esecuzione di questo comando restituisce un elenco molto lungo di funzioni, ma è possibile filtrare l'elenco passando come parametro il nome di una funzione o di un modulo preceduto dal modulo padre: | |
maestro# salt kali-scratch sys.doc disk.usage uso del disco: Restituisci le informazioni sull'utilizzo per i volumi montati su questo ➥ tirapiedi | |
Uno dei moduli più utili è pkg, che è un'astrazione del gestore di pacchetti che si basa sul gestore di pacchetti appropriato per il sistema (apt-get per Debian e i suoi derivati come Kali).
I pkg.refresh_db il comando aggiorna l'elenco dei pacchetti (cioè esegue apt-get update) mentre pkg.aggiornamento installa tutti gli aggiornamenti disponibili (esegue apt-get upgrade or apt-get dist-upgrade, a seconda delle opzioni ricevute). Il pkg.list_upgrades comando elenca le operazioni di aggiornamento in sospeso (che verrebbero eseguite dal pkg.upgrade dist_upgrade=Vero comando).
I servizio modulo è un'astrazione del gestore del servizio (systemd nel caso di Kali), che ti consente di eseguire tutte le solite systemctl operazioni: servizio.abilita, servizio.disabilita, servizio. cominciare, servizio.stop, servizio.riavvioe servizio.ricarica:
maestro# salt '*' service.enable ssh
kali-graffio:
Vero maestro di kali:
I veri
maestro# salt '*' service.start ssh
maestro di kali:
I veri
kali-graffio:
I veri
maestro# salt '*' pkg.refresh_db
kali-graffio:
----------
maestro di kali:
----------
maestro# salt '*' pkg.upgrade dist_upgrade=True
kali-graffio:
----------
modifiche:
----------
file di base:
----------
nuovo:
1:2016.2.1
vecchio:
1:2016.2.0
[...]
zaprossi:
----------
nuovo:
2.5.0-0kali1 vecchio:
2.4.3-0kali3
commento: risultato:
I veri
maestro# salt '*' service.enable ssh
kali-graffio:
Vero maestro di kali:
I veri
maestro# salt '*' service.start ssh
maestro di kali:
I veri
kali-graffio:
I veri
maestro# salt '*' pkg.refresh_db
kali-graffio:
----------
maestro di kali:
----------
maestro# salt '*' pkg.upgrade dist_upgrade=True
kali-graffio:
----------
modifiche:
----------
file di base:
----------
nuovo:
1:2016.2.1
vecchio:
1:2016.2.0
[...]
zaprossi:
----------
nuovo:
2.5.0-0kali1 vecchio:
2.4.3-0kali3
commento: risultato:
I veri
Come esempio più concreto, potresti facilmente impostare un distribuito Nmap scansiona con dnmap. Dopo aver installato il pacchetto su tutti i minion, avviate il server in un primo terminale:
server# salt '*' pkg.install dnmap
[...]
server# vim dnmap.txt
server# server_dnmap -f dnmap.txt
server# salt '*' pkg.install dnmap
[...]
server# vim dnmap.txt
server# server_dnmap -f dnmap.txt
Supponendo che l'IP del server sia 1.2.3.4, puoi quindi dire a tutti i minion di avviare un processo client che si connette al server:
server# salt '*' cmd.run_bg template=jinja 'dnmap_client -s 1.2.3.4 -a {{ grains.id }}'
kali-graffio:
----------
pid:
17137
[...]
server# salt '*' cmd.run_bg template=jinja 'dnmap_client -s 1.2.3.4 -a {{ grains.id }}'
kali-graffio:
----------
pid:
17137
[...]
Nota che l'esempio usa cmd.run_bg per eseguire il dnmap_client comando in background. Non aspettare che finisca, poiché è un processo di lunga durata. Sfortunatamente, non si uccide correttamente quando si interrompe il server, quindi potrebbe essere necessario ripulirlo:
server# salt '*' cmd.shell 'pkill -f dnmap_client'
server# salt '*' cmd.shell 'pkill -f dnmap_client'