当前位置: 首页 > news >正文

Ansible——stat模块

目录

参数总结

返回值

基础语法

常见的命令行示例

示例1:检查文件是否存在

示例2:获取文件详细信息

示例3:检查目录是否存在

示例4:获取文件的 MD5 校验和

示例5:获取文件的 MIME 类型

高级使用

示例6:获取文件的 SHA256 校验和

带环境变量和特权操作

示例7:使用用户特权并设置环境变量

Playbook示例 

示例1:检查文件是否存在

示例2:检查目录是否存在

示例3:获取文件详细信息

示例4:条件任务执行

示例5:获取文件的 MD5 校验和

示例6:获取文件的 MIME 类型

示例7:获取文件的 SHA256 校验和

综合示例


 

Ansible 的 stat 模块用于获取文件或目录的状态信息。在执行任务之前检查文件或目录是否存在、获取文件的属性(如权限、所有者、大小、修改时间等)、验证路径是文件还是目录等方面非常有用。它可以用于条件检查、错误处理、决策分支等。

参数总结

  1. path:

    • 描述:要获取状态信息的文件或目录的路径。
    • 类型:字符串
    • 必需:是
  2. follow:

    • 描述:如果为 yes,则跟随符号链接。
    • 类型:布尔值
    • 默认值:no
  3. get_md5:

    • 描述:如果为 yes,则计算文件的 MD5 校验和(仅适用于文件)。
    • 类型:布尔值
    • 默认值:no
  4. checksum_algorithm:

    • 描述:指定用于计算校验和的算法(如果 get_checksumyes)。
    • 可选值:md5sha1sha256
    • 类型:字符串
    • 默认值:sha1
  5. get_checksum:

    • 描述:如果为 yes,则计算文件的校验和(默认算法为 sha1)。
    • 类型:布尔值
    • 默认值:no
  6. checksum:

    • 描述:指定要使用的校验和算法的别名(仅适用于 md5sha1),等价于 checksum_algorithm
    • 类型:字符串
    • 默认值:无

返回值

stat 模块返回的结果是一个字典,包含了指定文件或目录的状态信息。常见的返回值包括:

  • exists:如果文件或目录存在,则为 true,否则为 false
  • isdir:如果指定路径是目录,则为 true,否则为 false
  • isfile:如果指定路径是文件,则为 true,否则为 false
  • uid:文件或目录的所有者的用户 ID。
  • gid:文件或目录的所有者的组 ID。
  • size:文件大小(以字节为单位)。
  • mtime:文件或目录的修改时间(时间戳)。
  • atime:文件或目录的访问时间(时间戳)。
  • ctime:文件或目录的创建时间(时间戳)。
  • inode:文件或目录的 inode 号。
  • device:文件或目录所在的设备号。

 

基础语法

ansible <hostname or group> -m stat -a "path=<file_or_directory_path> <additional_arguments>" [options]

常见的命令行示例

示例1:检查文件是否存在
ansible all -m stat -a "path=/tmp/sample.txt" --become

上述命令会检查 /tmp/sample.txt 文件是否存在,--become 选项用于以特权执行。

示例2:获取文件详细信息
ansible all -m stat -a "path=/tmp/sample.txt" -v

-v 选项用于启用详细输出,以显示文件的详细状态信息。

示例3:检查目录是否存在
ansible all -m stat -a "path=/tmp/sample_dir" --become

此命令会检查 /tmp/sample_dir 目录是否存在。

示例4:获取文件的 MD5 校验和
ansible all -m stat -a "path=/tmp/sample.txt get_md5=yes" --become

此命令会获取 /tmp/sample.txt 文件的 MD5 校验和。

示例5:获取文件的 MIME 类型
ansible all -m stat -a "path=/tmp/sample.txt get_mime=yes" --become

此命令会获取 /tmp/sample.txt 文件的 MIME 类型信息。

高级使用

结合多个参数完成更复杂的操作:

示例6:获取文件的 SHA256 校验和
ansible all -m stat -a "path=/tmp/sample.txt checksum_algorithm=sha256" --become

此命令会获取 /tmp/sample.txt 文件的 SHA256 校验和。

带环境变量和特权操作

示例7:使用用户特权并设置环境变量
ansible all -m stat -a "path=/tmp/sample.txt" --become --extra-vars "ansible_user=your_user ansible_password=your_password"

 

Playbook示例 

示例1:检查文件是否存在
---
- name: Check if a file existshosts: alltasks:- name: Check file existencestat:path: /tmp/sample.txtregister: file_stat- name: Display file existencedebug:msg: "File exists: {{ file_stat.stat.exists }}"

示例2:检查目录是否存在
---
- name: Check if a directory existshosts: alltasks:- name: Check directory existencestat:path: /tmp/sample_dirregister: dir_stat- name: Display directory existencedebug:msg: "Directory exists: {{ dir_stat.stat.isdir }}"

示例3:获取文件详细信息
---
- name: Get file detailed informationhosts: alltasks:- name: Get file statusstat:path: /tmp/sample.txtregister: file_stat- name: Display file detailsdebug:var: file_stat.stat

