ansible.builtin.stat 模块 – 获取文件或文件系统状态
注意
此模块是 ansible-core
的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使不指定 collections 关键字,也可以使用简短的模块名称 stat
。但是,我们建议您使用 完全限定集合名称 (FQCN) ansible.builtin.stat
,以便轻松链接到模块文档,并避免与其他可能具有相同模块名称的集合冲突。
概要
检索与 Linux/Unix
stat
命令类似的文件的事实。对于 Windows 目标,请改用 ansible.windows.win_stat 模块。
参数
参数 |
注释 |
---|---|
确定文件校验和的算法。 如果主机无法使用指定的算法,将抛出错误。 远程主机必须支持指定的哈希方法,如果主机符合 FIPS-140 标准,则 可用性可能会受到目标系统的限制,例如,FIPS 系统不允许使用 md5 选择
|
|
是否跟随符号链接。 选择
|
|
如果存在,则使用 lsattr 工具获取文件属性。 选择
|
|
是否返回文件的校验和。 选择
|
|
使用文件魔术并返回有关文件性质的数据。这使用大多数 Linux/Unix 系统上的 如果可能,这将向返回添加 在 Ansible 2.3 中,此选项从 选择
|
|
要获取事实的文件/对象的完整路径。 |
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完整 |
可以在 check_mode 中运行并返回已更改的状态预测,而无需修改目标,如果不支持,则将跳过该操作。 |
|
支持:无 |
当处于 diff 模式时,将返回有关已更改(或在 check_mode 中可能需要更改)的详细信息 |
|
平台: posix |
可以操作的目标操作系统/系列 |
另请参阅
另请参阅
- ansible.builtin.file
管理文件和文件属性。
- ansible.windows.win_stat
有关 ansible.windows.win_stat 模块的官方文档。
示例
# Obtain the stats of /etc/foo.conf, and check that the file still belongs
# to 'root'. Fail otherwise.
- name: Get stats of a file
ansible.builtin.stat:
path: /etc/foo.conf
register: st
- name: Fail if the file does not belong to 'root'
ansible.builtin.fail:
msg: "Whoops! file ownership has changed"
when: st.stat.pw_name != 'root'
# Determine if a path exists and is a symlink. Note that if the path does
# not exist, and we test sym.stat.islnk, it will fail with an error. So
# therefore, we must test whether it is defined.
# Run this to understand the structure, the skipped ones do not pass the
# check performed by 'when'
- name: Get stats of the FS object
ansible.builtin.stat:
path: /path/to/something
register: sym
- name: Print a debug message
ansible.builtin.debug:
msg: "islnk isn't defined (path doesn't exist)"
when: sym.stat.islnk is not defined
- name: Print a debug message
ansible.builtin.debug:
msg: "islnk is defined (path must exist)"
when: sym.stat.islnk is defined
- name: Print a debug message
ansible.builtin.debug:
msg: "Path exists and is a symlink"
when: sym.stat.islnk is defined and sym.stat.islnk
- name: Print a debug message
ansible.builtin.debug:
msg: "Path exists and isn't a symlink"
when: sym.stat.islnk is defined and sym.stat.islnk == False
# Determine if a path exists and is a directory. Note that we need to test
# both that p.stat.isdir actually exists, and also that it's set to true.
- name: Get stats of the FS object
ansible.builtin.stat:
path: /path/to/something
register: p
- name: Print a debug message
ansible.builtin.debug:
msg: "Path exists and is a directory"
when: p.stat.isdir is defined and p.stat.isdir
- name: Do not calculate the checksum
ansible.builtin.stat:
path: /path/to/myhugefile
get_checksum: no
- name: Use sha256 to calculate the checksum
ansible.builtin.stat:
path: /path/to/something
checksum_algorithm: sha256
返回值
常见返回值记录在 此处,以下是此模块独有的字段
键 |
描述 |
---|---|
包含所有 stat 数据的字典,某些平台可能会添加其他字段。 已返回:成功 |
|
上次访问时间 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
文件属性列表 已返回:成功,路径存在且用户可以执行该路径 示例: |
|
文件字符集或编码 已返回:成功,路径存在且用户可以读取统计信息,并且安装的 python 支持它,并且 示例: |
|
文件的哈希值 已返回:成功,路径存在,用户可以读取统计信息,路径支持哈希,并且提供的校验和算法可用 示例: |
|
上次元数据更新或创建时间(取决于操作系统) 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
inode 所在的设备 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您调用用户是否具有对该路径的执行权限 已返回:成功,路径存在且用户可以执行该路径 示例: |
|
目标路径是否实际存在 已返回:成功 示例: |
|
表示所有者组的数字 ID 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
所有者的组名 已返回:成功,路径存在,用户可以读取统计信息,可以查找所有者组,并且安装的 python 支持它 示例: |
|
路径的 inode 号 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您路径是否为块设备 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您路径是否为字符设备 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您路径是否为目录 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您路径是否为命名管道 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您调用用户的组 ID 是否与所有者的组 ID 匹配 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您路径是否为符号链接 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您路径是否为常规文件 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您路径是否为 Unix 域套接字 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您调用用户的 ID 是否与所有者的 ID 匹配 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
为远程文件系统规范化的符号链接目标 返回: 成功,路径存在,用户可以读取统计信息,并且该路径是一个符号链接 示例: |
|
符号链接的目标。请注意,相对路径仍然是相对的 返回: 成功,路径存在,用户可以读取统计信息,并且该路径是一个符号链接 示例: |
|
文件魔术数据或 mime 类型 已返回:成功,路径存在且用户可以读取统计信息,并且安装的 python 支持它,并且 示例: |
|
文件的 Unix 权限,以八进制字符串表示 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
最后修改的时间 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
指向 inode 的链接数(硬链接) 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
获取文件/对象信息的完整路径 返回: 成功,并且路径存在 示例: |
|
所有者的用户名 返回: 成功,路径存在,用户可以读取统计信息,可以查找所有者名称,并且已安装的 python 支持它 示例: |
|
告知您调用用户是否有权读取该路径 返回: 成功,路径存在,用户可以读取该路径 示例: |
|
告知您所有者的组是否具有读取权限 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您其他人是否具有读取权限 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您所有者是否具有读取权限 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
普通文件的大小(以字节为单位),某些特殊文件的数据量 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
表示文件所有者的数字 ID 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
根据文件系统,文件的版本/生成属性 返回: 成功,路径存在,用户可以执行该路径,lsattr 可用,并且文件系统支持 示例: |
|
告知您所有者的组是否具有写入权限 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您其他人是否具有写入权限 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您调用用户是否有权写入该路径 返回: 成功,路径存在,用户可以写入该路径 示例: |
|
告知您所有者是否具有写入权限 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您所有者的组是否具有执行权限 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您其他人是否具有执行权限 已返回:成功,路径存在并且用户可以读取统计信息 示例: |
|
告知您所有者是否具有执行权限 已返回:成功,路径存在并且用户可以读取统计信息 示例: |