saltstack模块之file相关模块

简介:

1、file.access

file.access:测试salt进程是否有对指定文件的对应访问权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@salt-master ~] # salt '*' file.access /etc/passwd f
salt-minion02.contoso.com:
     True
salt-minion01.contoso.com:
     True
[root@salt-master ~] # salt '*' file.access /etc/passwd r
salt-minion02.contoso.com:
     True
salt-minion01.contoso.com:
     True
[root@salt-master ~] # salt '*' file.access /etc/passwd w
salt-minion01.contoso.com:
     True
salt-minion02.contoso.com:
     True
[root@salt-master ~] # salt '*' file.access /etc/passwd x
salt-minion02.contoso.com:
     False
salt-minion01.contoso.com:
     False

2、file.touch

file.touch:如果文件不存在创建文件,相当于touch file,如果文件存在就更新访问时间或者修改时间。

1
2
3
4
5
[root@salt-master ~] # salt '*' file.touch /tmp/salt-test
salt-minion02.contoso.com:
     True
salt-minion01.contoso.com:
     True

3、file.append

file.append:追加文字到文件的末尾。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@salt-master ~] # salt '*' file.append /tmp/sal-test "Hello,World."
salt-minion01.contoso.com:
     Wrote 1 lines to  "/tmp/sal-test"
salt-minion02.contoso.com:
     Wrote 1 lines to  "/tmp/sal-test"
[root@salt-master ~] # salt '*' file.append /tmp/sal-test args='Hello=Hi'
salt-minion01.contoso.com:
     Wrote 1 lines to  "/tmp/sal-test"
salt-minion02.contoso.com:
     Wrote 1 lines to  "/tmp/sal-test"
[root@salt-master ~] # salt '*' file.append /tmp/sal-test args="['true=1','false=0']"
salt-minion01.contoso.com:
     Wrote 2 lines to  "/tmp/sal-test"
salt-minion02.contoso.com:
     Wrote 2 lines to  "/tmp/sal-test"

4、file.basename

file.basename:返回所给路径的最后一个部分。

1
2
3
4
5
[root@salt-master ~] # salt '*' file.basename /tmp/sal-test
salt-minion02.contoso.com:
     sal- test
salt-minion01.contoso.com:
     sal- test

5、file.chgrp

file.chgrp:修改文件的属组。

1
2
3
4
5
6
7
8
9
10
[root@salt-master ~] # salt '*' file.chgrp /tmp/testfile nginx
salt-minion01.contoso.com:
     None
salt-minion02.contoso.com:
     None
[root@salt-master ~] # salt '*' cmd.run "ls -l /tmp/testfile"
salt-minion01.contoso.com:
     -rw-r--r-- 1 root nginx 0 Jun  4 01:27  /tmp/testfile
salt-minion02.contoso.com:
     -rw-r--r-- 1 root nginx 0 Jun  4 01:27  /tmp/testfile

6、file.chown

file.chown:修改文件的属主和属组。

1
2
3
4
5
6
7
8
9
10
[root@salt-master ~] # salt '*' file.chown /tmp/testfile nginx nginx
salt-minion01.contoso.com:
     None
salt-minion02.contoso.com:
     None
[root@salt-master ~] # salt '*' cmd.run "ls -l /tmp/testfile"
salt-minion02.contoso.com:
     -rw-r--r-- 1 nginx nginx 0 Jun  4 01:27  /tmp/testfile
salt-minion01.contoso.com:
     -rw-r--r-- 1 nginx nginx 0 Jun  4 01:27  /tmp/testfile

7、file.copy

file.copy:从源目录拷贝文件到目标目录。如果要拷贝目录,需要添加recurse标签,默认情况下会覆盖目标目录中相同路径的文件,并保留其他文件。remove_existing选项会提前移除目标目录中的所有文件,然后再从源路径拷贝文件到目标路径。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[root@salt-master ~] # salt '*' file.copy /etc/hosts /tmp/hosts
salt-minion01.contoso.com:
     True
