Передача двоичных данных для завихрения, не используя @file

rm sequence_1_{0000..0999}.hmf
rm sequence_1_{1000..1999}.hmf
rm sequence_1_{2000..2999}.hmf
...

работал бы также в Bash.

31
30.05.2013, 03:00
2 ответа

Можно передать данные в завихрение через STDIN как так:

echo -e '...data...\n' | curl -X POST --data-binary @- http://foo.com

@- говорит curl сдерживаться от STDIN.

Передавать двоичные данные по каналу для завихрения (например):

echo -e '\x03\xF1' | curl -X POST --data-binary @- http://foo.com
46
27.01.2020, 19:38
  • 1
    Но это все еще не позволяет двоичным данным быть частью текста вихревой команды. Таким образом, разве это не возможно? –  Kirk Woll 30.05.2013, 16:50
  • 2
    То, что Вы просите, не звучит выполнимым. Данные к вихревой команде можно или передать по каналу в завихрение или вытянуть в через <имя файла> средство. К моему знанию нет никакого другого метода. –  slm♦ 30.05.2013, 17:58
  • 3
    На самом деле Ваш ответ прекрасен - Ваш пример должен просто использовать двоичный файл вместо этого. :) т.е. echo -e '\x03\xF1' | curl -X POST --data-binary @- http://foo.com Где \x03\xF1 необработанные двоичные данные как шестнадцатеричные, который является в значительной степени точно, что я хочу. –  Kirk Woll 30.05.2013, 19:31
  • 4
    Большой. Я не следовал за Вами полностью. Таким образом, Вы выступаете требуемые для передачи по каналу двоичных данных в завихрение, я думал, что Вы просили что-то еще. Довольный это работало на Вас. –  slm♦ 30.05.2013, 20:01
  • 5
    я попробовал это: cat 1.jpg | curl -X POST --data-binary @- http://foo.com. Обработанный как очарование. Для проверки я также попробовал: cat 1.jpg | md5sum и md5sum 1.jpg. Они оба возвратили то же значение. –  dimitarvp 30.05.2014, 21:53

Добавляя к этот ответ , команда echoпо умолчанию добавляет новую строку к своему выводу. Это добавляет \nв конец ваших двоичных данных, поэтому curl также получит этот символ в качестве входных данных.

Чтобы избежать этого, вы можете использовать команду printfили переключатель -nследующим образом:

printf '\x03\xF1' | curl -X POST --data-binary @- http://foo.com

или

echo -en '\x03\xF1' | curl -X POST --data-binary @- http://foo.com

Таким образом, к вводу curl не будет добавлена ​​новая строка, и байты, передаваемые curl, будут точно такими же, как вы передаете echo.

0
27.01.2020, 19:38

Теги

Похожие вопросы