これが私がしたいことです。複数のホストに分散されたサービス用の.serviceファイルセットがあります。スクリプトを実行するときに、各ホストのルートパスワードを入力せずにすべてのサービスを開始または停止できるシェルスクリプトを作成したいと思います。
たとえば、スクリプトは次のコマンドを実行します。
systemctl -H host1 start service1.service
--no-ask-password オプションがありますが、これは systemctl を実行するためにオペレーティング システムを認証するのではなく、サービス デバイスが要求したときにパスワードを要求したり提供したりしないためです。
つまり、異なる認証方法が別のホストで同じユーザーを自動的に認証できない状況でパスワードを指定しようとします(例:-P {passwd}オプションがある場合)。
誰もが私がこれを達成する方法についてのアイデアを持っていますか?
答え1
「コマンドラインにパスワードを入力すること」は非常に悪い考えです。ssh
これを処理できます。
man
で作成した多くのページを読んでくださいman -k ssh
。
その後、実行すると次のようにssh
なりますssh-add
。
man ssh-copy-id
各クライアントノードにIDをコピーするには読んでください。ssh
root
今すぐssh -l root client1 systemctl ...
利用可能です。
自動化をさらに進化させるには、読んでくださいman ssh_config
。
たとえば、エイリアスを追加します。
alias c1="ssh -l root client1"
# usage: c1 systemctl ...
#
alias c1sys= "ssh -l root client1 systemctl ..."
あなたのための~/.bashrc
。