Ansible fetch模块详解:轻松从远程主机抓取文件
在自动化运维的过程中,我们经常需要从远程主机下载文件到本地,以便进行分析或备份。Ansible
的fetch
模块正是为了满足这一需求而设计的,它可以帮助我们轻松地从远程主机获取文件,并将其保存到本地指定的位置。在这篇文章中,我们将详细探讨如何使用fetch模块,以及它在实际工作中的常见应用场景。
目录
- 📝fetch模块的功能
- 📝fetch模块的常用参数
- 📝`fetch`模块的基本用法
- ✍️从远程主机抓取文件
- ✍️抓取多个文件
- ✍️保留原有目录结构
- ✍️文件不存在时的错误处理
- ✍️使用checksum验证文件
- 📝fetch模块的高级用法
- ✍️下载目录
- ✍️使用`register`和`debug`输出文件信息
- 📝总结
- 推荐阅读
📝fetch模块的功能
fetch
模块的主要功能是从目标主机(被管理主机)中抓取指定的文件或目录,并将其下载到控制主机的指定路径下。常见的应用场景包括:
-
从远程主机抓取日志文件进行分析。
-
从远程主机下载配置文件进行备份。
-
抓取诊断数据或错误信息供后续处理。
📝fetch模块的常用参数
参数 | 描述 | 类型 | 必填 |
---|---|---|---|
src | 远程主机上的文件或目录路径 | 字符串 | 是 |
dest | 本地控制主机保存文件的路径 | 字符串 | 是 |
flat | 是否保留目录结构,yes 保留,no 不保留 | 布尔值 | 否 |
fail_on_missing | 如果远程文件不存在,是否报错,yes 或no | 布尔值 | 否 |
validate_checksum | 是否验证文件的checksum ,默认yes | 布尔值 | 否 |
📝fetch
模块的基本用法
✍️从远程主机抓取文件
最简单的用法是从远程主机上抓取一个文件并保存到本地控制主机上。
ansible node1 -m fetch \
-a "src=/var/log/auth.log dest=/tmp/"
在这个例子中,我们从
node1
组中的主机上指定要下载的文件路径(通过src
参数),然后指定这些文件在本地控制主机上的保存位置(通过dest
参数)。文件将会被下载并保存到你指定的目录中。
执行完上述的命令后,输出如下图的结果:
✍️抓取多个文件
如果需要抓取多个文件,建议采用playbook
的方式,并利用with_items
循环来轻松实现对多个文件的处理。这种方式既灵活又高效。
- name: 从远程主机抓取多个日志文件hosts: node1tasks:- name: 从远程主机抓取多个日志文件ansible.builtin.fetch:src: "{{ item }}"dest: /tmp/logs/with_items:- /var/log/mail.log- /var/log/syslog.2.gz
然后你只需要运行下面的命令:
ansible-playbook download.yml
执行完上述命令后,输出如下结果:
✍️保留原有目录结构
默认情况下,fetch
模块会将远程文件下载到目标路径下,是保留原有的目录结构。如果需要不保留远程主机的目录结构,可以使用flat: yes
参数。
ansible node1 -m fetch \
-a "src=/var/log/syslog dest=/tmp/ flat=yes"
此时,文件syslog
将不被保留原有的目录结构,并下载到/tmp/syslog
。如下图所示:
✍️文件不存在时的错误处理
如果远程文件不存在,fetch
模块会报错。可以通过fail_on_missing: no
来防止错误抛出,控制任务继续执行。
ansible node1 -m fetch \
-a "src=/var/log/nonexistent.log dest=/tmp/logs/ fail_on_missing=no"
✍️使用checksum验证文件
在抓取文件时,可以启用validate_checksum
来验证文件的checksum,确保文件的完整性。
ansible node1 -m fetch \
-a "src=/var/log/syslog dest=/tmp/logs/ validate_checksum=yes"
📝fetch模块的高级用法
✍️下载目录
fetch
模块不仅支持下载单个文件,还支持下载整个目录。
ansible node1 -m fetch \
-a "src=/home/user/data/ dest=/tmp/data_backup/"
此命令会将远程主机上的/home/user/data/
目录及其内容递归下载到本地控制主机的/tmp/data_backup/
目录中,保留目录结构。
✍️使用register
和debug
输出文件信息
可以使用register
来保存抓取的文件信息,并通过debug
模块查看抓取的文件路径等详细信息。
- name: 从远程主机抓取文件并保存结果hosts: node1tasks:- name: 从远程主机抓取文件并保存结果ansible.builtin.fetch:src: /var/log/syslogdest: /tmp/log/register: fetched_file- name: 输出抓取的文件信息ansible.builtin.debug:var: fetched_file
📝总结
Ansible的fetch
模块为我们提供了简单高效的远程文件下载解决方案。无论是抓取单个文件、多个文件,还是整个目录,它都能轻松完成任务。通过结合使用flat
、fail_on_missing
等参数,我们可以灵活应对各种场景。掌握fetch
模块,将极大提高我们的自动化运维效率。
推荐阅读
- 告别手动编辑:如何用Python快速创建Ansible hosts文件?
- 一分钟学会Ansible cron模块,高效管理你的定时任务
- 打造更安全的Linux系统:玩转PAM配置文件
- Ansible实战:如何正确选择command和shell模块?
- 运维效率倍增!Ansible Copy 模块必知必会操作
- 如何在Ansible中轻松实现复杂SSH跳转?这个参数搞定
相关文章:
Ansible fetch模块详解:轻松从远程主机抓取文件
在自动化运维的过程中,我们经常需要从远程主机下载文件到本地,以便进行分析或备份。Ansible的fetch模块正是为了满足这一需求而设计的,它可以帮助我们轻松地从远程主机获取文件,并将其保存到本地指定的位置。在这篇文章中…...
skynet 源码阅读 -- 启动主流程
Skynet 启动主流程分析 Skynet 是一个轻量级、高并发的服务器框架。它在启动时会进行一系列初始化操作,并启动多个不同功能的线程(Monitor、Timer、Worker、Socket),从而实现消息分发、定时器、网络I/O等核心功能。本文主要从 ma…...
【Linux】Linux入门(三)权限
目录 前提权限概念whoami指令 Linux权限管理文件访问者的分类(人)file指令权限信息权限的表示方法 chmod指令 更改权限chown指令 修改文件,文件夹所属用户和用户组 权限掩码umask(权限掩码) 粘滞位 前提 请先看下面这…...
FluentCMS:基于 ASP.NET Core 和 Blazor 技术构建的开源CMS内容管理系统
推荐一个基于 ASP.NET Core 和 Blazor 技术构建的、功能完善的开源CMS内容管理系统。 01 项目简介 FluentCMS 是一个基于强大的 ASP.NET Core 和创新的 Blazor 技术构建的现代内容管理系统(CMS)。 FluentCMS 设计为快速、灵活且用户友好,它…...
【阿里云】使用docker安装nginx后可以直接访问
一、创建目录 mkdir -p config/{cert,conf.d} html logs二、上传nginx.conf的配置文件 user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include /etc/ngin…...
leetcode-84-柱状图最大的矩形
柱状图中最大的矩形 已解答 算术评级: 7 同步题目状态 困难 相关标签 相关企业 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 1. stack 计算位置在…...
Vue | 搭建第一个Vue项目(安装node,vue-cli)
一.环境搭建: 1.安装node: 进入网站,下载对应版本的node.js Index of /dist/ (nodejs.org) 我这里下载的是: 解压到对应的目录下: 并新建两个文件夹node_cache和node_global: 2.配置环境: …...
Redis 持久化机制:RDB 和 AOF
Redis 持久化机制:RDB 和 AOF Redis 主要提供了两种持久化方式:**RDB(Redis Database)**和 AOF(Append-Only File)。它们各自的实现原理、优缺点以及适用场景如下。 1. RDB(Redis Database&…...
ToDesk云电脑、顺网云、网易云、易腾云、极云普惠云横测对比:探寻电竞最佳拍档
一、云电脑:电竞新宠崛起 在电竞游戏不断发展的今天,硬件性能成为了决定游戏体验的关键因素。为了追求极致的游戏画面与流畅度,玩家们往往需要投入大量资金购置高性能电脑。然而,云电脑技术的出现,为玩家们提供了一种…...
GPT 结束语设计 以nanogpt为例
GPT 结束语设计 以nanogpt为例 目录 GPT 结束语设计 以nanogpt为例 1、简述 2、分词设计 3、结束语断点 1、简述 在手搓gpt的时候,可能会遇到一些性能问题,即关于是否需要全部输出或者怎么节约资源。 在输出语句被max_new_tokens 限制,…...
【达梦数据库】两地三中心环境总结
目录 架构监视器位置异步备库同步频率配置:dmtimer.ini断网测试异地切换过程&回切:允许丢数据模式切换回切 架构 2(1主1实时备库)1(实时备库)1(异步备库),分别为节点1、2、3、4监视器位置 …...
C语言进阶习题【1】指针和数组(4)——指针笔试题3
笔试题5:下面代码输出是是什么? int main() {int a[5][5];int(*p)[4];p a;printf( "%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);return 0; }分析 代码结果 笔试题6:下面代码输出是是什么࿱…...
Qt——引用第三方SDK lib库的使用方法
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》 《实用硬件方案设计》 《结构建模设…...
Grafana系列之Dashboard:新增仪表板、新增变量、过滤变量、变量查询、导入仪表板、变量联动、Grafana Alert
概述 关于Prometheus和Grafana的安装,略过。 写在前面 Dashboard:仪表板,可包含多个PanelPanel:面板,Dashboard中的组件 如有写得不对的地方,烦请指出。 新增仪表板 点击右上角的 选择New dashboard…...
管道符、重定向与环境变量
个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚: https://blog.csdn.net/qq_52914969?typeblog 一、重定向 将命令和文件结合 标准输入重定向(STDIN,文件描述符为0):默认从键盘输入&am…...
如何使用 Redis 作为高效缓存
如何使用 Redis 作为高效缓存 Redis(Remote Dictionary Server)是一个高性能的 内存存储系统,通常被用作 缓存 来加速数据访问,提高应用的吞吐量和响应速度。本文详细讲解如何使用 Redis 作为高效缓存,包括基本原理、…...
simulink入门学习01
文章目录 1.基本学习方法2.图形环境--模块和参数3.激活菜单---添加到模型3.1输入选项3.2添加到模型3.3更改运算3.4验证要求 4.乘以特定值--Gain模块4.1引入gain模块4.2更改增益参数4.3接入系统4.4大胆尝试 1.基本学习方法 今天突然想要学习这个simulink的相关知识,…...
接上篇基于Alertmanager 配置钉钉告警
Alertmanager 是一个用于处理和管理 Prometheus 警报的开源工具。它负责接收来自 Prometheus 服务器的警报,进行去重、分组、静默、抑制等操作,并通过电子邮件、PagerDuty、Slack 等多种渠道发送通知。 主要功能 去重:合并相同或相似的警报&a…...
【Elasticsearch】index.mapping.source.mode
在Elasticsearch中,当设置 index.mapping.source.mode 为 synthetic 时,Elasticsearch会自动生成和存储源文档的合成版本。这些合成版本的内容取决于你索引的字段和映射定义。具体来说,synthetic 模式会存储以下内容: ### 合成源文…...
GBase8c aes_encrypt和aes_decrypt函数
在数据库中,aes_encrypt和aes_decrypt函数进行加解密时使用的块加密模式。 GBase8c 与 MySQL 的aes_encrypt和aes_decrypt函数区别: 1、GBase8c 中的初始化向量init_vector不能为空 2、MySQL的加密模块block_encryption_mode 为aes-128-ecb,…...
【Unity】ScrollViewContent适配问题(Contentsizefilter不刷新、ContentSizeFilter失效问题)
最近做了一个项目,菜单栏读取数据后自动生成,结果用到了双重布局 父物体 尝试了很多方式,也看过很多大佬的文章,后来自己琢磨了一下,当子物体组件自动生成之后,使用以下以下代码效果会好一些: …...
第二届国赛铁三wp
第二届国赛 缺东西去我blog找👇 第二届长城杯/铁三 | DDLS BLOG web Safe_Proxy 源码题目 from flask import Flask, request, render_template_stringimport socketimport threadingimport htmlapp Flask(__name__)app.route(/, methods"GET"])de…...
对称二叉树(力扣101)
这道题翻译过来就是判断根节点的左右子树是否可以通过翻转,变得完全一样。如果可以,则这棵二叉树为对称二叉树。那么什么样的左右子树可以通过翻转相互变换呢?它们的节点的数值一定对称分布。那么我们就需要同时遍历左右树,不断比…...
postgresql15的停止
PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统,且因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。介绍过postgresql的启动方法,就很有必要介绍下postgresql的停止方法。 一、停止…...
3.1 Go函数调用过程
在 Go 语言中,函数调用的核心机制依赖于内存的栈区分配和指针操作,理解这一原理有助于掌握函数的执行过程。 1. 内存结构概述 在 Go 程序编译成可执行文件并启动后,操作系统会为其分配进程内存,进程内存主要分为以下区域&#x…...
Java导出通过Word模板导出docx文件并通过QQ邮箱发送
一、创建Word模板 {{company}}{{Date}}服务器运行情况报告一、服务器:总告警次数:{{ServerTotal}} 服务器IP:{{IPA}},总共告警次数:{{ServerATotal}} 服务器IP:{{IPB}},总共告警次数:{{ServerBTotal}} 服务器IP:{{IPC}}&#x…...
c++---------------------------模板进阶
1.非类型模板参数 模板参数分类类型形参与非类型形参 。 类型形参即:出现在模板参数列表中,跟在 class 或者 typename 之类的参数类型名称 。 非类型形参,就是用一个常量作为类 ( 函数 ) 模板的一个参数,在类 ( 函数 ) 模板中可…...
FPGA与ASIC:深度解析与职业选择
IC(集成电路)行业涵盖广泛,涉及数字、模拟等不同研究方向,以及设计、制造、封测等不同产业环节。其中,FPGA(现场可编程门阵列)和ASIC(专用集成电路)是两种重要的芯片类型…...
c++面试题,请使用STL的std::remove_if算法删除std::vector<int>容器中大于5的数字
请使用STL的std::remove_if算法删除std::vector容器中大于5的数字 在C 中, std::remove_if 算法并不会真正从容器中删除元素, 而是将满足条件的元素移动到容器末尾,并返回一个指向新的逻辑结束位置的迭代器。 你需要使用容器的 erase 成员函…...
阿里云-银行核心系统转型之业务建模与技术建模
业务领域建模包括业务建模和技术建模,整体建模流程图如下: 业务建模包括业务流程建模和业务对象建模 业务流程建模:通过对业务流程现状分析,结合目标核心系统建设能力要求,参考行业建 模成果,形成结构化的…...
快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)
本文基于服务器端环境展开,使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版,仅包含Conda和Python,如果只做深度学习,可使用miniconda。 [注]:Anaconda、Conda与Miniconda Conda:创建和管…...
智能风控 数据分析 groupby、apply、reset_index组合拳
目录 groupby——分组 本例 apply——对每个分组应用一个函数 等价用法 reset_index——重置索引 使用前编辑 注意事项 groupby必须配合聚合函数、 关于agglist 一些groupby试验 1. groupby对象之后。sum(一个列名) 2. groupby对象…...
Linux(Centos 7.6)命令详解:iconv
1.命令作用 将给定文件的编码从一种编码转换为另一种编码(Convert encoding of given files from one encoding to another) 2.命令语法 Usage: iconv [OPTION...] [FILE...] 3.参数详解 OPTION: 输入/输出格式规范: -f, --from-codeNAME,原始文本编码-t, --t…...
MySQL实现批量表分区完全示例
对于单表大数据量大的问题,如果数据支持分片,使用表分区是个不错的选择,那么MySQL是如何实现表分区的? 一、表分区条件 1.数据库存储引擎支持:InnoDB 和 MyISAM引擎 2.数据库版本支持:MySQL 5.1以后&…...
缓存商品、购物车(day07)
缓存菜品 问题说明 问题说明:用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大。 结果: 系统响应慢、用户体验差 实现思路 通过Redis来缓存菜品数据,减少数据库查询…...
开发环境搭建-1:配置 WSL (类 centos 的 oracle linux 官方镜像)
一些 Linux 基本概念 个人理解,并且为了便于理解,可能会存在一些问题,如果有根本上的错误希望大家及时指出 发行版 WSL 的系统是基于特定发行版的特定版本的 Linux 发行版 有固定组织维护的、开箱就能用的 Linux 发行版由固定的团队、社…...
QT 使用QSqlTableModel对数据库进行创建,插入,显示
文章目录 效果图概述功能点代码分析初始数据插入数据数据显示 总结 效果图 概述 本案例用于对数据库中的数据进行显示等其他操作,其他表格筛选,过滤等功能可看此博客 框架:数据模型使用QSqlTableModel,视图使用QTableView&#x…...
26、正则表达式
目录 一. 匹配字符 .:匹配除换行符外的任意单个字符。 二. 位置锚点 ^:匹配输入字符串的开始位置。 $:匹配输入字符串的结束位置。 \b:匹配单词边界。 \B:匹配非单词边界。 三. 重复限定符 *:匹配…...
vue 数据双向绑定无效 明明值修改了 页面却没有变化
在 Vue.js 中,数据双向绑定通常通过 v-model 指令来实现。如果你修改了数据但页面没有更新,可能是因为以下几个原因之一: 1. 检查 data 函数 确保你的数据属性是在 Vue 实例的 data 函数中声明的,并且是响应式的。例如ÿ…...
【深度学习】3.损失函数的作用
损失函数的作用 假设把猫这张图片分成四个像素点,分别为:56、231、24、2(实际应该是三维的,因为还有颜色通道的维度,这里简化成二维)。 像素点拿到以后,进行三分类,粉红色为第一组W…...
使用 Aryn DocPrep、DocParse 和 Elasticsearch 向量数据库实现高质量 RAG
作者:来自 Elastic Hemant Malik 及 Jonathan Fritz 组织依靠自然语言查询从非结构化数据中获取见解,但要获得高质量的答案,首先要进行有效的数据准备。Aryn DocParse 和 DocPrep通过将复杂文档转换为结构化 JSON 或 markdown 来简化此过程&a…...
Vue3初学之Element Plus Dialog对话框,Message组件,MessageBox组件
Dialog的使用: 控制弹窗的显示和隐藏 <template><div><el-button click"dialogVisible true">打开弹窗</el-button><el-dialogv-model"dialogVisible"title"提示"width"30%":before-close&qu…...
【面试】Java 记录一次面试过程 三年工作经验
2025 个人工作经验与基础概念 工作挑战及解决方式:这需要根据个人实际工作经历来回答,例如在项目中遇到性能瓶颈,通过代码优化、数据库索引调整或引入缓存机制等方式解决。单例模式: 常见的实现方式有饿汉式、懒汉式(…...
1/20赛后总结
1/20赛后总结 T1『讨论区管理员』的旅行 - BBC编程训练营 算法:IDA* 分数:0 damn it! Ac_code走丢了~~(主要是没有写出来)~~ T2华强买瓜 - BBC编程训练营 算法:双向DFS或者DFS剪枝 分数:0 Ac_code…...
Linux 高级路由与流量控制-用 tc qdisc 管理 Linux 网络带宽
大家读完记得觉得有帮助记得关注和点赞!!! 此分享内容比较专业,很多与硬件和通讯规则及队列,比较底层需要有技术功底人员深入解读。 Linux 的带宽管理能力 足以媲美许多高端、专用的带宽管理系统。 1 队列࿰…...
大模型GUI系列论文阅读 DAY1:《基于大型语言模型的图形用户界面智能体:综述》(6.6W 字长文)
摘要 图形用户界面(Graphical User Interfaces, GUIs)长期以来一直是人机交互的核心,为用户提供了直观且以视觉为驱动的方式来访问和操作数字系统。传统上,GUI交互的自动化依赖于基于脚本或规则的方法,这些方法在固定…...
【组件库】使用Vue2+AntV X6+ElementUI 实现拖拽配置自定义vue节点
先来看看实现效果: 【组件库】使用 AntV X6 ElementUI 实现拖拽配置自定义 Vue 节点 在现代前端开发中,流程图和可视化编辑器的需求日益增加。AntV X6 是一个强大的图形化框架,支持丰富的图形操作和自定义功能。结合 ElementUI,…...
考研408笔记之数据结构(三)——串
数据结构(三)——串 1. 串的定义和基本操作 本节内容很少,重点是串的模式匹配,所以对于串的定义和基本操作,我就简单提一些易错点。另外,串也是一种特殊的线性表,只不过线性表是可以存储任何东…...
Java 和 JavaScript 的区别
尽管名字相似,JavaScript 的名字中带有 “Java”,确实让很多人误以为它与 Java 有紧密联系。但实际上,它们是完全不同的语言,只是在 JavaScript 的发展历史中与 Java 有一定的关联。 1. JavaScript 的诞生背景 时间点࿱…...
Web3与传统互联网的对比:去中心化的未来路径
随着互联网技术的不断发展,Web3作为去中心化的新兴架构,正在逐步改变我们的网络体验。从传统的Web2到Web3,互联网的演进不仅是技术的革新,更是理念的变革。那么,Web3与传统互联网相比,到底有何不同…...