如何通过Ansible在控制节点查看受控主机上的文件?
查看受控主机/etc/passwd的几种Ansible方法
刚好做过类似操作,给你分享几种实用的方法,能轻松在控制节点查看受控主机的/etc/passwd文件:
1. 用Ad-Hoc命令直接输出内容
最快的方式是用command模块执行cat命令,直接在控制节点的终端显示文件内容:
ansible your_host_group -m command -a "cat /etc/passwd"
把your_host_group替换成你的主机组名,或者单个受控主机的IP/主机名就行。如果想过滤特定用户(比如你刚创建的那个),可以用shell模块配合管道:
ansible your_host_group -m shell -a "cat /etc/passwd | grep your_new_user"
2. 用fetch模块把文件拉到控制节点
如果需要把文件保存到本地慢慢看,fetch模块是最佳选择,它会把受控主机的文件复制到控制节点指定目录:
- name: 拉取受控主机的/etc/passwd文件 hosts: your_host_group tasks: - name: 复制/etc/passwd到控制节点 ansible.builtin.fetch: src: /etc/passwd dest: ./managed_passwd_files/ flat: yes
dest是控制节点上保存文件的路径,执行后会在当前目录下创建managed_passwd_files文件夹- 设置
flat: yes会直接把文件存到目标目录,否则会生成./managed_passwd_files/[主机名]/etc/passwd这样的层级结构
执行完playbook后,直接打开本地的managed_passwd_files/passwd就能查看内容了。
3. 用slurp模块在Playbook中读取并解码内容
如果需要在playbook里处理文件内容(比如后续做判断),可以用slurp模块,它会返回base64编码的内容,我们再解码显示:
- name: 读取并显示受控主机的/etc/passwd hosts: your_host_group tasks: - name: 获取/etc/passwd的base64内容 ansible.builtin.slurp: src: /etc/passwd register: passwd_data - name: 解码并打印内容 ansible.builtin.debug: msg: "{{ passwd_data.content | b64decode }}"
执行这个playbook时,debug模块会直接在控制节点输出解码后的/etc/passwd内容。
内容的提问来源于stack exchange,提问作者Aryan Srivastava
相关产品推荐
相关产品推荐

