我正在使用Google Healthcare API,在演练中有一个步骤,使用netcat向MLLP适配器发送HL7消息。
(我用nmap下载了Windows的ncat)
我在本地运行适配器,但他们提供的命令是为MacNix用户编写的,而我在Windows上。
echo -n -e "\x0b$(cat hl7.txt)\x1c\x0d" | nc -q1 localhost 2575 | less
所以我试着为windows powershell重写了这个命令。
$hl7 = type hl7.txt
Write-Output "-n -e \x0b" $hl7 "\x1c\x0d" | ncat -q1 localhost 2575 | less
当我尝试这样做的时候,我得到了一个错误,"less "是无效的,而且-q1也是一个无效的命令。
如果我删除 -q1
和 | less
命令执行时没有任何输出或错误信息。
我想知道是我这里的ncat用错了还是写输出不对?
-q1参数是什么?
从我研究的结果来看,它似乎不是一个有效的ncat参数。
我们真正转换的是echo命令,而不是ncat命令。 ascii代码的语法在powerhell中是不同的。
[char]0x0b + (get-content hl7.txt) + [char]0x1c + [char]0x0d |
ncat -q1 localhost 2575
在ascii中:0b垂直制表符,1c文件分隔符,0d回车。http:/www.asciitable.com
或者这样。 `v是0b,`r是0d。
"`v$(get-content hl7.txt)`u{1c}`r" | ncat -q1 localhost 2575
如果你想用这种方式,那就是同样的事情。 这三种方式最后都是一样的。
"`u{0b}$(get-content hl7.txt)`u{1c}`u{0d}" | ncat -q1 localhost 2575