0

このリンクのcurlとbaseを使用して、別のジョブの結果をプッシュする外部モニタージョブがあります。

外部ジョブの監視

ジョブを作成した後、指定された URL に HEX でエンコードされたボディを使用して curl コマンドを実行するだけで、ビルドが作成され、出力が追加されますが、代わりに得られるのは私の出力の一部です。テキストと残りは次のような奇妙な文字で表示されます:

Started
Asking akamai to purge this urls:
http://xxx/sites/all/modules/custom/uk.png     http://aaaaaasites/all/modules/custom/flags/jp.png
<html><head><title>401 Unauthorized</title>    </h�VC��&�G����CV�WF��&��VC�������R&R��BWF��&��VBF�66W72F�B&W6�W&6S�����&amp;�G�����F����F�RW&�F �6�V6�7FGW2�bF�R&WVW7B�2��F�RF��RF�v�B�2��6�Ɩ�r&6�w&�V�B��"F�6�V6�7FGW2�bF�RF�6�W@�v�F��rf�"���F�W&vRF��6O request please keep in mind this is an estimated time
Waiting for another 60 seconds
Asking akamai to purge this urls:
...
..
..

これが私がやっている方法です:

export output=`cat msg.out|xxd -c 256 -ps`

curl -k -X POST -d "<run><log encoding=\"hexBinary\">$output</log><result>0</result>  <duration>2000</duration></run>" https://$jenkinsuser:$jenkinspass@127.0.0.1/jenkins/job/akamai_purge_results/postBuildResult -H'.crumb:c775f3aa15464563456346e'

そのファイルを cat すると問題なく、vi で編集しても問題はありません。

これを修正する方法はありますか?

16進エンコーディングの問題でしょうか?( xxd の結果で hex/enc/dec ページを試してみましたが、うまく見えます)

ありがとう。

4

1 に答える 1

1

私は同じ問題を抱えていて、これに出くわしました: http://blog.markfeeney.com/2010/01/hexbinary-encoding.html

そのページから、次のコマンドを使用して必要なエンコーディングを取得できます。 echo "Hello world" | hexdump -v -e '1/1 "%02x"' 48656c6c6f20776f726c640a

説明からの抜粋:

それで、それは一体何ですか?-v は、出力内の重複データを抑制しないことを意味し、-e はフォーマット文字列です。hexdump は -e 引数のフォーマットに非常にこだわっています。引用符に注意してください。1/1 は、入力で検出された 1 バイトごとに、次の書式設定パターンを 1 回適用することを意味します。これは man ページのデフォルトの動作のように聞こえますが、1/1 はオプションではありません。/1 も機能しますが、1/1 は非常にわずかに読みやすいです、IMO. 「%02x」は、標準発行の printf スタイルのフォーマット コードです。

したがって、あなたの場合、これを行います(インライン変数を優先して「エクスポート」を削除します) OUTPUT=`cat msg.out | hexdump -v -e '1/1 "%02x"'` curl -k -X POST -d "<run><log encoding=\"hexBinary\">$OUTPUT</log><result>0</result> <duration>2000</duration></run>" https://$jenkinsuser:$jenkinspass@127.0.0.1/jenkins/job/akamai_purge_results/postBuildResult -H'.crumb:c775f3aa15464563456346e'

于 2014-09-01T19:28:08.980 に答える