1、SaltStack模块介绍
Module是日常使用SaltStack接触最多的一个组件,其用于管理对象操作,这也是SaltStack通过Push的方式进行管理的入口,比如我们日常简单的执行命令、查看包安装情况、查看服务运行情况等工作都是通过SaltStack Module来实现的。
当安装好Master和Minion包后,系统上会安装很多Module,大家可以通过以下命令查看支持的所有Module列表:
环境说明
主机名 | IP | 类型 | 系统 | 服务 |
---|---|---|---|---|
JLin | 192,168.23.180 | 控制节点 | CentOS 8 Stream | salt-master salt-minion |
JiaL | 192,168.23.181 | 受管主机 | CentOS 8 Stream | salt-minion |
JLLL | 192,168.23.182 | 受管主机 | CentOS 8 Stream | salt-minion |
JJJL | 192,168.23.183 | 受管主机 | CentOS 8 Stream | salt-minion |
查看所有主机能否ping通
// 将id设置为各个主机的ip
[root@JiaL ~]# rm -rf /etc/salt/pki/minion/*
[root@JiaL ~]# vim /etc/salt/minion
id: 192.168.23.181
[root@JiaL ~]# systemctl restart salt-minion.service
[root@JLLL ~]# rm -rf /etc/salt/pki/minion/*
[root@JLLL ~]# vim /etc/salt/minion
id: 192.168.23.182
[root@JLLL ~]# systemctl restart salt-minion.service
[root@JJJL ~]# rm -rf /etc/salt/pki/minion/*
[root@JJJL ~]# vim /etc/salt/minion
id: 192.168.23.183
[root@JJJL ~]# systemctl restart salt-minion.service
[root@JLin ~]# salt-key -L
Accepted Keys:
JLin
Denied Keys:
Unaccepted Keys:
192.168.23.181
192.168.23.182
192.168.23.183
Rejected Keys:
[root@JLin ~]# salt-key -ya 192.168.23.181
The following keys are going to be accepted:
Unaccepted Keys:
192.168.23.181
Key for minion 192.168.23.181 accepted.
[root@JLin ~]# salt-key -ya 192.168.23.182
The following keys are going to be accepted:
Unaccepted Keys:
192.168.23.182
Key for minion 192.168.23.182 accepted.
[root@JLin ~]# salt-key -ya 192.168.23.183
The following keys are going to be accepted:
Unaccepted Keys:
192.168.23.183
Key for minion 192.168.23.183 accepted.
[root@JLin ~]# salt-key -L
Accepted Keys:
192.168.23.181
192.168.23.182
192.168.23.183
JLin
Denied Keys:
Unaccepted Keys:
Rejected Keys:
[root@JLin ~]# salt "*" test.ping
192.168.23.183:
True
192.168.23.182:
True
192.168.23.181:
True
JLin:
True
查看所有的module列表
[root@JLin ~]# salt 'JLin' sys.list_modules
JLin:
- acl
- aliases
- alternatives
- archive
- artifactory
- at
- baredoc
- beacons
- bigip
- btrfs
- buildout
- chroot
- cloud
- cmd
- composer
- config
- consul
- container_resource
- cp
- cron
- cryptdev
- data
- defaults
- devinfo
- devmap
- dig
- disk
- django
- dnsmasq
- dnsutil
- drbd
- environ
- ethtool
- event
- extfs
- file
- firewalld
- freezer
- gem
- genesis
- glassfish
- glusterfs
- gnome
- google_chat
- grafana4
- grains
- group
- hashutil
- helm
- highstate_doc
- hosts
- http
- hue
- incron
- ini
- inspector
- introspect
- iosconfig
- ip
- ipset
- iptables
- jboss7
- jboss7_cli
- jinja
- k8s
- kernelpkg
- key
- keyboard
- kmod
- kubeadm
- locale
- locate
- log
- logrotate
- lowpkg
- lvm
- mandrill
- match
- mattermost
- mine
- minion
- modjk
- mount
- msteams
- nagios_rpc
- namecheap_domains
- namecheap_domains_dns
- namecheap_domains_ns
- namecheap_ssl
- namecheap_users
- network
- nexus
- nfs3
- nftables
- nova
- nspawn
- nxos
- nxos_api
- nxos_upgrade
- openscap
- openstack_config
- opsgenie
- out
- pagerduty
- pagerduty_util
- pam
- parallels
- partition
- peeringdb
- pillar
- pip
- pkg
- pkg_resource
- ps
- publish
- pushover
- pyenv
- qemu_img
- qemu_nbd
- quota
- raid
- random
- random_org
- rbenv
- rest_sample_utils
- restartcheck
- ret
- rsync
- rvm
- s3
- s6
- salt_proxy
- salt_version
- saltcheck
- saltutil
- schedule
- scsi
- sdb
- seed
- selinux
- serverdensity_device
- service
- shadow
- slack
- slsutil
- smbios
- smtp
- solrcloud
- sqlite3
- ssh
- state
- status
- statuspage
- supervisord
- sys
- sysctl
- sysfs
- syslog_ng
- system
- telegram
- telemetry
- temp
- test
- timezone
- tuned
- udev
- uptime
- user
- vault
- vbox_guest
- virtualenv
- vsphere
- x509
- xfs
- xml
- zabbix
- zenoss
查看指定module的所有function
[root@JLin ~]# salt '192.168.23.181' sys.list_functions cmd
192.168.23.181:
- cmd.exec_code
- cmd.exec_code_all
- cmd.has_exec
- cmd.powershell
- cmd.powershell_all
- cmd.retcode
- cmd.run
- cmd.run_all
- cmd.run_bg
- cmd.run_chroot
- cmd.run_stderr
- cmd.run_stdout
- cmd.script
- cmd.script_retcode
- cmd.shell
- cmd.shell_info
- cmd.shells
- cmd.tty
- cmd.which
- cmd.which_bin
查看指定module的用法
[root@JLin ~]# salt '192.168.23.181' sys.doc cmd | head -10
cmd.exec_code:
Pass in two strings, the first naming the executable language, aka -
python2, python3, ruby, perl, lua, etc. the second string containing
the code you wish to execute. The stdout will be returned.
All parameters from :mod:`cmd.run_all <salt.modules.cmdmod.run_all>` except python_shell can be used.
CLI Example:
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>
BrokenPipeError: [Errno 32] Broken pipe
SaltStack默认也支持一次执行多个Module,Module之间通过逗号隔开,默认传参之间也是用逗号分隔,也支持指定传参分隔符号--args-separator=@即可
[root@JLin ~]# salt '192.168.23.181' test.echo,cmd.run,service.status hello,hostname,salt-minion
192.168.23.181:
----------
cmd.run:
JiaL
service.status:
True
test.echo:
hello
2、SaltStack常用模块
2.1 SaltStack常用模块之network
2.1.1 network.active_tcp
返回所有活动的tcp连接
[root@JLin ~]# salt '*' network.active_tcp
192.168.23.182:
----------
0:
----------
local_addr:
192.168.23.182
local_port:
22
remote_addr:
192.168.23.1
remote_port:
54062
1:
----------
local_addr:
192.168.23.182
local_port:
22
remote_addr:
192.168.23.1
remote_port:
53477
2:
----------
local_addr:
192.168.23.182
local_port:
47258
remote_addr:
192.168.23.180
remote_port:
4505
192.168.23.181:
----------
0:
----------
local_addr:
192.168.23.181
local_port:
52198
remote_addr:
192.168.23.180
remote_port:
4505
1:
----------
local_addr:
192.168.23.181
local_port:
22
remote_addr:
192.168.23.1
remote_port:
54051
2:
----------
local_addr:
192.168.23.181
local_port:
22
remote_addr:
192.168.23.1
remote_port:
53474
192.168.23.183:
----------
0:
----------
local_addr:
192.168.23.183
local_port:
33298
remote_addr:
192.168.23.180
remote_port:
4505
1:
----------
local_addr:
192.168.23.183
local_port:
22
remote_addr:
192.168.23.1
remote_port:
54074
2:
----------
local_addr:
192.168.23.183
local_port:
22
remote_addr:
192.168.23.1
remote_port:
53478
JLin:
----------
0:
----------
local_addr:
192.168.23.180
local_port:
4505
remote_addr:
192.168.23.181
remote_port:
52198
1:
----------
local_addr:
192.168.23.180
local_port:
59090
remote_addr:
192.168.23.180
remote_port:
4505
2:
----------
local_addr:
192.168.23.180
local_port:
4506
remote_addr:
192.168.23.181
remote_port:
35290
3:
----------
local_addr:
192.168.23.180
local_port:
4505
remote_addr:
192.168.23.182
remote_port:
47258
4:
----------
local_addr:
192.168.23.180
local_port:
4505
remote_addr:
192.168.23.180
remote_port:
59090
5:
----------
local_addr:
192.168.23.180
local_port:
4505
remote_addr:
192.168.23.183
remote_port:
33298
6:
----------
local_addr:
192.168.23.180
local_port:
22
remote_addr:
192.168.23.1
remote_port:
53473
2.1.2 network.calc_net
通过IP和子网掩码计算出网段
[root@JLin ~]# salt '*' network.calc_net 192.168.23.181 255.255.255.0
192.168.23.182:
192.168.23.0/24
192.168.23.183:
192.168.23.0/24
JLin:
192.168.23.0/24
192.168.23.181:
192.168.23.0/24
[root@JLin ~]# salt '*' network.calc_net 192.168.23.181 255.255.255.240
JLin:
192.168.23.176/28
192.168.23.182:
192.168.23.176/28
192.168.23.181:
192.168.23.176/28
192.168.23.183:
192.168.23.176/28
2.1.3 network.connect
测试minion至某一台服务器的网络是否连通
[root@JLin ~]# salt '*' network.connect jlin.red 80
192.168.23.181:
----------
comment:
Successfully connected to jlin.red (116.62.111.221) on tcp port 80
result:
True
JLin:
----------
comment:
Successfully connected to jlin.red (116.62.111.221) on tcp port 80
result:
True
192.168.23.183:
----------
comment:
Successfully connected to jlin.red (116.62.111.221) on tcp port 80
result:
True
192.168.23.182:
----------
comment:
Successfully connected to jlin.red (116.62.111.221) on tcp port 80
result:
True
2.1.4 network.default_route
查看默认路由
[root@JLin ~]# salt '*' network.default_route
192.168.23.182:
|_
----------
addr_family:
inet
destination:
0.0.0.0
flags:
UG
gateway:
192.168.23.2
interface:
ens33
netmask:
0.0.0.0
|_
----------
addr_family:
inet6
destination:
::/0
flags:
!n
gateway:
::
interface:
lo
netmask:
|_
----------
addr_family:
inet6
destination:
::/0
flags:
!n
gateway:
::
interface:
lo
netmask:
192.168.23.183:
|_
----------
addr_family:
inet
destination:
0.0.0.0
flags:
UG
gateway:
192.168.23.2
interface:
ens33
netmask:
0.0.0.0
|_
----------
addr_family:
inet6
destination:
::/0
flags:
!n
gateway:
::
interface:
lo
netmask:
|_
----------
addr_family:
inet6
destination:
::/0
flags:
!n
gateway:
::
interface:
lo
netmask:
JLin:
|_
----------
addr_family:
inet
destination:
0.0.0.0
flags:
UG
gateway:
192.168.23.2
interface:
ens33
netmask:
0.0.0.0
|_
----------
addr_family:
inet6
destination:
::/0
flags:
!n
gateway:
::
interface:
lo
netmask:
|_
----------
addr_family:
inet6
destination:
::/0
flags:
!n
gateway:
::
interface:
lo
netmask:
192.168.23.181:
|_
----------
addr_family:
inet
destination:
0.0.0.0
flags:
UG
gateway:
192.168.23.2
interface:
ens33
netmask:
0.0.0.0
|_
----------
addr_family:
inet6
destination:
::/0
flags:
!n
gateway:
::
interface:
lo
netmask:
|_
----------
addr_family:
inet6
destination:
::/0
flags:
!n
gateway:
::
interface:
lo
2.1.5 network.get_fqdn
查看主机的fqdn(完全限定域名)
[root@JLin ~]# salt '*' network.get_fqdn
192.168.23.181:
JiaL
JLin:
JLin
192.168.23.183:
JJJL
192.168.23.182:
JLLL
2.1.6 network.get_hostname
获取主机名
[root@JLin ~]# salt '*' network.get_hostname
192.168.23.181:
JiaL
192.168.23.182:
JLLL
JLin:
JLin
192.168.23.183:
JJJL
2.1.7 network.get_route
查询到一个目标网络的路由信息
[root@JLin ~]# salt '*' network.get_route 192.168.23.181
192.168.23.183:
----------
destination:
192.168.23.181
gateway:
None
interface:
ens33
source:
192.168.23.183
192.168.23.182:
----------
destination:
192.168.23.181
gateway:
None
interface:
ens33
source:
192.168.23.182
192.168.23.181:
----------
destination:
192.168.23.181
gateway:
None
interface:
lo
source:
192.168.23.181
JLin:
----------
destination:
192.168.23.181
gateway:
None
interface:
ens33
source:
192.168.23.180
2.1.8 network.hw_addr
返回指定网卡的MAC地址
// 查看lo网卡的MAC地址
[root@JLin ~]# salt '*' network.hw_addr lo
192.168.23.181:
00:00:00:00:00:00
192.168.23.182:
00:00:00:00:00:00
JLin:
00:00:00:00:00:00
192.168.23.183:
00:00:00:00:00:00
// 查看ens33网卡的MAC地址
[root@JLin ~]# salt '*' network.hw_addr ens33
192.168.23.183:
00:0c:29:e6:da:af
192.168.23.182:
00:0c:29:be:01:3c
JLin:
00:0c:29:bd:e7:f1
192.168.23.181:
00:0c:29:38:3b:88
2.1.9 network.ifacestartswith
从特定CIDR检索接口名称
[root@JLin ~]# salt '*' network.ifacestartswith 192.168
192.168.23.183:
- ens33
- virbr0
192.168.23.182:
- ens33
- virbr0
JLin:
- ens33
- virbr0
192.168.23.181:
- ens33
- virbr0
2.1.10 network.in_subnet
判断当前主机是否在某一个网段内
[root@JLin ~]# salt '*' network.in_subnet 192.168.23.0/24
JLin:
True
192.168.23.182:
True
192.168.23.181:
True
192.168.23.183:
True
2.1.11 network.interface
返回指定网卡的信息
// 查看lo网卡的信息
[root@JLin ~]# salt '*' network.interface lo
JLin:
|_
----------
address:
127.0.0.1
broadcast:
None
label:
lo
netmask:
255.0.0.0
192.168.23.183:
|_
----------
address:
127.0.0.1
broadcast:
None
label:
lo
netmask:
255.0.0.0
192.168.23.181:
|_
----------
address:
127.0.0.1
broadcast:
None
label:
lo
netmask:
255.0.0.0
192.168.23.182:
|_
----------
address:
127.0.0.1
broadcast:
None
label:
lo
netmask:
255.0.0.0
// 查看ens33网卡的信息
[root@JLin ~]# salt '*' network.interface ens33
JLin:
|_
----------
address:
192.168.23.180
broadcast:
192.168.23.255
label:
ens33
netmask:
255.255.255.0
192.168.23.183:
|_
----------
address:
192.168.23.183
broadcast:
192.168.23.255
label:
ens33
netmask:
255.255.255.0
192.168.23.182:
|_
----------
address:
192.168.23.182
broadcast:
192.168.23.255
label:
ens33
netmask:
255.255.255.0
192.168.23.181:
|_
----------
address:
192.168.23.181
broadcast:
192.168.23.255
label:
ens33
netmask:
255.255.255.0
2.1.12 network.interface_ip
返回指定网卡的IP地址
// 查看lo网卡的IP地址
[root@JLin ~]# salt '*' network.interface_ip lo
192.168.23.183:
127.0.0.1
192.168.23.181:
127.0.0.1
192.168.23.182:
127.0.0.1
JLin:
127.0.0.1
// 查看ens33网卡的IP地址
[root@JLin ~]# salt '*' network.interface_ip ens33
192.168.23.182:
192.168.23.182
192.168.23.181:
192.168.23.181
192.168.23.183:
192.168.23.183
JLin:
192.168.23.180
2.1.13 network.interfaces
返回当前系统中所有的网卡信息
[root@JLin ~]# salt '*' network.interfaces
192.168.23.183:
----------
ens33:
----------
hwaddr:
00:0c:29:e6:da:af
inet:
|_
----------
address:
192.168.23.183
broadcast:
192.168.23.255
label:
ens33
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::20c:29ff:fee6:daaf
prefixlen:
64
scope:
link
up:
True
lo:
----------
hwaddr:
00:00:00:00:00:00
inet:
|_
----------
address:
127.0.0.1
broadcast:
None
label:
lo
netmask:
255.0.0.0
inet6:
|_
----------
address:
::1
prefixlen:
128
scope:
host
up:
True
virbr0:
----------
hwaddr:
52:54:00:03:27:2f
inet:
|_
----------
address:
192.168.122.1
broadcast:
192.168.122.255
label:
virbr0
netmask:
255.255.255.0
up:
True
virbr0-nic:
----------
hwaddr:
52:54:00:03:27:2f
up:
False
192.168.23.182:
----------
ens33:
----------
hwaddr:
00:0c:29:be:01:3c
inet:
|_
----------
address:
192.168.23.182
broadcast:
192.168.23.255
label:
ens33
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::20c:29ff:febe:13c
prefixlen:
64
scope:
link
up:
True
lo:
----------
hwaddr:
00:00:00:00:00:00
inet:
|_
----------
address:
127.0.0.1
broadcast:
None
label:
lo
netmask:
255.0.0.0
inet6:
|_
----------
address:
::1
prefixlen:
128
scope:
host
up:
True
virbr0:
----------
hwaddr:
52:54:00:03:27:2f
inet:
|_
----------
address:
192.168.122.1
broadcast:
192.168.122.255
label:
virbr0
netmask:
255.255.255.0
up:
True
virbr0-nic:
----------
hwaddr:
52:54:00:03:27:2f
up:
False
192.168.23.181:
----------
ens33:
----------
hwaddr:
00:0c:29:38:3b:88
inet:
|_
----------
address:
192.168.23.181
broadcast:
192.168.23.255
label:
ens33
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::20c:29ff:fe38:3b88
prefixlen:
64
scope:
link
up:
True
lo:
----------
hwaddr:
00:00:00:00:00:00
inet:
|_
----------
address:
127.0.0.1
broadcast:
None
label:
lo
netmask:
255.0.0.0
inet6:
|_
----------
address:
::1
prefixlen:
128
scope:
host
up:
True
virbr0:
----------
hwaddr:
52:54:00:03:27:2f
inet:
|_
----------
address:
192.168.122.1
broadcast:
192.168.122.255
label:
virbr0
netmask:
255.255.255.0
up:
True
virbr0-nic:
----------
hwaddr:
52:54:00:03:27:2f
up:
False
JLin:
----------
ens33:
----------
hwaddr:
00:0c:29:bd:e7:f1
inet:
|_
----------
address:
192.168.23.180
broadcast:
192.168.23.255
label:
ens33
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::20c:29ff:febd:e7f1
prefixlen:
64
scope:
link
up:
True
lo:
----------
hwaddr:
00:00:00:00:00:00
inet:
|_
----------
address:
127.0.0.1
broadcast:
None
label:
lo
netmask:
255.0.0.0
inet6:
|_
----------
address:
::1
prefixlen:
128
scope:
host
up:
True
virbr0:
----------
hwaddr:
52:54:00:03:27:2f
inet:
|_
----------
address:
192.168.122.1
broadcast:
192.168.122.255
label:
virbr0
netmask:
255.255.255.0
up:
True
virbr0-nic:
----------
hwaddr:
52:54:00:03:27:2f
up:
False
2.1.14 network.ip_addrs
返回一个IPv4的地址列表
该函数将会忽略掉127.0.0.1的地址
[root@JLin ~]# salt '192.168.23.181' network.netstat
192.168.23.181:
|_
----------
inode:
23186
local-address:
0.0.0.0:111
program:
1/systemd
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
42192
local-address:
192.168.122.1:53
program:
1864/dnsmasq
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
33912
local-address:
0.0.0.0:22
program:
1139/sshd
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
33245
local-address:
127.0.0.1:631
program:
1143/cupsd
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
304722
local-address:
192.168.23.181:52198
program:
62868/python3.6
proto:
tcp
recv-q:
0
remote-address:
192.168.23.180:4505
send-q:
0
state:
ESTABLISHED
user:
0
|_
----------
inode:
40905
local-address:
192.168.23.181:34222
program:
1796/gnome-shell
proto:
tcp
recv-q:
32
remote-address:
8.43.85.13:443
send-q:
0
state:
CLOSE_WAIT
user:
42
|_
----------
inode:
185439
local-address:
192.168.23.181:22
program:
35062/sshd:
proto:
tcp
recv-q:
0
remote-address:
192.168.23.1:54051
send-q:
0
state:
ESTABLISHED
user:
0
|_
----------
inode:
48265
local-address:
192.168.23.181:22
program:
2375/sshd:
proto:
tcp
recv-q:
0
remote-address:
192.168.23.1:53474
send-q:
52
state:
ESTABLISHED
user:
0
|_
----------
inode:
23188
local-address:
:::111
program:
1/systemd
proto:
tcp6
recv-q:
0
remote-address:
:::*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
33914
local-address:
:::22
program:
1139/sshd
proto:
tcp6
recv-q:
0
remote-address:
:::*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
33244
local-address:
::1:631
program:
1143/cupsd
proto:
tcp6
recv-q:
0
remote-address:
:::*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
31751
local-address:
0.0.0.0:5353
program:
975/avahi-daemon:
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
70
|_
----------
inode:
31753
local-address:
0.0.0.0:47061
program:
975/avahi-daemon:
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
70
|_
----------
inode:
42191
local-address:
192.168.122.1:53
program:
1864/dnsmasq
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
0
|_
----------
inode:
42188
local-address:
0.0.0.0:67
program:
1864/dnsmasq
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
0
|_
----------
inode:
23187
local-address:
0.0.0.0:111
program:
1/systemd
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
0
|_
----------
inode:
26601
local-address:
127.0.0.1:323
program:
982/chronyd
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
0
|_
----------
inode:
31752
local-address:
:::5353
program:
975/avahi-daemon:
proto:
udp6
recv-q:
0
remote-address:
:::*
send-q:
0
user:
70
|_
----------
inode:
31754
local-address:
:::44792
program:
975/avahi-daemon:
proto:
udp6
recv-q:
0
remote-address:
:::*
send-q:
0
user:
70
|_
----------
inode:
23189
local-address:
:::111
program:
1/systemd
proto:
udp6
recv-q:
0
remote-address:
:::*
send-q:
0
user:
0
|_
----------
inode:
26602
local-address:
::1:323
program:
982/chronyd
proto:
udp6
recv-q:
0
remote-address:
:::*
send-q:
0
user:
0
2.1.16 network.ping
使用ping命令测试到某主机的连通性
[root@JLin ~]# salt '192.168.23.181' network.ping jlin.red
192.168.23.181:
PING jlin.red (116.62.111.221) 56(84) bytes of data.
64 bytes from 116.62.111.221 (116.62.111.221): icmp_seq=1 ttl=128 time=25.2 ms
64 bytes from 116.62.111.221 (116.62.111.221): icmp_seq=2 ttl=128 time=25.5 ms
64 bytes from 116.62.111.221 (116.62.111.221): icmp_seq=3 ttl=128 time=26.3 ms
64 bytes from 116.62.111.221 (116.62.111.221): icmp_seq=4 ttl=128 time=27.4 ms
--- jlin.red ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 12043ms
rtt min/avg/max/mdev = 25.203/26.082/27.374/0.849 ms
2.1.17 network.reverse_ip
返回一个指定的IP地址的反向地址
[root@JLin ~]# salt '*' network.reverse_ip 192.168.23.177
192.168.23.181:
177.23.168.192.in-addr.arpa
JLin:
177.23.168.192.in-addr.arpa
192.168.23.183:
177.23.168.192.in-addr.arpa
192.168.23.182:
177.23.168.192.in-addr.arpa
2.2 SaltStack常用模块之service
2.2.1 service.available
判断指定的服务是否可用
[root@JLin ~]# salt '*' service.available sshd
JLin:
True
192.168.23.181:
True
192.168.23.182:
True
192.168.23.183:
True
[root@JLin ~]# salt '*' service.available vsftpd
JLin:
False
192.168.23.182:
False
192.168.23.183:
False
192.168.23.181:
False
2.2.2 service.get_all
获取所有正在运行的服务
[root@JLin ~]# salt '192.168.23.181' service.get_all
192.168.23.181:
- ModemManager
- NetworkManager
- NetworkManager-dispatcher
- NetworkManager-wait-online
- accounts-daemon
- alsa-restore
- alsa-state
- anaconda
- anaconda-direct
- anaconda-fips
- anaconda-nm-config
- anaconda-noshell
- anaconda-pre
- anaconda-shell@
- anaconda-sshd
- anaconda-tmux@
- anaconda.target
- arp-ethers
- atd
- auditd
- auth-rpcgss-module
- autovt@
- avahi-daemon
- avahi-daemon.socket
- basic.target
- blivet
- blk-availability
- bluetooth
- bluetooth.target
- bolt
- boot-complete.target
- brltty
- btattach-bcm@
- canberra-system-bootup
- canberra-system-shutdown
- canberra-system-shutdown-reboot
- chrony-dnssrv@
- chrony-dnssrv@.timer
- chrony-wait
- chronyd
- cockpit
- cockpit-motd
- cockpit-wsinstance-http
- cockpit-wsinstance-http-redirect
- cockpit-wsinstance-http-redirect.socket
- cockpit-wsinstance-http.socket
- cockpit-wsinstance-https-factory.socket
- cockpit-wsinstance-https-factory@
- cockpit-wsinstance-https@
- cockpit-wsinstance-https@.socket
- cockpit.socket
- colord
- configure-printer@
- console-getty
- container-getty@
- cpupower
- crond
- cryptsetup-pre.target
- cryptsetup.target
- ctrl-alt-del.target
- cups
- cups-browsed
- cups.path
- cups.socket
- dbus
- dbus-org.bluez
- dbus-org.freedesktop.Avahi
- dbus-org.freedesktop.ModemManager1
- dbus-org.freedesktop.hostname1
- dbus-org.freedesktop.import1
- dbus-org.freedesktop.locale1
- dbus-org.freedesktop.login1
- dbus-org.freedesktop.machine1
- dbus-org.freedesktop.nm-dispatcher
- dbus-org.freedesktop.portable1
- dbus-org.freedesktop.timedate1
- dbus.socket
- debug-shell
- default.target
- dev-hugepages.mount
- dev-mqueue.mount
- display-manager
- dm-event
- dm-event.socket
- dnf-makecache
- dnf-makecache.timer
- dnsmasq
- dracut-cmdline
- dracut-initqueue
- dracut-mount
- dracut-pre-mount
- dracut-pre-pivot
- dracut-pre-trigger
- dracut-pre-udev
- dracut-shutdown
- ebtables
- emergency
- emergency.target
- exit.target
- final.target
- firewalld
- flatpak-system-helper
- fprintd
- fstrim
- fstrim.timer
- fwupd
- fwupd-offline-update
- fwupd-refresh
- fwupd-refresh.timer
- gdm
- geoclue
- getty-pre.target
- getty.target
- getty@
- graphical.target
- grub-boot-indeterminate
- gssproxy
- halt-local
- halt.target
- hibernate.target
- hybrid-sleep.target
- hypervfcopyd
- hypervkvpd
- hypervvssd
- iio-sensor-proxy
- import-state
- initial-setup
- initial-setup-reconfiguration
- initrd-cleanup
- initrd-fs.target
- initrd-parse-etc
- initrd-root-device.target
- initrd-root-fs.target
- initrd-switch-root
- initrd-switch-root.target
- initrd-udevadm-cleanup-db
- initrd.target
- instperf
- iprdump
- iprinit
- iprupdate
- iprutils.target
- irqbalance
- iscsi
- iscsi-onboot
- iscsi-shutdown
- iscsid
- iscsid.socket
- iscsiuio
- iscsiuio.socket
- kdump
- kexec.target
- kmod-static-nodes
- kpatch
- ksm
- ksmtuned
- kvm_stat
- ldconfig
- ledmon
- libstoragemgmt
- libvirtd
- libvirtd-admin.socket
- libvirtd-ro.socket
- libvirtd-tcp.socket
- libvirtd-tls.socket
- libvirtd.socket
- loadmodules
- local-fs-pre.target
- local-fs.target
- lvm2-lvmpolld
- lvm2-lvmpolld.socket
- lvm2-monitor
- lvm2-pvscan@
- machines.target
- man-db-cache-update
- man-db-restart-cache-update
- mcelog
- mdadm-grow-continue@
- mdadm-last-resort@
- mdadm-last-resort@.timer
- mdcheck_continue
- mdcheck_continue.timer
- mdcheck_start
- mdcheck_start.timer
- mdmon@
- mdmonitor
- mdmonitor-oneshot
- mdmonitor-oneshot.timer
- messagebus
- microcode
- mlocate-updatedb
- mlocate-updatedb.timer
- multi-user.target
- multipathd
- multipathd.socket
- ndctl-monitor
- netcf-transaction
- network-online.target
- network-pre.target
- network.target
- nfs-blkmap
- nfs-client.target
- nfs-convert
- nfs-idmapd
- nfs-mountd
- nfs-server
- nfs-utils
- nfsdcld
- nftables
- nis-domainname
- nm-sudo
- nss-lookup.target
- nss-user-lookup.target
- numad
- nvmefc-boot-connections
- nvmf-autoconnect
- nvmf-connect.target
- nvmf-connect@
- oddjobd
- ostree-finalize-staged
- ostree-finalize-staged.path
- ostree-prepare-root
- ostree-remount
- packagekit
- packagekit-offline-update
- paths.target
- plymouth-halt
- plymouth-kexec
- plymouth-poweroff
- plymouth-quit
- plymouth-quit-wait
- plymouth-read-write
- plymouth-reboot
- plymouth-start
- plymouth-switch-root
- plymouth-switch-root-initramfs
- podman
- podman-auto-update
- podman-auto-update.timer
- podman-restart
- podman.socket
- polkit
- poweroff.target
- printer.target
- proc-fs-nfsd.mount
- proc-sys-fs-binfmt_misc.automount
- proc-sys-fs-binfmt_misc.mount
- psacct
- qemu-guest-agent
- qemu-pr-helper
- qemu-pr-helper.socket
- quotaon
- radvd
- ras-mc-ctl
- rasdaemon
- rc-local
- rdisc
- rdma-hw.target
- rdma-load-modules@
- rdma-ndd
- realmd
- reboot.target
- remote-cryptsetup.target
- remote-fs-pre.target
- remote-fs.target
- rescue
- rescue.target
- rpc-gssd
- rpc-statd
- rpc-statd-notify
- rpc_pipefs.target
- rpcbind
- rpcbind.socket
- rpcbind.target
- rsyslog
- rtkit-daemon
- run-vmblock\x2dfuse.mount
- runlevel0.target
- runlevel1.target
- runlevel2.target
- runlevel3.target
- runlevel4.target
- runlevel5.target
- runlevel6.target
- salt-minion
- salt-proxy@
- saslauthd
- selinux-autorelabel
- selinux-autorelabel-mark
- selinux-autorelabel.target
- serial-getty@
- shutdown.target
- sigpwr.target
- sleep.target
- slices.target
- smartcard.target
- smartd
- sockets.target
- sound.target
- speech-dispatcherd
- spice-vdagentd
- spice-vdagentd.socket
- sshd
- sshd-keygen.target
- sshd-keygen@
- sshd.socket
- sshd@
- sssd
- sssd-autofs
- sssd-autofs.socket
- sssd-kcm
- sssd-kcm.socket
- sssd-nss
- sssd-nss.socket
- sssd-pac
- sssd-pac.socket
- sssd-pam
- sssd-pam-priv.socket
- sssd-pam.socket
- sssd-ssh
- sssd-ssh.socket
- sssd-sudo
- sssd-sudo.socket
- suspend-then-hibernate.target
- suspend.target
- swap.target
- switcheroo-control
- sys-fs-fuse-connections.mount
- sys-kernel-config.mount
- sys-kernel-debug.mount
- sysinit.target
- syslog
- syslog.socket
- system-update-cleanup
- system-update-pre.target
- system-update.target
- systemd-ask-password-console
- systemd-ask-password-console.path
- systemd-ask-password-plymouth
- systemd-ask-password-plymouth.path
- systemd-ask-password-wall
- systemd-ask-password-wall.path
- systemd-backlight@
- systemd-binfmt
- systemd-coredump.socket
- systemd-coredump@
- systemd-exit
- systemd-firstboot
- systemd-fsck-root
- systemd-fsck@
- systemd-halt
- systemd-hibernate
- systemd-hibernate-resume@
- systemd-hostnamed
- systemd-hwdb-update
- systemd-hybrid-sleep
- systemd-importd
- systemd-initctl
- systemd-initctl.socket
- systemd-journal-catalog-update
- systemd-journal-flush
- systemd-journald
- systemd-journald-audit.socket
- systemd-journald-dev-log.socket
- systemd-journald.socket
- systemd-kexec
- systemd-localed
- systemd-logind
- systemd-machine-id-commit
- systemd-machined
- systemd-modules-load
- systemd-nspawn@
- systemd-portabled
- systemd-poweroff
- systemd-quotacheck
- systemd-random-seed
- systemd-reboot
- systemd-remount-fs
- systemd-resolved
- systemd-rfkill
- systemd-rfkill.socket
- systemd-suspend
- systemd-suspend-then-hibernate
- systemd-sysctl
- systemd-sysusers
- systemd-timedated
- systemd-tmpfiles-clean
- systemd-tmpfiles-clean.timer
- systemd-tmpfiles-setup
- systemd-tmpfiles-setup-dev
- systemd-udev-settle
- systemd-udev-trigger
- systemd-udevd
- systemd-udevd-control.socket
- systemd-udevd-kernel.socket
- systemd-update-done
- systemd-update-utmp
- systemd-update-utmp-runlevel
- systemd-user-sessions
- systemd-vconsole-setup
- systemd-volatile-root
- tcsd
- teamd@
- time-sync.target
- timedatex
- timers.target
- tmp.mount
- tuned
- udisks2
- umount.target
- unbound-anchor
- unbound-anchor.timer
- upower
- usb_modeswitch@
- usbmuxd
- user-runtime-dir@
- user@
- var-lib-machines.mount
- var-lib-nfs-rpc_pipefs.mount
- vdo
- vdo-start-by-dev@
- vgauthd
- virt-guest-shutdown.target
- virtinterfaced
- virtinterfaced-admin.socket
- virtinterfaced-ro.socket
- virtinterfaced.socket
- virtlockd
- virtlockd-admin.socket
- virtlockd.socket
- virtlogd
- virtlogd-admin.socket
- virtlogd.socket
- virtnetworkd
- virtnetworkd-admin.socket
- virtnetworkd-ro.socket
- virtnetworkd.socket
- virtnodedevd
- virtnodedevd-admin.socket
- virtnodedevd-ro.socket
- virtnodedevd.socket
- virtnwfilterd
- virtnwfilterd-admin.socket
- virtnwfilterd-ro.socket
- virtnwfilterd.socket
- virtproxyd
- virtproxyd-admin.socket
- virtproxyd-ro.socket
- virtproxyd-tcp.socket
- virtproxyd-tls.socket
- virtproxyd.socket
- virtqemud
- virtqemud-admin.socket
- virtqemud-ro.socket
- virtqemud.socket
- virtsecretd
- virtsecretd-admin.socket
- virtsecretd-ro.socket
- virtsecretd.socket
- virtstoraged
- virtstoraged-admin.socket
- virtstoraged-ro.socket
- virtstoraged.socket
- vmtoolsd
- wacom-inputattach@
- wpa_supplicant
- zram
2.2.3 service.disabled
检查指定服务是否开机不自动启动
// JiaL主机没有安装httpd服务
[root@JiaL ~]# systemctl status httpd
Unit httpd.service could not be found.
[root@JLin ~]# salt '192.168.23.181' service.disabled httpd
192.168.23.181:
True
// node主机httpd服务已开机自启动
[root@JiaL ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendo>
Active: active (running) since Wed 2021-11-03 13:18:39 EDT; 982ms ago
Docs: man:httpd.service(8)
Main PID: 225831 (httpd)
Status: "Started, listening on: port 80"
Tasks: 213 (limit: 23372)
Memory: 43.2M
CGroup: /system.slice/httpd.service
├─225831 /usr/sbin/httpd -DFOREGROUND
├─225832 /usr/sbin/httpd -DFOREGROUND
├─225833 /usr/sbin/httpd -DFOREGROUND
├─225834 /usr/sbin/httpd -DFOREGROUND
└─225835 /usr/sbin/httpd -DFOREGROUND
Nov 03 13:18:39 JiaL systemd[1]: Starting The Apache HTTP Server...
Nov 03 13:18:39 JiaL httpd[225831]: AH00558: httpd: Could not reliably de>
Nov 03 13:18:39 JiaL systemd[1]: Started The Apache HTTP Server.
Nov 03 13:18:39 JiaL httpd[225831]: Server configured, listening on: port>
lines 1-19/19 (END)
2.2.4 service.enabled
检查指定服务是否开机自动启动
[root@JLin ~]# salt '192.168.23.181' service.enabled httpd
192.168.23.181:
False
2.2.5 service.disable
设置指定服务开机不自动启动
[root@JLin ~]# salt '192.168.23.181' service.disabled httpd
192.168.23.181:
True
查看node1主机 httpd状态
[root@JiaL ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendo>
Active: active (running) since Wed 2021-11-03 13:18:39 EDT; 4min 6s ago
Docs: man:httpd.service(8)
Main PID: 225831 (httpd)
Status: "Running, listening on: port 80"
Tasks: 213 (limit: 23372)
Memory: 43.1M
CGroup: /system.slice/httpd.service
├─225831 /usr/sbin/httpd -DFOREGROUND
├─225832 /usr/sbin/httpd -DFOREGROUND
├─225833 /usr/sbin/httpd -DFOREGROUND
├─225834 /usr/sbin/httpd -DFOREGROUND
└─225835 /usr/sbin/httpd -DFOREGROUND
Nov 03 13:18:39 JiaL systemd[1]: Starting The Apache HTTP Server...
Nov 03 13:18:39 JiaL httpd[225831]: AH00558: httpd: Could not reliably de>
Nov 03 13:18:39 JiaL systemd[1]: Started The Apache HTTP Server.
Nov 03 13:18:39 JiaL httpd[225831]: Server configured, listening on: port>
lines 1-19/19 (END)
2.2.6 service.enable
设置指定服务开机自动启动
[root@JLin ~]# salt '192.168.23.181' service.enabled httpd
192.168.23.181:
False
// 查看node1主机 httpd状态
[root@JiaL ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendo>
Active: active (running) since Wed 2021-11-03 13:18:39 EDT; 6min ago
Docs: man:httpd.service(8)
Main PID: 225831 (httpd)
Status: "Running, listening on: port 80"
Tasks: 213 (limit: 23372)
Memory: 43.1M
CGroup: /system.slice/httpd.service
├─225831 /usr/sbin/httpd -DFOREGROUND
├─225832 /usr/sbin/httpd -DFOREGROUND
├─225833 /usr/sbin/httpd -DFOREGROUND
├─225834 /usr/sbin/httpd -DFOREGROUND
└─225835 /usr/sbin/httpd -DFOREGROUND
Nov 03 13:18:39 JiaL systemd[1]: Starting The Apache HTTP Server...
Nov 03 13:18:39 JiaL httpd[225831]: AH00558: httpd: Could not reliably de>
Nov 03 13:18:39 JiaL systemd[1]: Started The Apache HTTP Server.
Nov 03 13:18:39 JiaL httpd[225831]: Server configured, listening on: port>
2.2.7 service.reload
重新加载指定服务
[root@JLin ~]# salt '192.168.23.181' service.reload httpd
192.168.23.181:
True
2.2.8 service.stop
停止指定服务
[root@JLin ~]# salt '192.168.23.181' service.stop httpd
192.168.23.181:
True
// 查看node1主机的httpd服务是否停止
[root@JiaL ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendo>
Active: inactive (dead)
Docs: man:httpd.service(8)
Nov 03 13:18:39 JiaL httpd[225831]: AH00558: httpd: Could not reliably de>
Nov 03 13:18:39 JiaL systemd[1]: Started The Apache HTTP Server.
Nov 03 13:18:39 JiaL httpd[225831]: Server configured, listening on: port>
Nov 03 13:26:23 JiaL systemd[1]: Reloading The Apache HTTP Server.
Nov 03 13:26:23 JiaL httpd[245768]: AH00558: httpd: Could not reliably de>
Nov 03 13:26:23 JiaL httpd[225831]: Server configured, listening on: port>
Nov 03 13:26:23 JiaL systemd[1]: Reloaded The Apache HTTP Server.
Nov 03 13:26:49 JiaL systemd[1]: Stopping The Apache HTTP Server...
Nov 03 13:26:50 JiaL systemd[1]: httpd.service: Succeeded.
Nov 03 13:26:50 JiaL systemd[1]: Stopped The Apache HTTP Server.
2.2.9 service.start
启动指定服务
[root@JLin ~]# salt '192.168.23.181' service.start httpd
192.168.23.181:
True
// 查看node1主机的httpd服务是否启动
[root@JiaL ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendo>
Active: active (running) since Wed 2021-11-03 13:27:26 EDT; 8s ago
Docs: man:httpd.service(8)
Main PID: 248377 (httpd)
Status: "Started, listening on: port 80"
Tasks: 213 (limit: 23372)
Memory: 30.7M
CGroup: /system.slice/httpd.service
├─248377 /usr/sbin/httpd -DFOREGROUND
├─248382 /usr/sbin/httpd -DFOREGROUND
├─248383 /usr/sbin/httpd -DFOREGROUND
├─248384 /usr/sbin/httpd -DFOREGROUND
└─248385 /usr/sbin/httpd -DFOREGROUND
Nov 03 13:27:26 JiaL systemd[1]: Starting The Apache HTTP Server...
Nov 03 13:27:26 JiaL httpd[248377]: AH00558: httpd: Could not reliably de>
Nov 03 13:27:26 JiaL systemd[1]: Started The Apache HTTP Server.
Nov 03 13:27:26 JiaL httpd[248377]: Server configured, listening on: port>
2.2.10 service.restart
重启指定服务
[root@JLin ~]# salt '192.168.23.181' service.restart httpd
192.168.23.181:
True
2.2.11 service.status
查看指定服务的状态
// httpd服务开启状态查看的时候返回True
[root@JLin ~]# salt '192.168.23.181' service.status httpd
192.168.23.181:
True
// 关闭httpd服务查看状态返回Flase
[root@JiaL ~]# systemctl stop httpd
[root@JiaL ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendo>
Active: inactive (dead)
Docs: man:httpd.service(8)
Nov 03 13:28:04 JiaL systemd[1]: Stopping The Apache HTTP Server...
Nov 03 13:28:05 JiaL systemd[1]: httpd.service: Succeeded.
Nov 03 13:28:05 JiaL systemd[1]: Stopped The Apache HTTP Server.
Nov 03 13:28:05 JiaL systemd[1]: Starting The Apache HTTP Server...
Nov 03 13:28:05 JiaL httpd[250240]: AH00558: httpd: Could not reliably de>
Nov 03 13:28:05 JiaL systemd[1]: Started The Apache HTTP Server.
Nov 03 13:28:05 JiaL httpd[250240]: Server configured, listening on: port>
Nov 03 13:28:43 JiaL systemd[1]: Stopping The Apache HTTP Server...
Nov 03 13:28:44 JiaL systemd[1]: httpd.service: Succeeded.
Nov 03 13:28:44 JiaL systemd[1]: Stopped The Apache HTTP Server.
[root@JLin ~]# salt '192.168.23.181' service.status httpd
192.168.23.181:
False
2.2.12 service.missing
查看指定服务是否存在
[root@JLin ~]# salt '192.168.23.181' service.missing httpd
192.168.23.181:
False
[root@JLin ~]# salt '192.168.23.181' service.missing nginx
192.168.23.181:
True
2.3 SaltStack常用模块之pkg
2.3.1 pkg.download
只下载软件包但不安装
此功能将会下载指定的软件包,但是需要在minion端安装yum-utils,可以使用 cmd.run 进行远程安装
// 在JLLL主机上安装wget
[root@JLin ~]# salt '192.168.23.182' pkg.download wget
192.168.23.182:
----------
wget:
/var/cache/yum/packages/wget-1.19.5-10.el8.x86_64.rpm
// 查看下载情况
[root@JLLL ~]# cd /var/cache/yum/packages/
[root@JLLL packages]# ls
wget-1.19.5-10.el8.x86_64.rpm
2.3.2 pkg.file_list
列出指定包或系统中已安装的所有包的文件
[root@JLin ~]# salt '192.168.23.181' pkg.file_list httpd
192.168.23.181:
----------
errors:
files:
- /etc/httpd/conf
- /etc/httpd/conf.d/autoindex.conf
- /etc/httpd/conf.d/userdir.conf
- /etc/httpd/conf.d/welcome.conf
- /etc/httpd/conf.modules.d
- /etc/httpd/conf.modules.d/00-base.conf
- /etc/httpd/conf.modules.d/00-dav.conf
- /etc/httpd/conf.modules.d/00-lua.conf
- /etc/httpd/conf.modules.d/00-mpm.conf
- /etc/httpd/conf.modules.d/00-optional.conf
- /etc/httpd/conf.modules.d/00-proxy.conf
- /etc/httpd/conf.modules.d/00-systemd.conf
- /etc/httpd/conf.modules.d/01-cgi.conf
- /etc/httpd/conf.modules.d/README
- /etc/httpd/conf/httpd.conf
- /etc/httpd/conf/magic
- /etc/httpd/logs
- /etc/httpd/modules
- /etc/httpd/run
- /etc/httpd/state
- /etc/logrotate.d/httpd
- /etc/sysconfig/htcacheclean
- /run/httpd
- /run/httpd/htcacheclean
- /usr/lib/.build-id
- /usr/lib/.build-id/00
- /usr/lib/.build-、
<省略万字>
```shell
当不提供参数时,将会列出当前系统中所有已安装软件的文件列表
```shell
[root@JLin ~]# salt '*' pkg.file_list
192.168.23.181:
----------
errors:
files:
VALUE_TRIMMED
192.168.23.182:
----------
errors:
files:
VALUE_TRIMMED
192.168.23.183:
----------
errors:
files:
VALUE_TRIMMED
JLin:
----------
errors:
files:
VALUE_TRIMMED
2.3.3 pkg.group_info
查看包组的信息
[root@JLin ~]# salt '192.168.23.182' pkg.group_info 'Development Tools'
192.168.23.182:
----------
conditional:
default:
- asciidoc
- byacc
- ctags
- diffstat
- elfutils-libelf-devel
- git
- intltool
- jna
- ltrace
- patchutils
- perl-Fedora-VSP
- perl-Sys-Syslog
- perl-generators
- pesign
- source-highlight
- systemtap
- valgrind
- valgrind-devel
description:
A basic development environment.
group:
Development Tools
id:
None
mandatory:
- autoconf
- automake
- binutils
- bison
- flex
- gcc
- gcc-c++
- gdb
- glibc-devel
- libtool
- make
- pkgconf
- pkgconf-m4
- pkgconf-pkg-config
- redhat-rpm-config
- rpm-build
- rpm-sign
- strace
optional:
- cmake
- expect
- rpmdevtools
- rpmlint
type:
package group
2.3.4 pkg.group_list
列出系统中所有的包组
[root@JLin ~]# salt '192.168.23.182' pkg.group_list
192.168.23.182:
----------
available:
- Backup Client
- Conflicts AppStream
- Debugging Tools
- Desktop Debugging and Performance Tools
- .NET Core Development
- FTP Server
- GNOME Applications
- Graphics Creation Tools
- Guest Agents
- Internet Applications
- Java Platform
- Legacy X Window System Compatibility
- Office Suite and Productivity
- Atomic Host ostree support
- KVM platform specific packages
- Hyper-v platform specific packages
- Remote Desktop Clients
- RPM Development Tools
- TeX formatting system
- Virtualization Client
- Virtualization Hypervisor
- Virtualization Platform
- Virtualization Tools
- Basic Web Server
- Additional Development
- Anaconda tools
- Base
- Conflicts BaseOS
- Development Tools
- Dial-up Networking Support
- File and Storage Server
- Graphical Administration Tools
- Infiniband Support
- Large Systems Performance
- Legacy UNIX Compatibility
- Mail Server
- Mainframe Access
- Network File System Client
- Network Servers
- Networking Tools
- Performance Tools
- Platform Development
- Python Web
- Remote Management for Linux
- Scientific Support
- Security Tools
- Smart Card Support
- Windows File Server
- System Tools
- Workstation product core
available environments:
- Server
- Minimal Install
- Workstation
- Virtualization Host
- Custom Operating System
available languages:
----------
installed:
- base-x
- Container Management
- Guest Desktop Agents
- Input Methods
- Internet Browser
- Multimedia
- VMware platform specific packages
- Printing Client
- Core
- Fonts
- GNOME
- Hardware Monitoring Utilities
- Hardware Support
- Headless Management
- Common NetworkManager submodules
- Server product core
- Standard
installed environments:
- Server with GUI
2.3.5 pkg.install
安装软件
[root@JLin ~]# salt '192.168.23.183' pkg.install nginx
192.168.23.183:
----------
nginx:
----------
new:
1:1.14.1-9.module_el8.0.0+184+e34fea82
old:
nginx-all-modules:
----------
new:
1:1.14.1-9.module_el8.0.0+184+e34fea82
old:
nginx-filesystem:
----------
new:
1:1.14.1-9.module_el8.0.0+184+e34fea82
old:
nginx-mod-http-image-filter:
----------
new:
1:1.14.1-9.module_el8.0.0+184+e34fea82
old:
nginx-mod-http-perl:
----------
new:
1:1.14.1-9.module_el8.0.0+184+e34fea82
old:
nginx-mod-http-xslt-filter:
----------
new:
1:1.14.1-9.module_el8.0.0+184+e34fea82
old:
nginx-mod-mail:
----------
new:
1:1.14.1-9.module_el8.0.0+184+e34fea82
old:
nginx-mod-stream:
----------
new:
1:1.14.1-9.module_el8.0.0+184+e34fea82
old:
// 查看安装情况
[root@JJJL minion]# rpm -qa | grep nginx
nginx-filesystem-1.14.1-9.module_el8.0.0+184+e34fea82.noarch
nginx-all-modules-1.14.1-9.module_el8.0.0+184+e34fea82.noarch
nginx-mod-http-perl-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
nginx-mod-http-xslt-filter-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
nginx-mod-stream-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
nginx-mod-mail-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
nginx-mod-http-image-filter-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
2.3.6 pkg.list_downloaded
列出已下载到本地的软件包
[root@JLin ~]# salt '192.168.23.182' pkg.list_downloaded
2.3.7 pkg.list_pkgs
以字典的方式列出当前已安装的软件包
[root@JLin ~]# salt '192.168.23.183' pkg.list_pkgs
192.168.23.183:
----------
GConf2:
3.2.6-22.el8
ModemManager:
1.10.8-4.el8
ModemManager-glib:
1.10.8-4.el8
<省略万字>
2.3.8 pkg.owner
列出指定文件是由哪个包提供的
[root@JLin ~]# salt '192.168.23.183' pkg.owner /usr/sbin/nginx
192.168.23.183:
nginx
[root@JLin ~]# salt '192.168.23.181' pkg.owner /usr/sbin/apachectl /etc/httpd/conf/httpd.conf
192.168.23.181:
----------
/etc/httpd/conf/httpd.conf:
httpd
/usr/sbin/apachectl:
httpd
2.3.9 pkg.remove
卸载指定软件
// 查看jiaL主机是否下载wget
[root@JiaL ~]# rpm -qa | grep wget
wget-1.19.5-10.el8.x86_64
// 使用万能模块cmd.run过滤wget
[root@JLin ~]# salt '192.168.23.181' cmd.run 'rpm -qa | grep wget'
192.168.23.181:
wget-1.19.5-10.el8.x86_64
// 开始删除
[root@JLin ~]# salt '192.168.23.181' pkg.remove wget
192.168.23.181:
----------
libmetalink:
----------
new:
old:
0.1.3-7.el8
wget:
----------
new:
old:
1.19.5-10.el8
// 查看是否存在
[root@JiaL ~]# rpm -qa | grep wget
// 若要卸载多个文件,中间需要用逗号隔开
2.3.10 pkg.upgrade
升级系统中所有的软件包或升级指定的软件包
[root@JLin ~]# salt '192.168.23.181' pkg.upgrade name=wget
192.168.23.181:
ERROR: Problem encountered upgrading packages. Additional info follows:
changes:
----------
result:
----------
pid:
308391
retcode:
1
stderr:
Running scope as unit: run-r56ca43f61eea43e384002cff024c0988.scope
Invalid configuration value: failovermethod=priority in /etc/yum.repos.d/salt.repo; Configuration: OptionBinding with id "failovermethod" does not exist
Error: No packages marked for upgrade.
stdout:
// 若想升级系统中所有的软件包则把 name 参数去掉即可
2.3.11 pkg.group_install
安装包组
[root@JLin ~]# salt '192.168.23.181' pkg.group_install 'Development Tools'
192.168.23.181:
----------
annobin:
----------
new:
10.15-2.el8
old:
asciidoc:
----------
new:
8.6.10-0.5.20180627gitf7c2274.el8
old:
autoconf:
----------
new:
2.69-29.el8
old:
automake:
----------
new:
1.16.1-7.el8
old:
bison:
----------
new:
3.0.4-10.el8
old:
boost-filesystem:
----------
new:
1.66.0-10.el8
old:
boost-timer:
----------
new:
1.66.0-10.el8
old:
byacc:
----------
new:
1.9.20170709-4.el8
old:
copy-jdk-configs:
----------
new:
4.0-2.el8
old:
cpp:
----------
new:
8.5.0-3.el8
old:
ctags:
----------
new:
5.8-22.el8
old:
diffstat:
----------
new:
1.61-7.el8
old:
docbook-dtds:
----------
new:
1.0-69.el8
old:
docbook-style-xsl:
----------
new:
1.79.2-9.el8
old:
dwz:
----------
new:
0.12-10.el8
old:
dyninst:
----------
new:
11.0.0-3.el8
old:
efi-srpm-macros:
----------
new:
3-3.el8
old:
elfutils:
----------
new:
0.185-1.el8
old:
elfutils-debuginfod-client-devel:
----------
new:
0.185-1.el8
old:
elfutils-devel:
----------
new:
0.185-1.el8
old:
elfutils-libelf-devel:
----------
new:
0.185-1.el8
old:
flex:
----------
new:
2.6.1-9.el8
old:
gc:
----------
new:
7.6.4-3.el8
old:
gcc:
----------
new:
8.5.0-3.el8
old:
gcc-c++:
----------
new:
8.5.0-3.el8
old:
gcc-gdb-plugin:
----------
new:
8.5.0-3.el8
old:
gdb:
----------
new:
8.2-16.el8
old:
gdb-headless:
----------
new:
8.2-16.el8
old:
gettext-common-devel:
----------
new:
0.19.8.1-17.el8
old:
gettext-devel:
----------
new:
0.19.8.1-17.el8
old:
ghc-srpm-macros:
----------
new:
1.4.2-7.el8
old:
git:
----------
new:
2.27.0-1.el8
old:
git-core:
----------
new:
2.27.0-1.el8
old:
git-core-doc:
----------
new:
2.27.0-1.el8
old:
glibc:
----------
new:
2.28-167.el8
old:
2.28-164.el8
glibc-common:
----------
new:
2.28-167.el8
old:
2.28-164.el8
glibc-devel:
----------
new:
2.28-167.el8
old:
glibc-gconv-extra:
----------
new:
2.28-167.el8
old:
glibc-headers:
----------
new:
2.28-167.el8
old:
glibc-langpack-en:
----------
new:
2.28-167.el8
old:
2.28-164.el8
go-srpm-macros:
----------
new:
2-17.el8
old:
graphviz:
----------
new:
2.40.1-43.el8
old:
guile:
----------
new:
5:2.0.14-7.el8
old:
intltool:
----------
new:
0.51.0-11.el8
old:
isl:
----------
new:
0.16.1-6.el8
old:
java-1.8.0-openjdk-headless:
----------
new:
1:1.8.0.312.b07-1.el8_4
old:
javapackages-filesystem:
----------
new:
5.3.0-1.module_el8.0.0+11+5b8c10bd
old:
jna:
----------
new:
4.5.1-5.el8
old:
kernel-devel:
----------
new:
4.18.0-348.el8
old:
kernel-headers:
----------
new:
4.18.0-348.el8
old:
libXaw:
----------
new:
1.0.13-10.el8
old:
libatomic_ops:
----------
new:
7.6.2-3.el8
old:
libbabeltrace:
----------
new:
1.5.4-3.el8
old:
libipt:
----------
new:
1.6.1-8.el8
old:
libstdc++-devel:
----------
new:
8.5.0-3.el8
old:
libtool:
----------
new:
2.4.6-25.el8
old:
libxcrypt-devel:
----------
new:
4.1.1-6.el8
old:
libzstd-devel:
----------
new:
1.4.4-1.el8
old:
lksctp-tools:
----------
new:
1.0.18-3.el8
old:
ltrace:
----------
new:
0.7.91-28.el8
old:
m4:
----------
new:
1.4.18-7.el8
old:
make:
----------
new:
1:4.2.1-11.el8
old:
mokutil:
----------
new:
1:0.3.0-11.el8
old:
nss-tools:
----------
new:
3.67.0-6.el8_4
old:
ocaml-srpm-macros:
----------
new:
5-4.el8
old:
openblas-srpm-macros:
----------
new:
2-2.el8
old:
patch:
----------
new:
2.7.6-11.el8
old:
patchutils:
----------
new:
0.3.4-10.el8
old:
perl-Error:
----------
new:
1:0.17025-2.el8
old:
perl-Fedora-VSP:
----------
new:
0.001-9.el8
old:
perl-Git:
----------
new:
2.27.0-1.el8
old:
perl-Sys-Syslog:
----------
new:
0.35-397.el8
old:
perl-TermReadKey:
----------
new:
2.37-7.el8
old:
perl-Thread-Queue:
----------
new:
3.13-1.el8
old:
perl-XML-Parser:
----------
new:
2.44-11.el8
old:
perl-generators:
----------
new:
1.10-9.el8
old:
perl-srpm-macros:
----------
new:
1-25.el8
old:
pesign:
----------
new:
0.112-25.el8
old:
python-rpm-macros:
----------
new:
3-41.el8
old:
python-srpm-macros:
----------
new:
3-41.el8
old:
python3-rpm:
----------
new:
4.14.3-19.el8
old:
4.14.3-18.el8
python3-rpm-macros:
----------
new:
3-41.el8
old:
qt5-srpm-macros:
----------
new:
5.15.2-1.el8
old:
redhat-rpm-config:
----------
new:
125-1.el8
old:
rpm:
----------
new:
4.14.3-19.el8
old:
4.14.3-18.el8
rpm-build:
----------
new:
4.14.3-19.el8
old:
rpm-build-libs:
----------
new:
4.14.3-19.el8
old:
4.14.3-18.el8
rpm-libs:
----------
new:
4.14.3-19.el8
old:
4.14.3-18.el8
rpm-plugin-selinux:
----------
new:
4.14.3-19.el8
old:
4.14.3-18.el8
rpm-plugin-systemd-inhibit:
----------
new:
4.14.3-19.el8
old:
4.14.3-18.el8
rpm-sign:
----------
new:
4.14.3-19.el8
old:
rust-srpm-macros:
----------
new:
5-2.el8
old:
sgml-common:
----------
new:
0.6.3-50.el8
old:
source-highlight:
----------
new:
3.1.8-17.el8
old:
systemtap:
----------
new:
4.5-3.el8
old:
systemtap-client:
----------
new:
4.5-3.el8
old:
systemtap-devel:
----------
new:
4.5-3.el8
old:
systemtap-runtime:
----------
new:
4.5-3.el8
old:
tbb:
----------
new:
2018.2-9.el8
old:
tzdata-java:
----------
new:
2021e-1.el8
old:
valgrind:
----------
new:
1:3.18.1-1.el8
old:
valgrind-devel:
----------
new:
1:3.18.1-1.el8
old:
xorg-x11-fonts-ISO8859-1-100dpi:
----------
new:
7.5-19.el8
old:
xz-devel:
----------
new:
5.2.4-3.el8
old:
zlib-devel:
----------
new:
1.2.11-17.el8
old:
zstd:
----------
new:
1.4.4-1.el8
old:
2.4 SaltStack常用模块之state
2.4.1 state.show_highstate
显示当前系统中有哪些高级状态
[root@JLin ~]# salt '192.168.23.181' state.show_highstate
2.4.2 state.highstate
执行高级状态
pillar自定义数据:
在master的配置文件里找pillar_roots可以看到其存放pillar的位置
[root@JLin ~]# vim /etc/salt/master
pillar_roots:
base:
- /srv/pillar
[root@JLin ~]# systemctl restart salt-master
[root@JLin ~]# mkdir -p /srv/pillar/base
[root@JLin ~]# vim /srv/pillar/base/test.sls
{% if grains['os'] == 'CentOS Stream' %}
test: httpd
{% elif grains['os'] == 'CentOS' %}
test: nginx
{% endif %}
[root@JLin ~]# vim /srv/pillar/base/top.sls
base:
'192.168.23.181':
- test
[root@JLin ~]# vim /etc/salt/master
#pillar_opts: True
[root@JLin ~]# salt '*' pillar.items
192.168.23.181:
----------
192.168.23.183:
----------
192.168.23.182:
----------
JLin:
----------
// 在salt下修改nginx的状态文件,引用pillar的数据
[root@JLin ~]# vim /srv/salt/base/web/apache/install.sls
apache-install:
pkg.installed:
- name: "{{ pillar['test'] }}"
apache-service:
service.running:
- name: "{{ pillar['test'] }}"
- enable: True
// 高级状态
[root@JLin ~]# salt '192.168.23.181' state.highstate web.apache.install
2.4.3 state.show_state_usage
显示当前系统中的高级状态执行情况
[root@JLin ~]# salt '192.168.23.181' state.show_state_usage
192.168.23.181:
----------
base:
----------
count_all:
0
count_unused:
0
count_used:
0
unused:
used:
2.4.4 state.show_top
返回minion将用于highstate的顶级数据
[root@JLin ~]# salt '192.168.23.181' state.show_top
192.168.23.181:
----------
base:
- web.apache.install
2.4.5 state.top
执行指定的top file
// 在top file里面使用Grains
[root@JLin ~]# vim /srv/salt/base/JLin.sls
base:
'os:Centos Stream':
- match: grain
- web.apache.install
执行指定的top file,而不是默认的
[root@JLin ~]# salt "192.168.23.181" state.top JLin.sls
2.4.6 state.show_sls
显示 master 上特定sls或sls文件列表中的状态数据
[root@JLin ~]# salt '192.168.23.181' state.show_sls web.apache.install
192.168.23.181:
----------
apache-install:
----------
__env__:
base
__sls__:
web.apache.install
pkg:
|_
----------
name:
httpd
- installed
|_
----------
order:
10000
apache-service:
----------
__env__:
base
__sls__:
web.apache.install
service:
|_
----------
name:
httpd
|_
----------
enable:
True
- running
|_
----------
order:
10001
2.5 SaltStack常用模块之user
2.5.1 user.add
创建用户
[root@JLin ~]# id JLin
id: 'JLin': no such user
[root@JLin ~]# salt "master" user.add JLin
master:
True
[root@JLin ~]# id JLin
uid=1000(JLin) gid=1000(JLin) groups=1000(JLin)
2.5.2 user.chfullname
更改用户完整名称(用户信息进行描述)
[root@JLin ~]# salt "master" user.chfullname JLin "JLin Bar"
master:
True
[root@JLin ~]# cat /etc/passwd | tail -1
JLin:x:1000:1000:JLin Bar:/home/JLin:/bin/bash
2.5.3 user.chuid
更改用户UID
[root@JLin ~]# id JLin
uid=1000(JLin) gid=1000(JLin) groups=1000(JLin)
[root@JLin ~]# salt 'JLin' user.chuid JLin 2000
master:
True
[root@JLin ~]# id JLin
uid=2000(JLin) gid=1000(JLin) groups=1000(JLin)
2.5.4 user.chgid
更改用户GID
[root@JLin ~]# userdel -r xc
[root@JLin ~]# salt 'JLin' user.add xc
master:
True
// 更改gid,用户组得先存在
[root@JLin ~]# id xc
uid=2001(xc) gid=2001(xc) groups=2001(xc)
// 把JLin的1000gid更改为2001
[root@JLin ~]# salt 'JLin' user.chgid JLin 2001
master:
True
[root@JLin ~]# id JLin
uid=2000(JLin) gid=2001(xc) groups=2001(xc)
2.5.5 user.info
返回用户信息
[root@JLin ~]# salt 'JLin' user.info JLin
master:
----------
fullname:
gid:
2001
groups:
- xc
home:
/home/JLin
homephone:
name:
JLin
other:
passwd:
x
roomnumber:
shell:
/bin/bash
uid:
2000
workphone:
2.5.6 user.getent
返回所有系统用户信息的列表。
[root@JLin ~]# salt 'JLin' user.getent
master:
|_
----------
fullname:
root
gid:
0
groups:
- root
home:
/root
homephone:
name:
root
other:
passwd:
x
roomnumber:
shell:
/bin/bash
uid:
0
workphone:
|_
----------
fullname:
bin
gid:
1
groups:
- bin
home:
/bin
homephone:
name:
bin
other:
passwd:
x
roomnumber:
shell:
/sbin/nologin
uid:
1
workphone:
|_
----------
fullname:
daemon
gid:
2
groups:
- daemon
home:
/sbin
homephone:
name:
daemon
other:
passwd:
x
roomnumber:
shell:
/sbin/nologin
uid:
2
workphone:
|_
2.5.7 user.list_groups
列出指定用户所属组的列表。
[root@JLin ~]# salt 'JLin' user.list_groups JLin
master:
- JLin
2.5.8 user.list_users
返回所有用户的列表
[root@JLin ~]# salt 'JLin' user.list_users
master:
- adm
- bin
- daemon
- dbus
- ftp
- games
- halt
- lp
- mail
- nobody
- operator
- polkitd
- rngd
- root
- shutdown
- sshd
- sssd
- sync
- systemd-coredump
- systemd-resolve
- tss
- unbound
- xc
2.5.9 user.rename
修改指定用户的用户名
[root@JLin ~]# id JLin
uid=2000(JLin) gid=2001(xc) groups=2001(xc)
[root@JLin ~]# salt 'JLin' user.rename JLin JLin123
master:
False
[root@JLin ~]# id JLin
id: 'JLin': no such user
[root@JLin ~]# id JLin123
uid=2000(JLin123) gid=2001(xc) groups=2001(xc)
[root@JLin ~]# cat /etc/passwd | tail -2
JLin123:x:2000:2001:JLin Bar:/home/JLin:/bin/bash
xc:x:2001:2001::/home/xc:/bin/bash
// 虽然返回False但是操作是成功完成了的
2.5.10 user.delete
删除用户
[root@JLin ~]# id JLin123
uid=2000(JLin123) gid=2001(xc) groups=2001(xc)
[root@JLin ~]# salt 'JLin' user.delete JLin123
master:
True
[root@JLin ~]# id JLin123
id: 'JLin123': no such user
[root@JLin ~]# cat /etc/passwd | tail -2
rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
xc:x:2001:2001::/home/xc:/bin/bash
2.6 SaltStack常用模块之salt-cp
salt-cp能够很方便的把 JLin上的文件批量传到 minion 上
// 拷贝单个文件到目标主机的/usr/src目录下
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls /usr/src'
192.168.23.181:
debug
kernels
[root@JLin ~]# touch JLin.zz
[root@JLin ~]# ll
-rw-r--r--. 1 root root 0 Nov 4 09:30 JLin.zz
[root@JLin ~]# salt-cp '192.168.23.181' JLin.zz /usr/src/
192.168.23.181:
----------
/usr/src/JLin.zz:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls /usr/src'
192.168.23.181:
JLin.zz
debug
kernels
// 拷贝多个文件到目标主机的/usr/src目录下
[root@JLin ~]# touch JLin.jj
[root@JLin ~]# touch JLin.ll
[root@JLin ~]# ll
-rw-r--r--. 1 root root 0 Nov 4 09:32 JLin.jj
-rw-r--r--. 1 root root 0 Nov 4 09:32 JLin.ll
-rw-r--r--. 1 root root 0 Nov 4 09:30 JLin.zz
[root@JLin ~]# salt-cp '192.168.23.181' JLin.jj JLin.ll /usr/src/
192.168.23.181:
----------
/usr/src/JLin.jj:
True
/usr/src/JLin.ll:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls /usr/src'
192.168.23.181:
JLin.jj
JLin.ll
JLin.zz
debug
kernels
2.7 SaltStack常用模块之file
2.7.1 file.access
检查指定路径是否存在
// 文件存在
[root@JLin ~]# salt '192.168.23.181' file.access /usr/src/JLin.zz f
192.168.23.181:
True
// 文件不存在
[root@JLin ~]# salt '192.168.23.181' file.access /usr/src/JiaL.zz f
192.168.23.181:
False
检查指定文件的权限信息
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /usr/src'
192.168.23.181:
total 0
-rw-r--r--. 1 root root 0 Nov 4 09:32 JLin.jj
-rw-r--r--. 1 root root 0 Nov 4 09:32 JLin.ll
-rw-r--r--. 1 root root 0 Nov 4 09:31 JLin.zz
drwxr-xr-x. 2 root root 6 Jun 22 01:06 debug
drwxr-xr-x. 3 root root 35 Nov 3 13:53 kernels
// 检查/usr/src/JLin.zz文件是否有读权限
[root@JLin ~]# salt '192.168.23.181' file.access /usr/src/jLin.zz r
192.168.23.181:
False
// 检查/usr/src/passwd文件是否有写权限
[root@JLin ~]# salt '192.168.23.181' file.access /usr/src/jLin.zz w
192.168.23.181:
False
// 检查/usr/src/passwd 是否有执行权限
[root@JLin ~]# salt '192.168.23.181' file.access /usr/src/jLin.zz x
192.168.23.181:
False
2.7.2 file.append
往一个文件里追加内容,若此文件不存在则会报异常
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root/abc'
192.168.23.181:
ls: cannot access '/root/abc': No such file or directory
ERROR: Minions returned with non-zero exit code
// 创建文件
[root@JLin ~]# salt '192.168.23.181' cmd.run 'touch abc'
192.168.23.181:
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls /root'
192.168.23.181:
abc
// 文件存在,即可查看
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root/abc'
192.168.23.181:
-rw-r--r--. 1 root root 0 Nov 4 09:39 /root/abc
// 给abc文件添加内容
[root@JLin ~]# salt '192.168.23.181' file.append /root/abc "JLin" "JiaL" "JLLL"
192.168.23.181:
Wrote 3 lines to "/root/abc"
// 查看添加效果
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root/abc'
192.168.23.181:
-rw-r--r--. 1 root root 15 Nov 4 09:40 /root/abc
[root@JLin ~]# salt '192.168.23.181' cmd.run 'cat /root/abc'
192.168.23.181:
JLin
JiaL
JLLL
2.7.3 file.basename
获取指定路径的基名
[root@JLin ~]# salt '192.168.23.181' file.basename '/root/zabbix/abc'
192.168.23.181:
abc
2.7.4 file.dirname
获取指定路径的目录名
[root@JLin ~]# salt '192.168.23.181' file.dirname '/root/zabbix/abc'
192.168.23.181:
/root/zabbix
2.7.5 file.check_hash
检查指定的文件与hash字符串是否匹配,匹配则返回 True 否则返回 False
[root@JLin ~]# salt '192.168.23.181' cmd.run 'md5sum /etc/passwd'
192.168.23.181:
26f493f51afcdf0f9f962bcd2b006c60 /etc/passwd
[root@JLin ~]# salt '192.168.23.181' file.check_hash /etc/passwd 26f493f51afcdf0f9f962bcd2b006c60
192.168.23.181:
True
2.7.6 file.chattr
修改指定文件的属性
选项 | 对文件的意义 | 对目录的意义 |
---|---|---|
a | 只允许在这个文件之后追加数据, 不允许任何进程覆盖或截断这个文件 | 只允许在这个目录下建立和修改文件, 而不允许删除任何文件 |
i | 不允许对这个文件进行任何的修改, 不能删除、更改、移动 | 任何的进程只能修改目录之下的文件, 不允许建立和删除文件 |
给指定文件添加属性
// 查看当前属性
[root@JLin ~]# salt '192.168.23.181' cmd.run 'lsattr /root'
192.168.23.181:
-------------------- /root/anaconda-ks.cfg
-------------------- /root/abc
// 添加属性 operator=add
[root@JLin ~]# salt '192.168.23.181' file.chattr /root/abc operator=add attributes=ai
192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'lsattr /root'192.168.23.181:
-------------------- /root/anaconda-ks.cfg
----ia-------------- /root/abc
给指定文件去除属性
// 去除属性 operator=remove
[root@JLin ~]# salt '192.168.23.181' file.chattr /root/abc operator=remove attributes=i
192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'lsattr /root'192.168.23.181:
-------------------- /root/anaconda-ks.cfg
-----a-------------- /root/abc
2.7.7 file.chown
设置指定文件的属主、属组信息
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root/'
192.168.23.181:
total 16
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Desktop
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Documents
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Downloads
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Music
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Pictures
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Public
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Templates
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Videos
-rw-r--r--. 1 root root 15 Nov 4 09:40 abc
// 修改权限
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root/'
192.168.23.181:
total 12
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Desktop
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Documents
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Downloads
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Music
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Pictures
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Public
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Templates
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Videos
-rw-r--r--. 1 root root 15 Nov 4 09:40 abc
-rw-------. 1 root root 1274 Oct 13 21:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 1581 Oct 13 21:43 initial-setup-ks.cfg
-rw-r--r--. 1 jlin jlin 0 Nov 4 09:53 jlin
[root@JLin ~]# salt '192.168.23.181' file.chown /root/abc root root
192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root/'
192.168.23.181:
total 12
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Desktop
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Documents
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Downloads
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Music
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Pictures
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Public
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Templates
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Videos
-rw-r--r--. 1 root root 15 Nov 4 09:40 abc
-rw-------. 1 root root 1274 Oct 13 21:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 1581 Oct 13 21:43 initial-setup-ks.cfg
-rw-r--r--. 1 root root 0 Nov 4 09:53 jlin
2.7.8 file.copy
在远程主机上复制文件或目录
拷贝文件
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 12
-rw-r--r--. 1 root root 15 Nov 4 09:40 abc
[root@JLin ~]# salt '192.168.23.181' file.copy /root/abc root/jial
192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 16
-rw-r--r--. 1 root root 15 Nov 4 09:57 jial
覆盖并拷贝目录,将会覆盖同名文件或目录
[root@JLin ~]# salt '192.168.23.181' file.copy /root/ /tmp/ recurse=True192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /tmp/'192.168.23.181:
total 16
-rw-r--r--. 1 root root 15 Nov 4 10:02 abc
-rw-r--r--. 1 root root 15 Nov 4 10:02 jial
-rw-r--r--. 1 root root 0 Nov 4 10:02 jlin
删除目标目录中同名的文件或目录并拷贝新内容至其中
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root/jjjl'
192.168.23.181:
total 0
[root@JLin ~]# salt '192.168.23.181' file.copy /tmp/ /root/jjjl recurse=True remove_existing=True
192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /tmp/'
192.168.23.181:
total 16
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Desktop
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Documents
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Downloads
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Music
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Pictures
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Public
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Templates
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Videos
-rw-r--r--. 1 root root 15 Nov 4 10:02 abc
-rw-r--r--. 1 root root 1274 Nov 4 10:02 anaconda-ks.cfg
drwxr-xr-x. 2 root root 20 Nov 3 13:54 hsperfdata_root
-rw-r--r--. 1 root root 1581 Nov 4 10:02 initial-setup-ks.cfg
-rw-r--r--. 1 root root 15 Nov 4 10:02 jial
-rw-r--r--. 1 root root 0 Nov 4 10:02 jlin
drwxr-xr-x. 3 root root 42 Nov 4 10:02 jlll
drwx------. 3 root root 17 Nov 4 09:17 systemd-private-f7cfdac27cf747099ef68fab4b97d27a-ModemManager.service-V6iemg
drwx------. 3 root root 17 Nov 4 09:17 systemd-private-f7cfdac27cf747099ef68fab4b97d27a-chronyd.service-Q7xMMi
drwx------. 3 root root 17 Nov 4 09:17 systemd-private-f7cfdac27cf747099ef68fab4b97d27a-colord.service-5kZDHf
drwx------. 3 root root 17 Nov 4 09:17 systemd-private-f7cfdac27cf747099ef68fab4b97d27a-rtkit-daemon.service-UQwn4g
drwx------. 2 root root 6 Nov 1 08:59 vmware-root_1009-4281646761
drwx------. 2 root root 6 Nov 2 20:59 vmware-root_972-2957124820
drwx------. 2 root root 6 Nov 3 11:40 vmware-root_974-2965579094
drwx------. 2 root root 6 Nov 4 09:17 vmware-root_977-4282171025
drwx------. 2 root root 6 Nov 3 11:27 vmware-root_979-4290625299
drwx------. 2 root root 6 Nov 1 09:50 vmware-root_982-2965972296
drwx------. 2 root root 6 Nov 3 11:19 vmware-root_984-2999526209
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root/jjjl'
192.168.23.181:
total 16
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Desktop
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Documents
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Downloads
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Music
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Pictures
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Public
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Templates
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Videos
-rw-r--r--. 1 root root 15 Nov 4 10:02 abc
-rw-r--r--. 1 root root 1274 Nov 4 10:02 anaconda-ks.cfg
drwxr-xr-x. 2 root root 20 Nov 3 13:54 hsperfdata_root
-rw-r--r--. 1 root root 1581 Nov 4 10:02 initial-setup-ks.cfg
-rw-r--r--. 1 root root 15 Nov 4 10:02 jial
-rw-r--r--. 1 root root 0 Nov 4 10:02 jlin
drwxr-xr-x. 3 root root 42 Nov 4 10:02 jlll
drwx------. 3 root root 17 Nov 4 09:17 systemd-private-f7cfdac27cf747099ef68fab4b97d27a-ModemManager.service-V6iemg
drwx------. 3 root root 17 Nov 4 09:17 systemd-private-f7cfdac27cf747099ef68fab4b97d27a-chronyd.service-Q7xMMi
drwx------. 3 root root 17 Nov 4 09:17 systemd-private-f7cfdac27cf747099ef68fab4b97d27a-colord.service-5kZDHf
drwx------. 3 root root 17 Nov 4 09:17 systemd-private-f7cfdac27cf747099ef68fab4b97d27a-rtkit-daemon.service-UQwn4g
drwx------. 2 root root 6 Nov 1 08:59 vmware-root_1009-4281646761
drwx------. 2 root root 6 Nov 2 20:59 vmware-root_972-2957124820
drwx------. 2 root root 6 Nov 3 11:40 vmware-root_974-2965579094
drwx------. 2 root root 6 Nov 4 09:17 vmware-root_977-4282171025
drwx------. 2 root root 6 Nov 3 11:27 vmware-root_979-4290625299
drwx------. 2 root root 6 Nov 1 09:50 vmware-root_982-2965972296
drwx------. 2 root root 6 Nov 3 11:19 vmware-root_984-2999526209
2.7.9 file.ditectory_exists
判断指定目录是否存在,存在则返回 True ,否则返回 False
// 查看tmp目录下有哪些目录文件
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root/tmp'192.168.23.181:
total 16
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Desktop
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Documents
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Downloads
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Music
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Pictures
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Public
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Templates
drwxr-xr-x. 2 root root 6 Nov 4 10:02 Videos
-rw-r--r--. 1 root root 15 Nov 4 10:02 abc
-rw-r--r--. 1 root root 1274 Nov 4 10:02 anaconda-ks.cfg
drwxr-xr-x. 2 root root 20 Nov 3 13:54 hsperfdata_root
-rw-r--r--. 1 root root 1581 Nov 4 10:02 initial-setup-ks.cfg
-rw-r--r--. 1 root root 15 Nov 4 10:02 jial
-rw-r--r--. 1 root root 0 Nov 4 10:02 jlin
drwxr-xr-x. 3 root root 42 Nov 4 10:02 jlll
drwx------. 3 root root 17 Nov 4 09:17 systemd-private-f7cfdac27cf747099ef68fab4b97d27a-ModemManager.service-V6iemg
drwx------. 3 root root 17 Nov 4 09:17 systemd-private-f7cfdac27cf747099ef68fab4b97d27a-chronyd.service-Q7xMMi
drwx------. 3 root root 17 Nov 4 09:17 systemd-private-f7cfdac27cf747099ef68fab4b97d27a-colord.service-5kZDHf
drwx------. 3 root root 17 Nov 4 09:17 systemd-private-f7cfdac27cf747099ef68fab4b97d27a-rtkit-daemon.service-UQwn4g
drwx------. 2 root root 6 Nov 1 08:59 vmware-root_1009-4281646761
drwx------. 2 root root 6 Nov 2 20:59 vmware-root_972-2957124820
drwx------. 2 root root 6 Nov 3 11:40 vmware-root_974-2965579094
drwx------. 2 root root 6 Nov 4 09:17 vmware-root_977-4282171025
drwx------. 2 root root 6 Nov 3 11:27 vmware-root_979-4290625299
drwx------. 2 root root 6 Nov 1 09:50 vmware-root_982-2965972296
drwx------. 2 root root 6 Nov 3 11:19 vmware-root_984-2999526209
[root@JLin ~]# salt '192.168.23.181' file.directory_exists /tmp/vmware-root_984-2999526209
192.168.23.181:
True
2.7.10 file.diskusage
递归计算指定路径的磁盘使用情况并以字节为单位返回
[root@JLin ~]# salt '*' cmd.run 'du -sb /opt'
JLin:
6 /opt
192.168.23.182:
6 /opt
192.168.23.183:
6 /opt
192.168.23.181:
6 /opt
[root@JLin ~]# salt '*' file.diskusage '/opt'
192.168.23.183:
0
192.168.23.181:
0
192.168.23.182:
0
JLin:
0
2.7.11 file.file_exists
判断指定文件是否存在
// 查看文件属性
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 24
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Desktop
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Documents
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Downloads
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Music
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Pictures
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Public
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Templates
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Videos
-rw-r--r--. 1 root root 15 Nov 4 09:40 abc
-rw-------. 1 root root 1274 Oct 13 21:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 1581 Oct 13 21:43 initial-setup-ks.cfg
-rw-r--r--. 1 root root 15 Nov 4 09:57 jial
dr-xr-x---. 33 root root 4096 Nov 4 10:02 jjjl
-rw-r--r--. 1 jlin jlin 0 Nov 4 09:53 jlin
dr-xr-x---. 33 root root 4096 Nov 4 10:02 jlll
// jlin文件存在,返回True
[root@JLin ~]# salt '192.168.23.181' file.file_exists /root/jlin
192.168.23.181:
True
// jjjj文件不存在,返回Flase
[root@JLin ~]# salt '192.168.23.181' file.file_exists /root/jjjj
192.168.23.181:
False
// jlll是目录,不是文件,即使存在,也返回Flase
[root@JLin ~]# salt '192.168.23.181' file.file_exists /root/jlll
192.168.23.181:
False
2.7.12 file.find
类似 find 命令并返回符合指定条件的路径列表
The options include match criteria:
name = path-glob # case sensitive
iname = path-glob # case insensitive
regex = path-regex # case sensitive
iregex = path-regex # case insensitive
type = file-types # match any listed type
user = users # match any listed user
group = groups # match any listed group
size = [+-]number[size-unit] # default unit = byte
mtime = interval # modified since date
grep = regex # search file contents
and/or actions:
delete [= file-types] # default type = 'f'
exec = command [arg ...] # where {} is replaced by pathname
print [= print-opts]
The default action is print=path
path-glob:
* = match zero or more chars
? = match any char
[abc] = match a, b, or c
[!abc] or [^abc] = match anything except a, b, and c
[x-y] = match chars x through y
[!x-y] or [^x-y] = match anything except chars x through y
{a,b,c} = match a or b or c
path-regex: a Python Regex (regular expression) pattern to match pathnames
file-types: a string of one or more of the following:
a: all file types
b: block device
c: character device
d: directory
p: FIFO (named pipe)
f: plain file
l: symlink
s: socket
users: a space and/or comma separated list of user names and/or uids
groups: a space and/or comma separated list of group names and/or gids
size-unit:
b: bytes
k: kilobytes
m: megabytes
g: gigabytes
t: terabytes
interval:
[<num>w] [<num>d] [<num>h] [<num>m] [<num>s]
where:
w: week
d: day
h: hour
m: minute
s: second
print-opts: a comma and/or space separated list of one or more of the following:
group: group name
md5: MD5 digest of file contents
mode: file permissions (as integer)
mtime: last modification time (as time_t)
name: file basename
path: file absolute path
size: file size in bytes
type: file type
user: user name
示例:
salt '*' file.find / type=f name=\*.bak size=+10m
salt '*' file.find /var mtime=+30d size=+10m print=path,size,mtime
salt '*' file.find /var/log name=\*.[0-9] mtime=+30d size=+10m delete
2.7.13 file.get_gid
获取指定文件的gid
[root@JLin ~]# salt '*' cmd.run 'ls -l /root/anaconda-ks.cfg'
192.168.23.181:
-rw-------. 1 root root 1274 Oct 13 21:42 /root/anaconda-ks.cfg
192.168.23.183:
-rw-------. 1 root root 1274 Oct 13 21:42 /root/anaconda-ks.cfg
192.168.23.182:
-rw-------. 1 root root 1274 Oct 13 21:42 /root/anaconda-ks.cfg
JLin:
-rw-------. 1 root root 1274 Oct 13 21:42 /root/anaconda-ks.cfg
[root@JLin ~]# salt '*' file.get_gid '/root/anaconda-ks.cfg'
192.168.23.183:
0
JLin:
0
192.168.23.182:
0
192.168.23.181:
0
2.7.14 file.get_group
获取指定文件的组名
// 创建文件
[root@JLin ~]# salt '192.168.23.182' cmd.run 'touch jlin'
192.168.23.182:
// 查看属性
[root@JLin ~]# salt '192.168.23.182' cmd.run 'ls -l /root/jlin'
192.168.23.182:
-rw-r--r--. 1 root root 0 Nov 4 10:19 /root/jlin
// 查看文件组名
[root@JLin ~]# salt '192.168.23.182' file.get_group root/jlin
192.168.23.182:
root
2.7.15 file.get_hash
获取指定文件的hash值,该值通过 sha256 算法得来
[root@JLin ~]# salt '*' cmd.run 'sha256sum /root/anaconda-ks.cfg'
192.168.23.182:
19f85e4f8a642d7d212506afa5598370a62e0a83776442f07355e1c2e922d4b6 /root/anaconda-ks.cfg
192.168.23.181:
19f85e4f8a642d7d212506afa5598370a62e0a83776442f07355e1c2e922d4b6 /root/anaconda-ks.cfg
192.168.23.183:
19f85e4f8a642d7d212506afa5598370a62e0a83776442f07355e1c2e922d4b6 /root/anaconda-ks.cfg
JLin:
19f85e4f8a642d7d212506afa5598370a62e0a83776442f07355e1c2e922d4b6 /root/anaconda-ks.cfg
[root@JLin ~]# salt '*' file.get_hash /root/anaconda-ks.cfg
JLin:
19f85e4f8a642d7d212506afa5598370a62e0a83776442f07355e1c2e922d4b6
192.168.23.183:
19f85e4f8a642d7d212506afa5598370a62e0a83776442f07355e1c2e922d4b6
192.168.23.181:
19f85e4f8a642d7d212506afa5598370a62e0a83776442f07355e1c2e922d4b6
192.168.23.182:
19f85e4f8a642d7d212506afa5598370a62e0a83776442f07355e1c2e922d4b6
2.7.16 file.get_mode
获取指定文件的权限,以数字方式显示
[root@JLin ~]# salt '*' cmd.run 'ls -l /root/anaconda-ks.cfg'
JLin:
-rw-------. 1 root root 1274 Oct 13 21:42 /root/anaconda-ks.cfg
192.168.23.181:
-rw-------. 1 root root 1274 Oct 13 21:42 /root/anaconda-ks.cfg
192.168.23.182:
-rw-------. 1 root root 1274 Oct 13 21:42 /root/anaconda-ks.cfg
192.168.23.183:
-rw-------. 1 root root 1274 Oct 13 21:42 /root/anaconda-ks.cfg
[root@JLin ~]# salt '*' file.get_mode /root/anaconda-ks.cfg
192.168.23.183:
0600
192.168.23.181:
0600
JLin:
0600
192.168.23.182:
0600
2.7.17 file.get_selinux_context
获取指定文件的 SELINUX 上下文信息
[root@JLin ~]# salt '*' cmd.run 'ls -Z /root/anaconda-ks.cfg'
192.168.23.183:
system_u:object_r:admin_home_t:s0 /root/anaconda-ks.cfg
192.168.23.182:
system_u:object_r:admin_home_t:s0 /root/anaconda-ks.cfg
JLin:
system_u:object_r:admin_home_t:s0 /root/anaconda-ks.cfg
192.168.23.181:
system_u:object_r:admin_home_t:s0 /root/anaconda-ks.cfg
[root@JLin ~]# salt '*' file.get_selinux_context /root/anaconda-ks.cfg
JLin:
system_u:object_r:admin_home_t:s0
192.168.23.181:
system_u:object_r:admin_home_t:s0
192.168.23.183:
system_u:object_r:admin_home_t:s0
192.168.23.182:
system_u:object_r:admin_home_t:s0
2.7.18 file.get_sum
按照指定的算法计算指定文件的特征码并显示,默认使用的sha256算法。
该函数可使用的算法参数有:
md5
sha1
sha224
sha256 (default)
sha384
sha512
// 创建jlin.red文件
[root@JLin ~]# salt '*' cmd.run 'touch jlin.red'
192.168.23.183:
192.168.23.181:
192.168.23.182:
JLin:
// 查看sha256算法的值
[root@JLin ~]# salt '*' cmd.run 'sha256sum /root/jlin.red'
192.168.23.181:
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /root/jlin.red
192.168.23.182:
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /root/jlin.red
JLin:
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /root/jlin.red
192.168.23.183:
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /root/jlin.red
[root@JLin ~]# salt '*' file.get_sum /root/jlin.red
192.168.23.183:
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
192.168.23.182:
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
192.168.23.181:
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
JLin:
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
// 查看md5算法的值
[root@JLin ~]# salt '*' cmd.run 'md5sum /root/jlin.red'
192.168.23.182:
d41d8cd98f00b204e9800998ecf8427e /root/jlin.red
192.168.23.181:
d41d8cd98f00b204e9800998ecf8427e /root/jlin.red
192.168.23.183:
d41d8cd98f00b204e9800998ecf8427e /root/jlin.red
JLin:
d41d8cd98f00b204e9800998ecf8427e /root/jlin.red
[root@JLin ~]# salt '*' file.get_sum /root/jlin.red md5
192.168.23.181:
d41d8cd98f00b204e9800998ecf8427e
192.168.23.182:
d41d8cd98f00b204e9800998ecf8427e
JLin:
d41d8cd98f00b204e9800998ecf8427e
192.168.23.183:
d41d8cd98f00b204e9800998ecf8427e
2.7.19 file.get_uid与file.get_user
获取指定文件的 uid 或 用户名
// 查看文件属性
[root@JLin ~]# salt '*' cmd.run 'ls -l /root/jlin.red'
192.168.23.182:
-rw-r--r--. 1 root root 0 Nov 4 10:23 /root/jlin.red
JLin:
-rw-r--r--. 1 root root 0 Nov 4 10:23 /root/jlin.red
192.168.23.181:
-rw-r--r--. 1 root root 0 Nov 4 10:23 /root/jlin.red
192.168.23.183:
-rw-r--r--. 1 root root 0 Nov 4 10:23 /root/jlin.red
// 查看文件UID
[root@JLin ~]# salt '*' file.get_uid /root/jlin.red
JLin:
0
192.168.23.183:
0
192.168.23.182:
0
192.168.23.181:
0
// 查看文件用户名
[root@JLin ~]# salt '*' file.get_user /root/jlin.red
192.168.23.183:
root
JLin:
root
192.168.23.182:
root
192.168.23.181:
root
2.7.20 file.gid_to_group
将指定的 gid 转换为组名并显示
// 创建用户tom
[root@JLin ~]# salt '192.168.23.183' user.add jial
192.168.23.183:
True
// 192.168.23.183客户端查看
[root@JJJL ~]# id jial
uid=1001(jial) gid=1001(jial) groups=1001(jial)
[root@JJJL ~]# cat /etc/group | tail -2
nginx:x:974:
jial:x:1001:
[root@JLin ~]# salt '192.168.23.183' file.gid_to_group 1001
192.168.23.183:
jial
[root@JLin ~]# salt '192.168.23.183' file.gid_to_group 974
192.168.23.183:
nginx
[root@JLin ~]# salt '192.168.23.183' file.gid_to_group 0
192.168.23.183:
root
2.7.21 file.group_to_gid
将指定的组名转换为 gid 并显示
[root@JLin ~]# salt '192.168.23.183' file.gid_to_group jial
192.168.23.183:
jial
[root@JLin ~]# salt '192.168.23.183' file.gid_to_group nginx
192.168.23.183:
nginx
[root@JLin ~]# salt '192.168.23.183' file.gid_to_group root
192.168.23.183:
root
2.7.22 file.grep
在指定文件中检索指定内容
该函数支持通配符,若在指定的路径中用通配符则必须用双引号引起来
salt '*' file.grep /etc/passwd nobody
salt '*' file.grep /etc/sysconfig/network-scripts/ifcfg-eth0 ipaddr -- -i
salt '*' file.grep /etc/sysconfig/network-scripts/ifcfg-eth0 ipaddr -- -i -B2
salt '*' file.grep "/etc/sysconfig/network-scripts/*" ipaddr -- -i -l
2.7.23 file.is_blkdev
判断指定的文件是否是块设备文件
[root@JLin ~]# salt '*' cmd.run 'ls -l /dev/sr0'
192.168.23.181:
brw-rw----+ 1 root cdrom 11, 0 Nov 4 09:17 /dev/sr0
192.168.23.183:
brw-rw----+ 1 root cdrom 11, 0 Nov 4 09:17 /dev/sr0
JLin:
brw-rw----+ 1 root cdrom 11, 0 Nov 4 09:16 /dev/sr0
192.168.23.182:
brw-rw----+ 1 root cdrom 11, 0 Nov 4 09:17 /dev/sr0
[root@JLin ~]# salt '*' file.is_blkdev /dev/sr0
JLin:
True
192.168.23.181:
True
192.168.23.183:
True
192.168.23.182:
True
2.7.24 file.lsattr
检查并显示出指定文件的属性信息
[root@JLin ~]# salt '192.168.23.181' cmd.run 'lsattr /root/jlin'
192.168.23.181:
-------------------- /root/jlin
[root@JLin ~]# salt '192.168.23.181' cmd.run 'chattr +i /root/jlin'
192.168.23.181:
[root@JLin ~]# salt '192.168.23.181' cmd.run 'lsattr /root/jlin'
192.168.23.181:
----i--------------- /root/jlin
[root@JLin ~]# salt '192.168.23.181' file.lsattr '/root/jlin'
192.168.23.181:
----------
/root/jlin:
- i
2.7.25 file.mkdir
创建目录并设置属主、属组及权限
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 24
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Desktop
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Documents
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Downloads
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Music
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Pictures
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Public
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Templates
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Videos
-rw-r--r--. 1 root root 15 Nov 4 09:40 abc
-rw-------. 1 root root 1274 Oct 13 21:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 1581 Oct 13 21:43 initial-setup-ks.cfg
-rw-r--r--. 1 root root 15 Nov 4 09:57 jial
dr-xr-x---. 33 root root 4096 Nov 4 10:02 jjjl
-rw-r--r--. 1 jlin jlin 0 Nov 4 09:53 jlin
-rw-r--r--. 1 root root 0 Nov 4 10:23 jlin.red
dr-xr-x---. 33 root root 4096 Nov 4 10:02 jlll
// 创建目录vb
[root@JLin ~]# salt '192.168.23.181' file.mkdir /root/jial.red
192.168.23.181:
True
// 查看创建情况
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 24
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Desktop
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Documents
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Downloads
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Music
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Pictures
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Public
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Templates
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Videos
-rw-r--r--. 1 root root 15 Nov 4 09:40 abc
-rw-------. 1 root root 1274 Oct 13 21:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 1581 Oct 13 21:43 initial-setup-ks.cfg
-rw-r--r--. 1 root root 15 Nov 4 09:57 jial
drwxr-xr-x. 2 root root 6 Nov 4 10:35 jial.red
dr-xr-x---. 33 root root 4096 Nov 4 10:02 jjjl
-rw-r--r--. 1 jlin jlin 0 Nov 4 09:53 jlin
-rw-r--r--. 1 root root 0 Nov 4 10:23 jlin.red
dr-xr-x---. 33 root root 4096 Nov 4 10:02 jlll
// 创建tom用户
[root@JLin ~]# salt '192.168.23.181' user.add tom
192.168.23.181:
True
// 创建目录并设置属主、属组及权限
[root@JLin ~]# salt '192.168.23.181' user.add jial
192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' file.mkdir /root/jial.red jial jial 400
192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'192.168.23.181:
total 24
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Desktop
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Documents
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Downloads
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Music
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Pictures
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Public
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Templates
drwxr-xr-x. 2 root root 6 Oct 13 21:44 Videos
-rw-r--r--. 1 root root 15 Nov 4 09:40 abc
-rw-------. 1 root root 1274 Oct 13 21:42 anaconda-ks.cfg
-rw-r--r--. 1 root root 1581 Oct 13 21:43 initial-setup-ks.cfg
-rw-r--r--. 1 root root 15 Nov 4 09:57 jial
drwxr-xr-x. 2 root root 6 Nov 4 10:35 jial.red
dr-xr-x---. 33 root root 4096 Nov 4 10:02 jjjl
-rw-r--r--. 1 jlin jlin 0 Nov 4 09:53 jlin
-rw-r--r--. 1 root root 0 Nov 4 10:23 jlin.red
dr-xr-x---. 33 root root 4096 Nov 4 10:02 jlll
2.7.26 file.move
移动或重命名
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 12
-rw-r--r-- 1 root root 23 Nov 4 20:49 abb
-rw-r--r-- 1 root root 23 Nov 4 20:58 abc
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 0 Nov 4 21:44 JLin
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 4 21:54 JiaL
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL
// 先删除权限
[root@JLin ~]# salt '192.168.23.181' cmd.run 'lsattr /root/abc'
192.168.23.181:
----ia-------------- /root/abc
[root@JLin ~]# salt '192.168.23.181' cmd.run 'lsattr /root/abb'
192.168.23.181:
-------------------- /root/abb
[root@JLin ~]# salt '192.168.23.181' cmd.run 'chattr -ai /root/abc'
192.168.23.181:
[root@JLin ~]# salt '192.168.23.181' cmd.run 'lsattr /root/abc'192.168.23.181:
-------------------- /root/abc
// 重命名
[root@JLin ~]# salt '192.168.23.181' file.move /root/abb /root/abc192.168.23.181:
----------
comment:
'/root/abb' moved to '/root/abc'
result:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 8
-rw-r--r-- 1 root root 23 Nov 4 20:49 abc
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 0 Nov 4 21:44 JLin
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 4 21:54 JiaL
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL
// 移动
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /opt'
192.168.23.181:
total 0
[root@JLin ~]# salt '192.168.23.181' file.move /root/abc /opt
192.168.23.181:
----------
comment:
'/root/abc' moved to '/opt'
result:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /opt'
192.168.23.181:
total 4
-rw-r--r-- 1 root root 23 Nov 4 20:49 abc
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 4
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 0 Nov 4 21:44 JLin
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 4 21:54 JiaL
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL
2.7.27 file.prepend
把文本插入指定文件的开头
[root@JLin ~]# salt '192.168.23.181' cmd.run 'cat /root/JLin'
192.168.23.181:
hello fss
hello sdsd
hello JLin
[root@JLin ~]# salt '192.168.23.181' file.prepend /root/JLin "edg nb" "JLJL" "kele"
192.168.23.181:
Prepended 3 lines to "/root/JLin"
[root@JLin ~]# salt '192.168.23.181' cmd.run 'cat /root/JLin'192.168.23.181:
edg nb
JLJL
kele
hello fss
hello sdsd
hello JLin
2.7.28 file.sed
修改文本文件的内容
[root@JLin ~]# salt '192.168.23.181' cmd.run 'cat /root/JLin'
192.168.23.181:
edg nb
JLJL
kele
hello fss
hello sdsd
hello JLin
[root@JLin ~]# salt '192.168.23.181' file.sed /root/JLin "hello" "hi"
192.168.23.181:
----------
pid:
67185
retcode:
0
stderr:
stdout:
[root@JLin ~]# salt '192.168.23.181' cmd.run 'cat /root/JLin'
192.168.23.181:
edg nb
JLJL
kele
hi fss
hi sdsd
hi JLin
[root@JLin ~]# salt '192.168.23.181' cmd.run 'cat /root/JLin'
192.168.23.181:
edg nb
JLJL
kele
hi hi fss
hi hi sdsd
hi hi JLin
[root@JLin ~]# salt '192.168.23.181' file.sed /root/JLin 'hi' 'with' flags=2
192.168.23.181:
----------
pid:
70731
retcode:
0
stderr:
stdout:
[root@JLin ~]# salt '192.168.23.181' cmd.run 'cat /root/JLin'
192.168.23.181:
edg nb
JLJL
kele
jlin.red
hello world
test
2.7.29 file.read
读取文件内容
[root@JLin ~]# salt '192.168.23.181' cmd.run 'cat /root/JLin'
192.168.23.181:
edg nb
JLJL
kele
jlin.red
hello world
test
[root@JLin ~]# salt '192.168.23.181' file.read /root/JLin
192.168.23.181:
edg nb
JLJL
kele
jlin.red
hello world
test
2.7.30 file.readdir
列出指定目录下的所有文件或目录,包括隐藏文件
[root@JLin ~]# salt '192.168.23.181' file.readdir /root
192.168.23.181:
- JLin
2.7.31 file.remove
删除指定的文件或目录,若给出的是目录,将递归删除
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 12
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 52 Nov 5 20:25 JLin
-rw-r--r-- 1 root root 46 Nov 5 20:24 JLin.bak
-rw-r--r-- 1 root root 0 Nov 5 08:49 JLin.test
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 4 21:54 JiaL
-rw-r--r-- 1 root root 0 Nov 5 08:49 JiaL.test
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL
// 删除文件
[root@JLin ~]# salt '192.168.23.181' file.remove /root/JiaL
192.168.23.181:
True
// 删除目录
[root@JLin ~]# salt '192.168.23.181' file.remove /root/vk
192.168.23.181:
True
// 查看删除情况
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 12
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 52 Nov 5 20:25 JLin
-rw-r--r-- 1 root root 46 Nov 5 20:24 JLin.bak
-rw-r--r-- 1 root root 0 Nov 5 08:49 JLin.test
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 5 08:49 JiaL.test
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL
2.7.32 file.rename
重命名文件或目录
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 12
-rw-r--r-- 1 root root 0 Nov 5 20:24 123
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 52 Nov 5 20:25 JLin
-rw-r--r-- 1 root root 46 Nov 5 20:24 JLin.bak
-rw-r--r-- 1 root root 0 Nov 5 08:49 JLin.test
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 5 08:49 JiaL.test
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL
[root@JLin ~]# salt '192.168.23.181' file.rename /root/JLin.bak /root/a
192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 12
-rw-r--r-- 1 root root 0 Nov 5 20:24 123
-rw-r--r-- 1 root root 46 Nov 5 20:24 a
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 52 Nov 5 20:25 JLin
-rw-r--r-- 1 root root 0 Nov 5 08:49 JLin.test
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 5 08:49 JiaL.test
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL
2.7.33 file.set_mode
给指定文件设置权限
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 12
-rw-r--r-- 1 root root 0 Nov 5 20:24 123
-rw-r--r-- 1 root root 46 Nov 5 20:24 a
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 52 Nov 5 20:25 JLin
-rw-r--r-- 1 root root 0 Nov 5 08:49 JLin.test
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 5 08:49 JiaL.test
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL
[root@JLin ~]# salt '192.168.23.181' file.set_mode /root/a 0400
192.168.23.181:
0400
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 12
-rw-r--r-- 1 root root 0 Nov 5 20:24 123
-r-------- 1 root root 46 Nov 5 20:24 a
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 52 Nov 5 20:25 JLin
-rw-r--r-- 1 root root 0 Nov 5 08:49 JLin.test
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 5 08:49 JiaL.test
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL
2.7.34 file.symlink
给指定的文件创建软链接
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 12
-rw-r--r-- 1 root root 0 Nov 5 20:24 123
-r-------- 1 root root 46 Nov 5 20:24 a
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 52 Nov 5 20:25 JLin
-rw-r--r-- 1 root root 0 Nov 5 08:49 JLin.test
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 5 08:49 JiaL.test
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL
[root@JLin ~]# salt '192.168.23.181' file.symlink /root/a /opt/a
192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root ; ls -l /opt/a'
192.168.23.181:
total 12
-rw-r--r-- 1 root root 0 Nov 5 20:24 123
-r-------- 1 root root 46 Nov 5 20:24 a
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 52 Nov 5 20:25 JLin
-rw-r--r-- 1 root root 0 Nov 5 08:49 JLin.test
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 5 08:49 JiaL.test
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL
lrwxrwxrwx 1 root root 7 Nov 5 20:41 /opt/a -> /root/a
2.7.35 file.touch
创建空文件或更新时间戳
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /opt'
192.168.23.181:
total 4
lrwxrwxrwx 1 root root 7 Nov 5 20:41 a -> /root/a
-rw-r--r-- 1 root root 23 Nov 4 20:49 abc
// 创建空文件b、c
[root@JLin ~]# salt '192.168.23.181' file.touch /opt/b
192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' file.touch '/opt/c'
192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /opt/'
192.168.23.181:
total 4
lrwxrwxrwx 1 root root 7 Nov 5 20:41 a -> /root/a
-rw-r--r-- 1 root root 23 Nov 4 20:49 abc
-rw-r--r-- 1 root root 0 Nov 5 20:43 b
-rw-r--r-- 1 root root 0 Nov 5 20:43 c
// 文件已存在,重复操作,更新时间戳
[root@JLin ~]# salt '192.168.23.181' file.touch '/opt/c'
192.168.23.181:
True
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /opt/'
192.168.23.181:
total 4
lrwxrwxrwx 1 root root 7 Nov 5 20:41 a -> /root/a
-rw-r--r-- 1 root root 23 Nov 4 20:49 abc
-rw-r--r-- 1 root root 0 Nov 5 20:43 b
-rw-r--r-- 1 root root 0 Nov 5 20:44 c
2.7.36 file.uid_to_user
将指定的 uid 转换成用户名显示出来
[root@JLin ~]# salt '*' file.uid_to_user 0
192.168.23.181:
root
192.168.23.182:
root
JLin:
root
192.168.23.183:
root
[root@JLin ~]# salt 'JLin' file.uid_to_user 2001
JLin:
jl
2.7.37 file.user_to_uid
将指定的用户转换成 uid 并显示出来
[root@JLin ~]# salt '*' file.user_to_uid root
192.168.23.181:
0
192.168.23.182:
0
JLin:
0
192.168.23.183:
0
[root@JLin ~]# salt 'JLin' file.user_to_uid xc
JLin:
2001
// 没有该用户,不显示内容
[root@JLin ~]# salt 'JLin' file.user_to_uid JLin
JLin:
2.7.38 file.write
往一个指定的文件里覆盖写入指定内容
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 12
-rw-r--r-- 1 root root 0 Nov 5 20:24 123
-r-------- 1 root root 46 Nov 5 20:24 a
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 13 Nov 5 20:49 JLin
-rw-r--r-- 1 root root 0 Nov 5 08:49 JLin.test
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Nov 5 08:49 JiaL.test
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL
[root@JLin ~]# salt '192.168.23.181' cmd.run 'cat /root/JLin'
192.168.23.181:
edg nb
JLJL
kele
jlin.red
hello world
test
// JLin文件已存在,直接覆盖文件内容
[root@JLin ~]# salt '192.168.23.181' file.write /root/JLin 'This is test'
192.168.23.181:
Wrote 1 lines to "/root/JLin"
[root@JLin ~]# salt '192.168.23.181' cmd.run 'cat /root/JLin'192.168.23.181:
This is test
// b文件不存在,会自动先创建文件,在进行覆盖内容
[root@JLin ~]# salt '192.168.23.181' file.write /root/b 'This is test' 'hhah'
192.168.23.181:
Wrote 2 lines to "/root/b"
[root@JLin ~]# salt '192.168.23.181' cmd.run 'cat /root/b'
192.168.23.181:
This is test
hhah
[root@JLin ~]# salt '192.168.23.181' cmd.run 'ls -l /root'
192.168.23.181:
total 16
-rw-r--r-- 1 root root 0 Nov 5 20:24 123
-r-------- 1 root root 46 Nov 5 20:24 a
drwxrwxrwt. 10 root root 184 Nov 4 21:52 abd
-rw-r--r-- 1 root root 13 Nov 5 20:49 JLin
-rw-r--r-- 1 root root 0 Nov 5 08:49 JLin.test
-rw-------. 1 root root 1092 Jul 26 20:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 18 Nov 5 20:40 b
-rw-r--r-- 1 root root 0 Nov 5 08:49 JiaL.test
dr-------- 2 tom tom 6 Nov 4 18:20 JLJL