
あるサーバーでksh / shスクリプトの一部を実行し、別のサーバーでsshを実行して残りのスクリプトを続行できますか?それとも解決策がありますか?
サーバーにアクセスするたびに認証する必要がないユーザーがいるため、キーボード操作なしであるサーバーから別のサーバーに移動できます。
私はいくつかのロジックを別のスクリプトに分割しようとしました。
MYSCRIPT="nohup ksh myscript.ksh > mylog.log &"
ssh servername ${MYSCRIPT}
これを試しましたが、他のサーバーでスクリプトを実行していないようです。
上記のコード全体はfor
ループの一部です。サーバーリストに対して同じスクリプトを実行します。
テスト目的で、リストには2つのサーバーがあります。奇妙で歪んだ理由で、最後の(または2番目の)サーバースクリプトだけが期待どおりに機能します。
Myscript.kshはすべてのサーバーに表示されます。すべてのサーバーに表示され、実行可能です。
答え1
何度もログインせずに他のサーバーで一連のコマンドを実行したいようです。これを達成するには、次のようにします。
local_command sequence
ssh remote-server << End-Of-File
remote_command 1
remote_command 2
remote_command 3
End-Of-File
これが実行され、remote_command 1
完了すると実行されますremote_command 2
。これremote_command 3
はすべてリモートサーバーに保存されます。
答え2
正直言って、あなたの表現はやや曖昧ですが、考えられる理由を追跡してみましょう。
説明はうまくいきますが、ssh-copy-id
ソースコードを参照して独自のスクリプト(OpenSSHにバンドルされているシェルスクリプト)との違いを見つけてください。
コマンドがコンピュータの1つで動作しないと言われましたが、おそらくサーバーにスクリプトが最初から起動しないようにする他の設定があります。
また、認証について言及したので、パスワードのない公開鍵認証を使用し、関連する鍵で承認されたコマンドを制限したい場合があります。man ssh
セクションを参照してくださいAUTHORIZED_KEYS FILE FORMAT
。