ホストファイルを使用して複数のサーバーにログインし、稼働時間、ホスト名-I、およびホスト名を実行するスクリプトを作成しようとしています。
これまでのスクリプト
echo"" ;
echo "hostname:" $(ssh $HOST hostname) ;
echo "IP:" $(ssh $HOST hostname -I) ;
echo "uptime" $(ssh $HOST uptime) ;
echo"" ;
私の目標を達成するための最良の方法は何ですか?
ベストアンサー1
端末からすべての出力が欲しいとしましょう。
#!/bin/bash
hosts_file=/path/to/file
username=youruser
while read -r host; do
hostname=$(ssh "${username}@${host}" hostname)
ip_addr=$(ssh "${username}@${host}" hostname -I)
uptime=$(ssh "${username}@${host}" uptime)
echo
{
echo "Hostname:?$hostname"
echo "IP:?$ip_addr"
echo "uptime:?$uptime"
} | column -s\? -t
echo
done <"$hosts_file"
これは、ホスト_ファイルの各行を繰り返すことで、行全体をに割り当てますhost
。次に、、、およびhostname
をリモートシステムの対応する結果にip_addr
設定します。uptime
その後、これらの結果を列形式で再表示します。