1つにマージする必要があるファイルがたくさんあります。別のサーバー上のすべてのホストファイルを1つの場所に収集するために使用できるコマンドはありますか?
答え1
sshと同じユーザーを持つサーバーのリストがある場合は、次の簡単なスクリプトを実行できます。
#!/bin/bash
for i in `more my_servers.txt`
do
scp $i:/etc/sudoers $i-sudoers
done
ただし、デフォルトの権限は/etc/sudoers
400なので、ルートのみを読み取ることができます。
次に、私が提案して推薦するのはAnsibleのようなツールです。 SSHを介して実行され、簡単なスクリプトを使用して任意のファイルを収集できます。必要:
- アンサーブルインストール
- サーバーを一覧表示するマニフェストファイルの設定
- SSHアクセス権とsudoアカウントが必要です(sudoユーザーには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
。
それはすべてです。