salt-minion02.contoso.com:
     True
[root@salt-master ~] # salt '*' cmd.run 'ls -l /tmp/hosts'
salt-minion01.contoso.com:
     -rw-r--r-- 1 root root 327 Jun  4 01:41  /tmp/hosts
salt-minion02.contoso.com:
     -rw-r--r-- 1 root root 330 Jun  4 01:41  /tmp/hosts
[root@salt-master ~] # salt '*' file.copy /var/spool/cron/ /tmp/ recurse=True
salt-minion01.contoso.com:
     True
salt-minion02.contoso.com:
     True
[root@salt-master ~] # salt '*' cmd.run 'ls -l /tmp/root'
salt-minion02.contoso.com:
     -rw-r--r-- 1 root root 89 Jun  4 01:46  /tmp/root
salt-minion01.contoso.com:
     -rw-r--r-- 1 root root 73 Jun  4 01:46  /tmp/root
[root@salt-master ~] # salt '*' file.copy /var/spool/cron/ /tmp/ recurse=True remove_existing=True
salt-minion02.contoso.com:
     True
salt-minion01.contoso.com:
     True
[root@salt-master ~] # salt '*' cmd.run 'ls -l /tmp'
salt-minion01.contoso.com:
     total 4
     -rw-r--r-- 1 root root 73 Mar 11 21:35 root
salt-minion02.contoso.com:
     total 4
     -rw------- 1 root root 89 May 25 13:32 root

8、file.dirname

file.dirname:返回指定路径的目录部分。

1
2
3
4
5
[root@salt-master ~] # salt '*' file.dirname /etc/passwd
salt-minion01.contoso.com:
     /etc
salt-minion02.contoso.com:
     /etc

9、file.diskusage

file.diskusage:递归计算指定目录所占的磁盘空间并以字节为单位返回计算出的值。

1
2
3
4
5
[root@salt-master ~] # salt '*' file.diskusage /root/install.log
salt-minion01.contoso.com:
     30131
salt-minion02.contoso.com:
     30131

10、file.file_exists

file.file_exists:测试目标路径是否是一个有效文件,返回值为True或False。

1
2
3
4
5
[root@salt-master ~] # salt '*' file.file_exists /etc/passwd
salt-minion02.contoso.com:
     True
salt-minion01.contoso.com:
     True

11、file.find

file.find:返回指定搜索条件返回的文件路径,相当于Linux中的find命令,参数也兼容find命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@salt-master ~] # salt 'salt-minion01.contoso.com' file.find /var name=minion
salt-minion01.contoso.com:
     /var/cache/salt/minion
     /var/log/salt/minion
     /var/run/salt/minion
[root@salt-master ~] # salt 'salt-minion01.contoso.com' file.find /var name=minion size=-1m 
salt-minion01.contoso.com:
     /var/cache/salt/minion
     /var/log/salt/minion
     /var/run/salt/minion
[root@salt-master ~] # salt 'salt-minion01.contoso.com' file.find /var name=minion size=-1m print=path,size,mtime
salt-minion01.contoso.com:
     |_
       /var/cache/salt/minion
       - 4096
       - 1495711378
     |_
       /var/log/salt/minion
       - 1123
       - 1496551874
     |_
       /var/run/salt/minion
       - 4096
       - 1496544267

12、file.get_gid

file.get_gid:返回所给文件的属组的id。

1
2
3
4
5
[root@salt-master ~] # salt '*' file.get_gid /etc/passwd
salt-minion02.contoso.com:
     0
salt-minion01.contoso.com:
     0

13、file.get_group

file.get_group:返回所给文件的属组。

1
2
3
4
5
[root@salt-master ~] # salt '*' file.get_group /etc/passwd
salt-minion02.contoso.com:
     root
salt-minion01.contoso.com:
     root

14、file.get_uid

file.get_uid:返回所给文件的属主的id。

