<Предыдущая | Содержание: | Следующая>
10.2.2. Выполнение команд на миньонах
Как только миньоны подключены, вы можете выполнять на них команды от мастера:
мастер# соль '*' test.ping
Кали-царапина:
Истинный Кали-мастер:
Правда
мастер# соль '*' test.ping
Кали-царапина:
Истинный Кали-мастер:
Правда
Эта команда запрашивает у всех миньонов ( '*' подстановочный знак, нацеленный на всех миньонов), чтобы выполнить пинг функция от тестXNUMX исполнительный модуль. Эта функция возвращает Правда значение при успехе и это простой способ убедиться, что соединение работает между мастером и различными миньонами.
Вы также можете настроить таргетинг на конкретного миньона, указав его идентификатор в первом параметре, или, возможно, на подмножество миньонов, используя менее общий подстановочный знак (например, '* -scratch' или 'kali- *'). Вот пример того, как выполнить произвольную команду оболочки на миньоне kali-scratch:
мастер# соль кали-царапина cmd.shell 'uptime; uname -a '
Кали-царапина:
05:25:48 до 44 мин, 2 пользователя, средняя нагрузка: 0.00, 0.01, 0.05
Linux kali-scratch 4.5.0-kali1-amd64 # 1 SMP Debian 4.5.3-2kali1 (2016) x05_09
➥ GNU / Linux
мастер# соль кали-царапина cmd.shell 'uptime; uname -a '
Кали-царапина:
05:25:48 до 44 мин, 2 пользователя, средняя нагрузка: 0.00, 0.01, 0.05
Linux kali-scratch 4.5.0-kali1-amd64 # 1 SMP Debian 4.5.3-2kali1 (2016) x05_09
➥ GNU / Linux
Справочник по модулю соли Доступно множество модулей исполнения для всех видов использования. Мы не будем рассматривать их все здесь, но полный список доступен на https://docs.saltstack.com/ en / latest / ref / modules / all / index.html. Вы также можете получить описание всех исполнительных модулей и их доступных функций для данного миньона с помощью соль миньон sys.doc команда. Выполнение этой команды возвращает очень длинный список функций, но вы можете отфильтровать список, передав имя функции или модуля с префиксом родительского модуля в качестве параметра: | |
мастер# соль кали-царапина sys.doc disk.usage использование диска: Возвращает информацию об использовании томов, установленных на этом ➥ миньон | |
Один из самых полезных модулей - упак, который представляет собой абстракцию диспетчера пакетов, полагающуюся на соответствующий диспетчер пакетов для системы (APT-получить для Debian и его производных, таких как Kali).
В pkg.refresh_db обновляет список пакетов (то есть выполняет apt-get update) в то время как pkg.upgrade устанавливает все доступные обновления (выполняет apt-get upgrade or apt-get dist-upgrade, в зависимости от полученных опций). В pkg.list_upgrades команда перечисляет ожидающие операции обновления (которые будут выполнены pkg.upgrade dist_upgrade = Истина команда).
В СЕРВИС модуль - это абстракция диспетчера служб (Systemd в случае с Kali), что позволяет выполнять все обычные systemctl операции: сервис.включить, сервис.отключить, услуга. Начните, сервис.стоп, сервис.перезапуститьи сервис.перезагрузка:
мастер# соль '*' service.enable ssh
Кали-царапина:
Истинный Кали-мастер:
Правда
мастер# соль '*' service.start ssh
Кали-мастер:
Правда
Кали-царапина:
Правда
мастер# соль '*' pkg.refresh_db
Кали-царапина:
----------
Кали-мастер:
----------
мастер# соль '*' pkg.upgrade dist_upgrade = Истина
Кали-царапина:
----------
изменения:
----------
базовые файлы:
----------
новые:
1:2016.2.1
Старый:
1:2016.2.0
[...]
запрокси:
----------
новые:
2.5.0-0kali1 старый:
2.4.3-0кали3
комментарий: результат:
Правда
мастер# соль '*' service.enable ssh
Кали-царапина:
Истинный Кали-мастер:
Правда
мастер# соль '*' service.start ssh
Кали-мастер:
Правда
Кали-царапина:
Правда
мастер# соль '*' pkg.refresh_db
Кали-царапина:
----------
Кали-мастер:
----------
мастер# соль '*' pkg.upgrade dist_upgrade = Истина
Кали-царапина:
----------
изменения:
----------
базовые файлы:
----------
новые:
1:2016.2.1
Старый:
1:2016.2.0
[...]
запрокси:
----------
новые:
2.5.0-0kali1 старый:
2.4.3-0кали3
комментарий: результат:
Правда
В качестве более конкретного примера вы можете легко настроить распределенный Nmap сканировать с dnmap. После установки пакета на всех миньонов вы запускаете сервер в первом терминале:
сервер # соль '*' pkg.install dnmap
[...]
сервер # vim dnmap.txt
сервер # dnmap_server -f dnmap.txt
сервер # соль '*' pkg.install dnmap
[...]
сервер # vim dnmap.txt
сервер # dnmap_server -f dnmap.txt
Предполагая, что IP-адрес сервера - 1.2.3.4, вы можете затем сказать всем миньонам запустить клиентский процесс, который подключается к серверу:
сервер # соль '*' cmd.run_bg template = jinja 'dnmap_client -s 1.2.3.4 -a {{grains.id}}'
Кали-царапина:
----------
идентификатор:
17137
[...]
сервер # соль '*' cmd.run_bg template = jinja 'dnmap_client -s 1.2.3.4 -a {{grains.id}}'
Кали-царапина:
----------
идентификатор:
17137
[...]
Обратите внимание, что в примере используется cmd.run_bg для запуска dnmap_client команда в фоновом режиме. Не ждите, пока он завершится, так как это длительный процесс. К сожалению, он не убивает себя должным образом, когда вы прерываете сервер, поэтому вам, возможно, придется его очистить:
сервер # соль '*' cmd.shell 'pkill -f dnmap_client'
сервер # соль '*' cmd.shell 'pkill -f dnmap_client'