変数を使用してホスト名を変更するには、forループを使用してください。

変数を使用してホスト名を変更するには、forループを使用してください。

変更しようとしています。」ホスト名 - 即時「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

関連情報