bashスクリプトを介して複数のLinuxホストからlocalhostにディレクトリをインポートしようとしています。ただし、このhostname
コマンドはリモートホストではなくローカルホストからの出力を表示します。すべてのサーバーのディレクトリ構造は/home/user/HOSTNAME-BCKPです。
#!/bin/bash
for i in $(cat hosts);
do
scp -r $i:/home/user/`hostname`-BCKP/home/user/ALL-BCKPs/;
done
答え1
必要に応じてhostname
- コマンドを表示離れてホスト名を使用するには、リモートホストで実行する必要があります。
これを連想配列として読んで繰り返すことができます。
#!/bin/bash -
declare -A myhosts
for item in $(cat hosts); do
myhosts[$item]="$(ssh $item 'hostname')"
done
for key in "{!myhosts[@]}" ; do
scp -r $key:/home/user/${myhosts[$key]}-BCKP /home/user/ALL-BCKPs/
done
ただし、これを複数回実行するには、各行にホストとホスト名のペアを含むファイルを作成することをお勧めします。
whileループから読み取ることができます。
while read -r myhost myhostname; do
# do something with $myhost and $myhostname
done < yourfile