Преобразование команды ncat в Windows из примера Mac/Nix

Я работаю с Google Healthcare API, и в этом пошаговом руководстве используется netcat для отправки сообщения HL7 адаптеру MLLP.

(Я использовал nmap для загрузки ncat для Windows)

У меня адаптер работает локально, но команда, которую они предоставляют, написана для пользователей Mac/Nix, и я нахожусь в 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 из того, что я исследовал.

Я следил за этим пошаговым руководством:https://cloud.google.com/healthcare/docs/how-tos/mllp-adapter

1 ответ

Мы действительно преобразуем команду echo, а не команду ncat. Синтаксис кодов ascii в PowerShell отличается.

[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