<Précédent | Table des matières | Suivant>
10.2.2. Exécuter des commandes sur les Minions
Dès que les minions sont connectés, vous pouvez exécuter des commandes sur eux depuis le maître :
Maître# sel '*' test.ping
kali-scratch :
Véritable kali-maître :
Vrai
Maître# sel '*' test.ping
kali-scratch :
Véritable kali-maître :
Vrai
Cette commande demande à tous les serviteurs (le '*' est un caractère générique ciblant tous les serviteurs) pour exécuter le ping fonction du tester module d'exécution. Cette fonction renvoie un Vrai valeur sur le succès et est un moyen simple de s'assurer que la connexion fonctionne entre le maître et les différents serviteurs.
Vous pouvez également cibler un serviteur spécifique en donnant son identifiant dans le premier paramètre, ou éventuellement un sous-ensemble de serviteurs en utilisant un caractère générique moins générique (comme '*-scratch' ou 'kali-*'). Voici un exemple d'exécution d'une commande shell arbitraire sur le minion kali-scratch :
Maître# sel kali-scratch cmd.shell 'temps de disponibilité ; uname -a'
kali-scratch :
05:25:48 jusqu'à 44 min, 2 utilisateurs, charge moyenne : 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
Maître# sel kali-scratch cmd.shell 'temps de disponibilité ; uname -a'
kali-scratch :
05:25:48 jusqu'à 44 min, 2 utilisateurs, charge moyenne : 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
Référence du module de sel Il existe de nombreux modules d'exécution disponibles pour toutes sortes de cas d'utilisation. Nous ne les couvrirons pas tous ici, mais la liste complète est disponible sur https://docs.saltstack.com/ fr/dernier/ref/modules/all/index.html. Vous pouvez également obtenir une description de tous les modules d'exécution et de leurs fonctions disponibles sur un minion donné avec le de sel serviteur sys.doc commander. L'exécution de cette commande renvoie une très longue liste de fonctions, mais vous pouvez filtrer la liste en passant le nom d'une fonction ou d'un module préfixé par son module parent en paramètre : | |
Maître# sel kali-scratch sys.doc disk.usage utilisation du disque: Renvoie les informations d'utilisation pour les volumes montés sur ce ➥ serviteur | |
L'un des modules les plus utiles est pkg, qui est une abstraction du gestionnaire de packages reposant sur le gestionnaire de packages approprié pour le système (apt-get pour Debian et ses dérivés comme Kali).
Le pkg.refresh_db La commande met à jour la liste des packages (c'est-à-dire qu'elle exécute apt-get update) tandis que pkg.mise à niveau installe toutes les mises à jour disponibles (il effectue apt-get mise à niveau or apt-get dist-mise à jour, selon les options reçues). Les pkg.list_upgrades La commande répertorie les opérations de mise à niveau en attente (qui seraient effectuées par le pkg.upgrade dist_upgrade=Vrai commander).
Le service module est une abstraction du gestionnaire de services (systemd dans le cas de Kali), qui vous permet d'effectuer toutes les opérations habituelles systemctl opérations: service.activer, service.désactiver, service. début, service.stop, service.restartet service.recharger:
Maître# sel '*' service.enable ssh
kali-scratch :
Véritable kali-maître :
Vrai
Maître# sel '*' service.start ssh
kali-maître :
Vrai
kali-scratch :
Vrai
Maître# sel '*' pkg.refresh_db
kali-scratch :
----------
kali-maître :
----------
Maître# sel '*' pkg.upgrade dist_upgrade=True
kali-scratch :
----------
changements:
----------
fichiers de base :
----------
Nouveau:
1:2016.2.1
vieille:
1:2016.2.0
[...]
zaproxy :
----------
Nouveau:
2.5.0-0kali1 ancien :
2.4.3-0kali3
commentaire : résultat :
Vrai
Maître# sel '*' service.enable ssh
kali-scratch :
Véritable kali-maître :
Vrai
Maître# sel '*' service.start ssh
kali-maître :
Vrai
kali-scratch :
Vrai
Maître# sel '*' pkg.refresh_db
kali-scratch :
----------
kali-maître :
----------
Maître# sel '*' pkg.upgrade dist_upgrade=True
kali-scratch :
----------
changements:
----------
fichiers de base :
----------
Nouveau:
1:2016.2.1
vieille:
1:2016.2.0
[...]
zaproxy :
----------
Nouveau:
2.5.0-0kali1 ancien :
2.4.3-0kali3
commentaire : résultat :
Vrai
Comme exemple plus concret, vous pouvez facilement mettre en place un système distribué Nmap scanner avec dnmap. Après avoir installé le package sur tous les minions, vous démarrez le serveur dans un premier terminal :
serveur# sel '*' pkg.install dnmap
[...]
serveur# vim dnmap.txt
serveur# dnmap_server -f dnmap.txt
serveur# sel '*' pkg.install dnmap
[...]
serveur# vim dnmap.txt
serveur# dnmap_server -f dnmap.txt
En supposant que l'IP du serveur est 1.2.3.4, vous pouvez ensuite dire à tous les minions de démarrer un processus client qui se connecte au serveur :
serveur# sel '*' cmd.run_bg template=jinja 'dnmap_client -s 1.2.3.4 -a {{ grains.id }}'
kali-scratch :
----------
pid :
17137
[...]
serveur# sel '*' cmd.run_bg template=jinja 'dnmap_client -s 1.2.3.4 -a {{ grains.id }}'
kali-scratch :
----------
pid :
17137
[...]
Notez que l'exemple utilise cmd.run_bg pour exécuter le dnmap_client commande en arrière-plan. N'attendez pas qu'il se termine, car il s'agit d'un processus de longue haleine. Malheureusement, il ne se tue pas correctement lorsque vous interrompez le serveur, vous devrez donc peut-être le nettoyer :
serveur# sel '*' cmd.shell 'pkill -f dnmap_client'
serveur# sel '*' cmd.shell 'pkill -f dnmap_client'
Documentation