0

我有一个外部监视器工作,我正在使用 curl 将另一个工作的结果推送给它,并基于此链接:

监控外部作业

创建作业后,我只需要使用以十六进制编码的正文运行 curl 命令到指定的 url,然后将创建一个构建并将输出添加到其中,但我得到的是我的输出的一部分文本和其他奇怪的字符,如下所示:

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 编辑它,我也看不出它有任何问题。

你们知道如何解决这个问题吗?

十六进制编码有问题吗?(我用 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 次。尽管这听起来像是手册页中的默认行为,但 1/1 不是可选的。/1 也可以,但是 1/1 的可读性非常好,IMO。"%02x" 只是标准问题 printf 样式的格式代码。

所以在你的情况下,你会这样做(删除'export'以支持内联变量) 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 回答