示例4:条件任务执行

根据文件的存在性执行条件任务:

---
- name: Conditional tasks based on file existencehosts: alltasks:- name: Check if a file existsstat:path: /tmp/sample.txtregister: file_stat- name: Create file if not existsfile:path: /tmp/sample.txtstate: touchwhen: not file_stat.stat.exists

示例5:获取文件的 MD5 校验和
---
- name: Get file MD5 checksumhosts: alltasks:- name: Check file status with MD5stat:path: /tmp/sample.txtget_md5: yesregister: file_stat- name: Display MD5 checksumdebug:msg: "File MD5 checksum: {{ file_stat.stat.md5 }}"

示例6:获取文件的 MIME 类型
---
- name: Get file MIME typehosts: alltasks:- name: Get file status with MIME typestat:path: /tmp/sample.txtget_mime: yesregister: file_stat- name: Display MIME typedebug:msg: "File MIME type: {{ file_stat.stat.mime_type }}"

示例7:获取文件的 SHA256 校验和
---
- name: Get file SHA256 checksumhosts: alltasks:- name: Check file status with SHA256 checksumstat:path: /tmp/sample.txtchecksum_algorithm: sha256register: file_stat- name: Display SHA256 checksumdebug:msg: "File SHA256 checksum: {{ file_stat.stat.checksum }}"

综合示例

结合多个参数和任务的示例:

---
- name: Comprehensive example of stat usagehosts: alltasks:- name: Check if a file exists and get detailsstat:path: /tmp/sample.txtget_md5: yesget_mime: yeschecksum_algorithm: sha256register: file_stat- name: Display file detailsdebug:var: file_stat.stat- name: Create file if not existsfile:path: /tmp/sample.txtstate: touchwhen: not file_stat.stat.exists- name: Display MD5 checksum if file existsdebug:msg: "File MD5 checksum: {{ file_stat.stat.md5 }}"when: file_stat.stat.exists- name: Display MIME type if file existsdebug:msg: "File MIME type: {{ file_stat.stat.mime_type }}"when: file_stat.stat.exists- name: Display SHA256 checksum if file existsdebug:msg: "File SHA256 checksum: {{ file_stat.stat.checksum }}"when: file_stat.stat.exists

相关文章:

Ansible——stat模块

目录 参数总结 返回值 基础语法 常见的命令行示例 示例1&#xff1a;检查文件是否存在 示例2&#xff1a;获取文件详细信息 示例3&#xff1a;检查目录是否存在 示例4&#xff1a;获取文件的 MD5 校验和 示例5&#xff1a;获取文件的 MIME 类型 高级使用 示例6&…...

第二十节:带你梳理Vue2:Vue子组件向父组件传参(事件传参)

1. 自定义事件 除了可以处理原生的DOM事件, v-on指令也可以处理组件内部触发的自定义的事件,调用this.$emit()函数就可以触发一个自定义事件 $emit() 触发事件函数接受一个自定义事件的事件名以及其他任何给事件函数传递的参数. 然后就可以在组件上使用v-on来绑定这个自定义事…...

华为od-C卷100分题目 - 10寻找最富裕的小家庭

华为od-C卷100分题目 - 10寻找最富裕的小家庭 题目描述 在一棵树中&#xff0c;每个节点代表一个家庭成员&#xff0c;节点的数字表示其个人的财富值&#xff0c;一个节点及其直接相连的子节点被定义为一个小家庭。 现给你一棵树&#xff0c;请计算出最富裕的小家庭的财富和。…...

本地部署AI大模型 —— Ollama文档中文翻译

写在前面 来自Ollama GitHub项目的README.md 文档。文档中涉及的其它文档未翻译&#xff0c;但是对于本地部署大模型而言足够了。 Ollama 开始使用大模型。 macOS Download Windows 预览版 Download Linux curl -fsSL https://ollama.com/install.sh | sh手动安装说明 …...

【前端技术】 ES6 介绍及常用语法说明

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…...

程序员具备的职业素养(个人见解)

程序员应该有什么职业素养&#xff1f; 1. 技术能力 毫无疑问&#xff0c;优秀的技术是程序员的必备。 -扎实的编程基础&#xff1a;熟练掌握至少一门编程语言&#xff0c;并理解基本的数据结构和算法&#xff0c;要做到精通&#xff01;。 - 广泛的技术知识&#xff1a;了…...

Springboot 开发-- 集成 Activiti 7 流程引擎

引言 Activiti 7是一款遵循BPMN 2.0标准的开源工作流引擎&#xff0c;旨在为企业提供灵活、可扩展的流程管理功能。它支持图形化的流程设计、丰富的API接口、强大的执行引擎和完善的监控报表&#xff0c;帮助企业实现业务流程的自动化、规范化和智能化。本文将为您详细介绍 Ac…...

一些常用的frida脚本

