10.2.2. 对 Minions 执行命令
一旦连接了 Minion,您就可以从 master 对它们执行命令:
掌握# 盐'*' test.ping
卡利划痕:
真正的卡利大师:
真
掌握# 盐'*' test.ping
卡利划痕:
真正的卡利大师:
真
这个命令询问所有的仆从( '*' 是针对所有小兵的通配符)来执行 平 从功能 测试 执行模块。 这个函数返回一个 真 成功的价值,是确保主节点和各个随从之间的连接正常工作的简单方法。
您还可以通过在第一个参数中提供其标识符来定位特定的 minion,或者使用不太通用的通配符(例如 '*-scratch' 或 'kali-*')可能是一个 minion 的子集。 以下是如何在 kali-scratch minion 上执行任意 shell 命令的示例:
掌握# salt kali-scratch cmd.shell '正常运行时间; 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-05-09) x86_64
➥ GNU / Linux的
掌握# salt kali-scratch cmd.shell '正常运行时间; 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-05-09) x86_64
➥ GNU / Linux的
Salt模块参考 有许多执行模块可用于各种用例。 我们不会在此处全部介绍,但完整列表可在 https://docs.saltstack.com/ zh/latest/ref/modules/all/index.html. 您还可以通过 盐 奴才 系统文件 命令。 运行这个命令会返回一个很长的函数列表,但是你可以通过传递一个函数或模块的名称作为参数来过滤这个列表,这个函数或模块以其父模块为前缀: | |
掌握# salt kali-scratch sys.doc disk.usage 磁盘使用情况: 返回安装在此的卷的使用信息 ➥ 奴才 | |
最有用的模块之一是 PKG,这是依赖于系统的适当包管理器的包管理器抽象(apt-get的 适用于 Debian 及其衍生产品,如 Kali)。
这个 pkg.refresh_db 命令更新包列表(也就是说,它执行 APT-get的更新)而 升级包 安装所有可用的更新(它执行 apt-get升级 or apt-get dist-upgrade,取决于收到的选项)。 这 pkg.list_upgrades 命令列出挂起的升级操作(将由 pkg.upgrade dist_upgrade=真 命令)。
这个 服务 模块是服务管理器的抽象(systemd 在 Kali 的情况下),它可以让你执行所有通常的 systemctl 操作: 服务启用, 服务禁用, 服务。 开始, 服务停止, 服务重启和 服务重新加载:
掌握# salt '*' service.enable ssh
卡利划痕:
真正的卡利大师:
真
掌握# 盐'*' service.start ssh
卡利大师:
真
卡利划痕:
真
掌握# 盐'*' pkg.refresh_db
卡利划痕:
----------
卡利大师:
----------
掌握# 盐'*' pkg.upgrade dist_upgrade=True
卡利划痕:
----------
的变化:
----------
基本文件:
----------
新:
1:2016.2.1
老的:
1:2016.2.0
[...]
zaproxy:
----------
新:
2.5.0-0kali1 旧:
2.4.3-0kali3
评论: 结果:
真
掌握# salt '*' service.enable ssh
卡利划痕:
真正的卡利大师:
真
掌握# 盐'*' service.start ssh
卡利大师:
真
卡利划痕:
真
掌握# 盐'*' pkg.refresh_db
卡利划痕:
----------
卡利大师:
----------
掌握# 盐'*' pkg.upgrade dist_upgrade=True
卡利划痕:
----------
的变化:
----------
基本文件:
----------
新:
1:2016.2.1
老的:
1:2016.2.0
[...]
zaproxy:
----------
新:
2.5.0-0kali1 旧:
2.4.3-0kali3
评论: 结果:
真
作为更具体的示例,您可以轻松设置分布式 NMAP 扫描 映射. 在所有 Minion 上安装软件包后,在第一个终端中启动服务器:
服务器# 盐'*' pkg.install dnmap
[...]
服务器# vim 映射.txt
服务器# dnmap_server -f dnmap.txt
服务器# 盐'*' pkg.install dnmap
[...]
服务器# vim 映射.txt
服务器# dnmap_server -f dnmap.txt
假设服务器 IP 为 1.2.3.4,接下来可以告诉所有 minion 启动一个连接到服务器的客户端进程:
服务器# 盐'*' cmd.run_bg 模板=jinja 'dnmap_client -s 1.2.3.4 -a {{grains.id }}'
卡利划痕:
----------
进程号:
17137
[...]
服务器# 盐'*' cmd.run_bg 模板=jinja 'dnmap_client -s 1.2.3.4 -a {{grains.id }}'
卡利划痕:
----------
进程号:
17137
[...]
请注意,该示例使用 命令.run_bg 运行 dnmap_客户端 后台命令。 不要等到它完成,因为这是一个长期运行的过程。 不幸的是,当您中断服务器时它不会正确地杀死自己,因此您可能需要清理它:
服务器# 盐'*' cmd.shell 'pkill -f dnmap_client'
服务器# 盐'*' cmd.shell 'pkill -f dnmap_client'