1
2
3
4
5
[root@salt-master ~] # salt '*' file.get_uid /etc/passwd
salt-minion01.contoso.com:
     0
salt-minion02.contoso.com:
     0

15、file.get_user

file.get_user:返回所给文件的属主。

1
2
3
4
5
[root@salt-master ~] # salt '*' file.get_user /etc/passwd
salt-minion02.contoso.com:
     root
salt-minion01.contoso.com:
     root

16、file.grep

file.grep:从指定文件中查找字符串,相当于Linux中的grep命令,参数也兼容grep命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@salt-master ~] # salt 'salt-minion01.contoso.com' file.grep /etc/passwd nobody
salt-minion01.contoso.com:
     ----------
     pid:
         1858
     retcode:
         0
     stderr:
     stdout:
         nobody:x:99:99:Nobody:/: /sbin/nologin
         nfsnobody:x:65534:65534:Anonymous NFS User: /var/lib/nfs : /sbin/nologin
[root@salt-master ~] # salt '*' file.grep /etc/sysconfig/network-scripts/ifcfg-eth0 ipaddr " -i"
salt-minion01.contoso.com:
     ----------
     pid:
         1896
     retcode:
         0
     stderr:
     stdout:
         IPADDR=192.168.49.101
salt-minion02.contoso.com:
     ----------
     pid:
         1770
     retcode:
         0
     stderr:
     stdout:
         IPADDR=192.168.49.102

17、file.makedirs

file.makedirs:创建目录,需要确认目录所包含的路径是可用的。注意,路径一定要在结尾添加“/”,不然会被当做父目录,比如如果传入/tmp/pfile,就会被当做/tmp/处理,而传入/tmp/pfile/则会当做/tmp/pfile/处理。另外,虽然该模块名称包含dirs,但其实无法批量创建多个目录,如果传入多个参数默认只处理第一个参数。但是可以创建多级目录,即使上级目录不存在。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[root@salt-master ~] # salt '*' file.makedirs /tmp/pfile
salt-minion01.contoso.com:
     Directory  '/tmp'  already exists
salt-minion02.contoso.com:
     Directory  '/tmp'  already exists
[root@salt-master ~] # salt '*' file.makedirs /tmp/pfile/
salt-minion02.contoso.com:
     None
salt-minion01.contoso.com:
     None
[root@salt-master ~] # salt '*' cmd.run 'ls -l /tmp/'
salt-minion01.contoso.com:
     total 8
     drwxr-xr-x 2 root root 4096 Jun  4 10:48 pfile
     -rw-r--r-- 1 root root   73 Mar 11 21:35 root
salt-minion02.contoso.com:
     total 8
     drwxr-xr-x 2 root root 4096 Jun  4 10:48 pfile
     -rw------- 1 root root   89 May 25 13:32 root
[root@salt-master ~] # salt '*' file.makedirs /tmp/dic1/dic2/dic3/
salt-minion02.contoso.com:
     None
salt-minion01.contoso.com:
     None
[root@salt-master ~] # salt '*' cmd.run 'tree /tmp'
salt-minion01.contoso.com:
     /tmp
     |-- dic1
     |   `-- dic2
     |       `-- dic3
     |-- pfile
     |-- root
     `-- salt
     
     5 directories, 1  file
salt-minion02.contoso.com:
     /tmp
     |-- dic1
     |   `-- dic2
     |       `-- dic3
     |-- pfile
     |-- root
     `-- salt
     
     5 directories, 1  file

18、file.mkdir

file.mkdir:确认一个目录是可用的,也即创建指定目录。与file.makedirs不同的是,参数可以末尾不带“/”,也可以创建成功。另外,该模块支持批量创建多个目录,也支持创建多级目录。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@salt-master ~] # salt '*' file.mkdir /tmp/salt
salt-minion02.contoso.com:
     None
salt-minion01.contoso.com:
     None
