変更しようとしています。」ホスト名 - 即時「forループに変数を使用する一部のコンピュータでは、収集したいと思います。」ホスト名-f「サーバー自体の変数を使用して自動的に変更します。実行すると通知します。」パラメータの数が無効です。」
注文する:
for i in `cat /tmp/serverlist`; do
echo "Hostname in $i"
ssh -o StrictHostKeyChecking=no root@$i "hostname=$(hostname -f); hostnamectl --transient set-hostname $hostname"
done
答え1
二重引用符を使用しているため、$hostname
起動前に変数がローカルコンピュータで拡張されているため、空になる可能性ssh
があります。次の場合、同じエラーが発生する可能性があります。
$ hostnamectl --transient set-hostname
Too few arguments.
リモートホストで拡張したいので、一重引用符を使用してください(他の悪いケースも修正しました)。
while IFS= read -r i; do
ssh -o StrictHostKeyChecking=no "root@$i" 'hostnamectl --transient set-hostname "$(hostname -f)"'
done