利用 Saltstack 远程执行命令

Posted 杰哥的IT之旅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用 Saltstack 远程执行命令相关的知识,希望对你有一定的参考价值。

利用 Saltstack 远程执行命令

利用 Saltstack 远程执行命令

Saltstack的一个比较突出优势就是具备执行远程命令的功能。


操作方法与func

(https://fedorahosted.org/func/)相似,可以帮助运维人员完成集中化的操作平台。

 

http://docs.saltstack.cn/topics/targeting/index.html

 

命令格式:salt '<操作目标>' <方法> [参数]

 

  • 查看被控制机的内存使用情况

[root@saltstack-master master]# salt 'saltstack_web1group_1' cmd.run 'free -m'saltstack_web1group_1: total used free shared buffers cached Mem: 230 223 6 0 15 55 -/+ buffers/cache: 153 77 Swap: 2083 222 1861

其中针对<操作目标>,saltstack提供了多种方法对被控制端(id)进行过滤。下面列举常用的具体参数:

 

1)-E:--pcre:通过正则表达式进行匹配。


  • 查看被控制端saltstack字符开头的主机id名是否连通。

[root@saltstack-master master]# salt -E '^saltstack.*' test.pingsaltstack_web1group_1: Truesaltstack_web1group_2: True

2)-L:--list  以主机id名列表的形式进行过滤,格式与Python的列表相似,即不同主机id名称使用逗号分隔。


  • 获取主机id名为saltstack_web1group_1

    saltstack_web1group_2获取完整操作系统发行版名称;

[root@saltstack-master master]# salt -L 'saltstack_web1group_1,saltstack_web1group_2' grains.item osfullnamesaltstack_web1group_1: ---------- osfullname: CentOSsaltstack_web1group_2: ---------- osfullname: CentOS

3)-G:--grain 根据被控主机的grains信息(grains是saltstack重要组件之一,重要作用是收集被控主机的基本系统信息)进行匹配过滤,格式为'<grain value>:<glob expression>'。


比如过滤内核为Linux的主机可以写成'kernel:Linux',如果同时需要正则表达式的支持可以切成--grain-pcre参数来执行。


  • 获取主机发行版本为6.5的Python版本号

[root@saltstack-master ~]# salt -G 'osrelease:6.5' cmd.run 'python -V'saltstack_web1group_1: Python 2.6.6saltstack_web1group_2: Python 2.6.6

4)-I:--pillar 根据被控主机的pillar(作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用)信息进行过滤匹配,格式为'对象名称:对象值'。


比如过滤所有具备'apache:httpd' pillar值的主机。


探测具有"httpd:root:/data"信息的主机连通性。

[root@saltstack-master ~]# salt -I 'httpd:root:/data' test.pingsaltstack_web1group_1: Truesaltstack_web1group_2:    True其中pillar属性配置文件如下:httpd:root: /data

5)-N:--nodegroup 根据主控端master配置文件中的分组名称进行过滤。


如下配置的组信息(主机信息支持正则表达式、grain、条件运算符等),通常根据业务类型划分,不同业务具备相同的特点,包括部署环境、应用平台、配置文件等。


L@:表示后面的主机id格式为列表,即主机id以逗号隔开;

G@:表示以grain格式描述;


  • 探测web1group(或web2group)被控主机的连通性

[root@saltstack-master salt]# vim /etc/salt/masternodegroups: web1group: 'L@saltstack_web1group_1,saltstack_web1group_2'[root@saltstack-master salt]# salt -N web1group test.pingsaltstack_web1group_2: Truesaltstack_web1group_1: True

6)-C:--compound 根据条件运算符not、and、or去匹配不同规则的主机信息。


  • 探测salt开头并且操作系统为Centos的主机连通性。

[root@saltstack-master salt]# salt -C 'E@^salt.* and G@os:Centos' test.pingsaltstack_web1group_1: Truesaltstack_web1group_2: True

not语句不能作为第一个条件执行,不过可以通过以下方法来规避:

  • 探测非saltstack开头的主机连通性;

[root@saltstack-master salt]# salt -C '* and not E@^Jenkins.*' test.pingsaltstack_web1group_2: Truesaltstack_web1group_1: True
  • 查看是否匹配当前从设备是否处于192.168.0.0/16的网段;

[root@saltstack-master salt]# salt -S 192.168.0.0/16 test.pingsaltstack_web1group_1: Truesaltstack_web1group_2: True


推荐阅读:

1、

2、

3、

4、

5、

6、

7、

8、


资源分享:

T级技术资源大放送!包括但不限于:Linux、Python、Java、前端、测试、大数据、人工智能等,具体获取方式请点击下方链接进行查看~利用 Saltstack 远程执行命令


扫它,来撩杰哥~


以上是关于利用 Saltstack 远程执行命令的主要内容,如果未能解决你的问题,请参考以下文章

安全通告丨SaltStack 远程命令执行漏洞风险通告(CVE-2020-11651/CVE-2020-11652)

风险提示天融信关于SaltStack远程命令执行漏洞风险提示

安全通告:针对SaltStack远程命令执行漏洞植入挖矿木马的应急响应

漏洞通告SaltStack远程命令执行漏洞

通告更新SaltStack远程命令执行漏洞安全风险通告第二次更新

漏洞安全公告|SaltStack 远程命令执行漏洞(CVE-2020-11651/CVE-2020-11652)