这里整理一些常用的frida脚本&#xff0c;和ghidra 一起食用风味更佳&#xff5e; Trace RegisterNatives 注意到从java到c的绑定中&#xff0c;可能会在JNI_OnLoad动态的执行RegisterNatives方法来绑定java层的函数到c行数&#xff0c;可以通过这个方法&#xff0c;来吧运行…...

计算机二级Access操作题总结——简单应用

查询设计 创建一个查询&#xff0c;能够在客人每次结账时根据客人的姓名提示统计这个客人已住天数和应交金额&#xff0c;并显示“姓名”、“房间号”、“已住天数”和“应交金额”&#xff0c;所建查询命名为“qT2”。 注&#xff1a;输入姓名时应提示“请输入姓名”。已住天…...

C#操作MySQL从入门到精通(21)——删除数据

前言: 谈到数据库,大家最容易脱口而出的就是增删改查,本文就是来详细介绍如何删除数据。 本文测试使用的数据库如下: 1、删除部分数据 使用delete 关键字,并且搭配where条件使用,否则会导致表中数据全部被删除 string sql = string.Empty;if (radioButton_DeletePart…...

【iOS】JSONModel源码阅读笔记

文章目录 前言一、JSONModel使用二、JSONModel其他方法转换属性名称 三、源码分析- (instancetype)initWithDictionary:(NSDictionary*)dict error:(NSError **)err[self init]__setup____inspectProperties - (BOOL)__doesDictionary:(NSDictionary*)dict matchModelWithKeyMa…...

如何离线下载 Microsoft Corporation II Windows Subsystem for Android

在本文中&#xff0c;我们将指导您通过一个便捷的步骤来离线下载 Microsoft Corporation II Windows Subsystem for Android。这个过程将利用第三方工具来生成直接下载链接&#xff0c;从而让您能够获取该应用程序的安装包&#xff0c;即使在没有访问Microsoft Store的情况下也…...

使用 flask + qwen 实现 txt2sql 流式输出

前言 一般的大模型提供的 api 都是在提问之后过很久才会返回对话内容&#xff0c;可能要耗时在 3 秒以上了&#xff0c;如果是复杂的问题&#xff0c;大模型在理解和推理的耗时会更长&#xff0c;这种展示结果的方式对于用户体验是很差的。 其实大模型也是可以进行流式输出&a…...

植物大战僵尸杂交版最新2.0.88手机+电脑+苹果+修改器

在这个充满奇妙的平行宇宙中&#xff0c;植物和僵尸竟然能够和谐共存&#xff01;是的&#xff0c;你没听错&#xff01;一次意外的实验&#xff0c;让这两个看似对立的生物种类发生了基因杂交&#xff0c;创造出了全新的生物种类——它们既能够进行光合作用&#xff0c;也具备…...

Vite - 开发初体验,以及按需导入配置

目录 开始 创建一个 Vite 项目 项目结构 /src/main.js index.html package.json vite.config.js Vite 项目中使用 vue-router Vite 组件的“按需引入” 传统的方式引入一个组件 传统方式引入带来的问题 解决办法&#xff08;配置 按需引入 插件&#xff09; 示例&…...

推荐云盘哪个好,各有各的优势

选择合适的云盘服务是确保数据安全、便捷分享和高效协作的关键。下面将从多个维度对目前主流的云盘服务进行详细的对比和分析&#xff1a; 速度性能 百度网盘青春版&#xff1a;根据测试&#xff0c;其上传和下载确实不限速&#xff0c;但主要定位是办公人群&#xff0c;适用于…...

面试题之webpack与vite系列

今天继续来分享面试题&#xff0c;今天要分享的技术是webpack和vite的一些区别&#xff0c;下面我列举了最常见的关于webpack和vite的面试题&#xff0c;主要有以下几个&#xff1a; 1.说说你对webpack的理解&#xff1f;plugin和loader有什么区别&#xff1f; Webpack是一个…...

单调队列 加 二分

雾粉与最小值(简单版) 链接&#xff1a; 牛客 思路 题意是 给定我们数组a让我们完成{x,l,r}询问&#xff0c;判断是否在a中存在子数组满足长度在l,r之间且子数组最小值大于等于x&#xff0c;输出yes 或者 on 一个数组&#xff0c;长度越长&#xff0c;其最小值越小&#xff…...

Node.js 和 Vue 的区别的基本知识科普

Node.js和Vue.js在多个方面存在显著的区别。以下是这两者的主要区别,按照清晰的分点表示和归纳: Node.js 服务器端环境: Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它使JavaScript能够在服务器端运行。为JavaScript提供服务器端的环境服务,方便地搭建响应速度…...

统计信号处理基础 习题解答10-10

题目 在本题中&#xff0c;我们讨论再生PDF。回顾前面 其中分母与无关。如果选择一个&#xff0c;使得它与相乘时&#xff0c;我们得到与相同形式的PDF&#xff0c;那么后验PDF 将有和相同的形式。例10.1的高斯PDF正是这样的一种情况。现在假设在条件下的的PDF是指数形式&…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...