[root@salt-master ~] # salt '*' cmd.run 'ls -l /tmp'
salt-minion01.contoso.com:
     total 12
     drwxr-xr-x 2 root root 4096 Jun  4 10:48 pfile
     -rw-r--r-- 1 root root   73 Mar 11 21:35 root
     drwxr-xr-x 2 root root 4096 Jun  4 11:02 salt
[root@salt-master ~] # salt '*' file.mkdir /tmp/salt1/slat2/salt3
salt-minion02.contoso.com:
     None
salt-minion01.contoso.com:
     None
[root@salt-master ~] # salt '*' file.mkdir /tmp/test1 /tmp/test2 /tmp/test3
salt-minion02.contoso.com:
     None
salt-minion01.contoso.com:
     None
[root@salt-master ~] # salt '*' file.mkdir /tmp/pfile/test
salt-minion01.contoso.com:
     None
salt-minion02.contoso.com:
     None

19、file.move

file.move:移动一个文件或目录。

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@salt-master ~] # salt '*' file.move /tmp/pfile/test /tmp/salt01/
salt-minion01.contoso.com:
     ----------
     comment:
         '/tmp/pfile/test'  moved to  '/tmp/salt01/'
     result:
         True
salt-minion02.contoso.com:
     ----------
     comment:
         '/tmp/pfile/test'  moved to  '/tmp/salt01/'
     result:
         True

20、file.remove

file.remove:删除文件。注意:该模块一次只能接受一个参数。

1
2
3
4
5
6
7
8
9
10
[root@salt-master ~] # salt '*' file.remove /tmp/dic1/
salt-minion02.contoso.com:
     True
salt-minion01.contoso.com:
     True
[root@salt-master ~] # salt '*' file.remove /tmp/test1/
salt-minion02.contoso.com:
     True
salt-minion01.contoso.com:
     True

21、file.rename

file.rename:重命名一个文件或目录。

1
2
3
4
5
[root@salt-master ~] # salt '*' file.rename /tmp/salt1 /tmp/salt01
salt-minion01.contoso.com:
     True
salt-minion02.contoso.com:
     True

22、file.stats

file.stats:返回包含指定文件状态的词典。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@salt-master ~] # salt 'salt-minion01.contoso.com' file.stats /etc/passwd
salt-minion01.contoso.com:
     ----------
     atime:
         1496464651.48
     ctime:
         1489237646.83
     gid:
         0
     group:
         root
     inode:
         394628
     mode:
         0644
     mtime:
         1489237646.82
     size:
         1465
     target:
         /etc/passwd
     type :
         file
     uid:
         0
     user:
         root

23、file.rmdir

file.rmdir:删除指定目录,如果目录不为空则返回失败。

1
2
3
4
5
6
7
8
9
10
[root@salt-master ~] # salt '*' file.rmdir /tmp/salt01
salt-minion02.contoso.com:
     Directory not empty
salt-minion01.contoso.com:
     Directory not empty
[root@salt-master ~] # salt '*' file.rmdir /tmp/salt
salt-minion02.contoso.com:
     True
salt-minion01.contoso.com:
     True

24、file.search

file.search:搜索pattern参数是否出现在指定文件中。

1
2
3
4
5
6
7
8
9
10
[root@salt-master ~] #  salt '*' file.search /etc/passwd 'nginx'
salt-minion02.contoso.com:
     True
salt-minion01.contoso.com:
     True
[root@salt-master ~] #  salt '*' file.search /etc/passwd 'test'
salt-minion02.contoso.com:
     False
salt-minion01.contoso.com:
     False

25、file.readdir

file.readdir:返回包含一个目录内容的列表。

1
2
3
4
5
6
7
8
9
[root@salt-master ~] # salt '*' file.readdir /tmp/pfile
salt-minion02.contoso.com:
     - .
     - ..
     test
salt-minion01.contoso.com:
     - .
     - ..
     test




本文转自 jerry1111111 51CTO博客,原文链接:http://blog.51cto.com/jerry12356/1932044,如需转载请自行联系原作者
相关文章