我必须连接到web服务,其中必须有pkcs12证书.我的想法是在bash脚本中使用curl(在OS X下,具体而言).
我已经了解到curl在通信中无法做的一件事就是处理pkcs12证书(.p12).我有什么选择?
我已经读过将证书转换为PEM格式会起作用(使用openssl),但是我不知道如何告诉curl它获得PEM并且应该与请求PKCS12证书的web服务进行通信.
将pkcs12转换为pem就像这样(例如),它对我有用,但是我没有成功地将它们与curl一起使用:
openssl pkcs12 -in mycert.p12 -out file.key.pem -nocerts -nodes
openssl pkcs12 -in mycert.p12 -out file.crt.pem -clcerts -nokeys
Run Code Online (Sandbox Code Playgroud)
任何提示?或者,任何卷曲的替代品?解决方案应该是基于命令行的.
我有以下情况:
我需要将子元素添加到现有的XML标记中.
我当前的XML看起来像这样,它包含一个空的(自闭)" <attr tag=.../>
":
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
...
<attr tag="00081110" vr="SQ" pos="-1" name="Referenced Study Sequence" len="-1"/>
...
</dataset>
Run Code Online (Sandbox Code Playgroud)
在转换之后它应该看起来像这样,添加/插入2个子元素(由<item>
元素包围):
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
...
<attr tag="00081110" vr="SQ" pos="-1" name="Referenced Study Sequence" len="-1">
<item id="1" pos="28" len="-1">
<attr tag="00081150" vr="UI" pos="36" name="Referenced SOP Class UID" vm="0" len="3">991</attr>
<attr tag="00081155" vr="UI" pos="44" name="Referenced SOP Instance UID" vm="0" len="3">992</attr>
</item>
</attr>
...
</dataset>
Run Code Online (Sandbox Code Playgroud)
我怎么能实现这个目标?我尝试了各种随机设置,但在我最好的镜头中,我最后用一个子元素替换父元素(tag ="00081110").
在shell脚本中,我需要找出特定应用程序是否仍在运行.这将是一个简单的任务做,如果我们的应用程序的名称将不包含任何变音(äöüàéè...).我怎么能可靠地"grep"我的问题?
shell脚本在此示例中获取应用程序名称作为参数" amétiqsiMedBüro.app ".有几个自定义副本同时运行,它们的名称不同,脚本应仅检查特定应用程序(通过param获取的应用程序)并忽略其他应用程序.
使用grep作为特定的app-name(param)时根本没有命中:
bash> ps ax | grep "amétiq siMed Büro.app"
bash>
Run Code Online (Sandbox Code Playgroud)
点击次数过多:
bash> ps ax | grep "/[A]pplications/am"
4335 ?? S 5:19.01 /Applications/ame?M^Atiq siMed Bu?M^Hro.app/Contents/MacOS/siMed2
10188 ?? S 0:03.18 /Applications/ame?M^Atiq siMed SUPPORT.app/Contents/MacOS/siMed2
Run Code Online (Sandbox Code Playgroud)
尝试手动缩小grep时再次没有命中:
bash> ps ax | grep "/[A]pplications/am" | grep "Büro"
bash>
Run Code Online (Sandbox Code Playgroud)
似乎grep在第一次出现变音字符的位置后停止工作.
我也尝试过lsof
- 没有成功.任何想法接下来要尝试什么?
运行OS X 10.7-10.9