HudsonのコマンドラインでのPuTTYの使用


1

HudsonジョブのコマンドラインでPuTTYを使用しようとしています。

コマンドは次のとおりです。

putty -ssh -2 -P 22 USERNAME@SERVER_ADDR -pw PASS -m command.txt

「command.txt」は、SSHを介してサーバーで実行するシェルスクリプトです。

このコマンドをWindowsコマンドプロンプトから起動すると、機能します。シェルスクリプトはサーバーマシンで実行されます。

このバッチコマンドで構成されたHudsonジョブのビルドを起動すると、機能しません。ビルドは実行中...および実行中...および実行中です。

Hudsonジョブから外部プログラム(つまり、PuTTY)を起動することは可能ですか?

PS:SSHプラグインを試しましたが、...本当に良いプラグインではありません(ビルド前/ビルド後、起動したコマンドの失敗ステータスはHudsonでキャッチされないなど)

ビルドログは次のとおりです。

[workspace] $ cmd /c call C:\WINDOWS\TEMP\hudson7429256014041663539.bat

C:\Hudson\jobs\Artifact deployer\workspace>putty -ssh -2 -P 22 USER@SERV_ADD -pw PASS -m com.txt 
Le build a été annulé
Finished: ABORTED

そして、同時に(停止後)Hudson.err.logファイル:

3 juin 2010 18:27:28 hudson.model.Run run
INFO: Artifact deployer #6 aborted
java.lang.InterruptedException
    at java.lang.ProcessImpl.waitFor(Native Method)
    at hudson.Proc$LocalProc.join(Proc.java:179)
    at hudson.Launcher$ProcStarter.join(Launcher.java:278)
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:83)
    at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:58)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
    at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:601)
    at hudson.model.Build$RunnerImpl.build(Build.java:174)
    at hudson.model.Build$RunnerImpl.doRun(Build.java:138)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:416)
    at hudson.model.Run.run(Run.java:1241)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:124)

私のシェルスクリプトは、サーバー上の "hello.txt"ファイルに "hello"を書き込むだけで、何も実行されません。


ビルドの実行中および実行中のHudsonログファイルの内容 また、ビルドログに何かが印刷されていますか?command.txtにログを追加して、実行を開始しているかどうかを確認することをお勧めします。

元の投稿をログで更新しました。ps:USER、PASS、およびSERV_ADDは置き換えられた値です。

回答:


1

問題は、Hudsonを実行するユーザー名のキーを受け入れる必要があることです。したがって、ローカルシステムアカウントでHudsonを実行しない場合(これは悪い考えです)、Hudsonアカウントでログインし、キーを受け入れる必要があります。その後、Hudsonビルドが機能します。

Hudsonがローカルシステムアカウントで実行されている場合、オプションがあるかもしれませんが、それが機能するかどうかはわかりません。まず、Hudsonサービスがデスクトップと対話できるようにする必要があります。次に、管理者としてサーバーにログインします。あなたが物理的に箱にいる必要があるかどうかはわかりません。PlinkまたはPuTTYを起動し、ポップアップが表示されることを期待します。その後、キーを受け入れて、すべてが正常に機能するはずです。

別のオプションは、runasコマンドを使用してPlinkを起動し、(異なる)ユーザー資格情報を提供することです。

もう1つのオプションは、QuestのPlinkを取得して、オプションを使用すること-auto_store_key_in_cacheです。


はい、ハドソンはローカルシステムで実行されています。デスクトップで動作するオプションをチェックしましたが、成功しませんでした。実際、ユーザー名Aを使用してローカルマシンにログオンし、ユーザー名Bを使用してサーバーマシンにログオンします(puttyまたはplinkを使用)。だから、問題はそれらの2つの異なるユーザー名に起因していますか?サーバーマシンは私のものではないので(クライアント1)、ユーザーアカウントを変更できません。私のローカルアカウントに関するサメのこと。サーバーのユーザー名(およびパスワード)を使用してHudsonサーバーを起動しようとしますが、他の種類のエラーが発生する可能性があります。とにかく、答えてくれてありがとう。
kij

