我有很多文件需要合并为一个。是否有一个命令可以用来将不同服务器上的所有主机文件收集到一个位置。
答案1
好吧,如果您有一个服务器列表,与 ssh 具有相同的用户,您可以执行一个简单的脚本,例如:
#!/bin/bash
for i in `more my_servers.txt`
do
scp $i:/etc/sudoers $i-sudoers
done
但是,默认权限是/etc/sudoers
400,这意味着只有root可以读取它。
接下来我建议的,也是我推荐的,是像 Ansible 这样的工具。它通过 ssh 运行,通过一个简单的剧本,您就可以收集您想要的所有文件。要求:
- 安装ansible
- 设置清单文件,其中列出您的服务器
- 拥有 ssh 访问权限和 sudo 帐户(因为 sudoers 的权限为 400)
然后您将使用该fetch
模块,如下所示:
---
- hosts: all
remote_user: yoursshuser
tasks:
- name: fetch
fetch:
src: /etc/sudoers
dest: /tmp/{{ inventory_hostname }}-sudoers
become: yes
用于ansible-playbook playbook.yml -i yourinventoryfile
运行剧本。
就是这样。