私が恐れていたように、ハドソンを開始するために私のサーバーアカウントを使用することはうまくいきませんでした、なぜならこのaccはローカルネットワークで知られていないからです。だから、最初の「解決策」について、ハドソンがローカルシステムで実行されており、「デスクトップと対話する」オプションがアクティブになっている場合、すべてのセッションキーを消去し、サーバーに手動でログインしても(そして、初めて)、その後、ハドソンのジョブはまだキー受け入れメッセージなしでサーバーにアクセスできません:/
kij

次の前提条件。まず、あなた自身が管理者でなければなりません。次に、VNCのようなリモートソフトウェアを使用する必要があります。Windowsには、ターミナルサーバーセッションではなくローカルログインのように見えるためです。手順に従って、サーバーにログインします。その後、ハドソンを起動し、ポップアップが表示されるかどうかを確認します。そうでない場合は、plinkの代わりにputtyでテストジョブを作成し、ポップアップが表示されるかどうかを確認します。ところで、クライアント管理者にローカルでサーバーにログインしてキーを受け入れることができるかどうかを尋ねることもできます。
ピーターシューツェ

こんにちはピーター、私はダウンロードし、オプション-auto_store_key_in_cacheでQuestのplinkを使用しました。再びあなたの助けをありがとう(そしてもちろんデイブ:))
kij

plinkを使って正確に何をしましたか?実行するだけですか?
ティム

1

PuTTYはウィンドウを作成します。それがおそらくハドソン(ウィンドウシステムにアクセスできない)にぶら下がっている理由です。おそらくPlinkの方がいいでしょう。ただし、PuTTYのインストール(0.60)では、Plinkのコマンドラインオプションは完全に壊れています。PuTTYのデフォルト以外でサーバーにログインできませんでした。

理論的には、PuTTYセッションをセットアップし、それをPlinkで使用できます(経由-load)。ただし、Hudsonが実行されているユーザーに設定済みのセッションを取得するという問題が発生します。


コマンドプロンプトからPlinkは正常に動作します。しかし、ハドソンからは、レジストリに登録するキーを受け入れるように求めています。(Hudsonからのサーバーへの最初の接続であるため)キーを登録するために最初に手動で接続しようとしましたが、(puttyまたはplinkから)この質問をしませんでした。私は何をすべきか ?ps:オプション-loadは、構成済みのセッションでは機能しません。ps2:コマンドラインの実行= plink -sshサーバー-lユーザー-pwパス-mスクリプト
-kij

パテセッションをクリーンアップしてから、サーバーに再度接続します。キャッシュにキーを保存するように求められ、受け入れられました。次に、ハドソンのジョブのビルドを起動しますが、再び、キーを受け入れるための同じメッセージ...ですから、ハドソンから、パテセッションは試行されたように動作していないと思います(-load plinkオプションと同じ間違った動作) hudsonから別のマシンに接続し、シェルスクリプトを実行しますか?
kij

1

Peter Schuetzeが指摘したように、Hudsonを実行するユーザー名のキーを受け入れる必要があります。これに対する私の解決策は、標準のパテとplinkを使用するだけです:

  1. パテで必要な接続の詳細を使用してセッションを設定し、保存します
  2. 一度接続して、キーを受け入れます
  3. regeditを使用して、[HKEY_CURRENT_USER \ Software \ SimonTatham]を完全にエクスポートします
  4. 「HKEY_CURRENT_USER」を「HKEY_USERS \ S-1-5-18」に置き換えます。これは、ローカルシステムアカウントのセキュリティ識別子です
  5. .regファイルを保存し、ダブルクリックしてインポートします

これにより、受け入れられたホストキーと、ローカルシステムアカウントとのplink接続を行うときに使用可能なセッションのすべての設定ができました。

特に、そのセッションでパスワードで保護されていない秘密鍵ファイルを設定する場合に役立ちます。


0

別のマシンのコンテキストに入るための私のお気に入りの方法は、ターゲットマシンでスレーブを作成し、スクリプトを実行することです。暗号化されていないパスワードをハードドライブに保存するために、これを広範囲に使用しています。その方法については、ハドソンのドキュメントをご覧ください。


私はすでにそのように考えています(私が思うに最高です)が、サーバーにHudsonスレーブをインストールする権利がありません。私は以前の投稿であなたの編集を見ました、明日は認証キーを自動的に受け入れるためのオプションをチェックします、私はplinkの新しいバージョンをダウンロードする必要があります私はわずか0.60です再びあなたの助けのために。
kij
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.