LINUX.ORG.RU
решено ФорумAdmin

curl: можно ли добиться одинакового вывода в интерактивном и неинтерактивном режимах?

 


0

1

Доброго времени суток

Сабж

Мало того, что поведение curl без поллитры и гугла не разберёшь ( ниже выстраданный пример для работы с SNI ). Он ещё за каким-то фигом существенно меняет поведение в зависимости от того, куда идёт вывод - в консоль или не в консоль.

В консоль:

# curl -s --insecure --header "Host: mysite.ru" --resolve mysite.ru:443:10.0.0.1 -I https://mysite.ru
HTTP/1.1 200 200
Date: Thu, 19 Jul 2018 17:17:29 GMT
Server: Apache/2.4.12 (Unix) OpenSSL/1.0.1g mod_jk/1.2.42
Set-Cookie: JSESSIONID=BFA0A77E3847BBCB5C9B5E0D0857219F; Path=/; Secure; HttpOnly
Content-Type: text/html;charset=windows-1251

Редирект:

# test=$( curl -s --insecure --header "Host: mysite.ru" --resolve mysite.ru:443:10.0.0.1 -I https://mysite.ru )
# echo $test
 Content-Type: text/html;charset=windows-1251EF31821180D; Path=/; Secure; HttpOnly

Можно ли заставить этот креатива кусок работать предсказуемо ?

★★★★★
Ответ на: комментарий от anonymous

Либо я тебя не понял, либо не помогает

# test=$( curl -s --insecure --header "Host: mysite.ru" --resolve mysite.ru:443:10.0.0.1 -I https://mysite.ru 2>&1 )
# echo $test
 Content-Type: text/html;charset=windows-1251AB842104300; Path=/; Secure; HttpOnly

К сожалению, я не пьян, и не проглядел вывод STDERR в консоль. curl действительно выводит совершенно разные данные в интерактивном и не интерактивном режимах

router ★★★★★
() автор топика
Последнее исправление: router (всего исправлений: 1)

Ух ты, это явно баг. Кривые управляющие последовательности. Т.е. всё есть, но вместо перевода строки пишет перевод каретки в начало строки

# echo $test | hexdump -C
00000000  48 54 54 50 2f 31 2e 31  20 32 30 30 20 32 30 30  |HTTP/1.1 200 200|
00000010  0d 20 44 61 74 65 3a 20  54 68 75 2c 20 31 39 20  |. Date: Thu, 19 |
00000020  4a 75 6c 20 32 30 31 38  20 31 37 3a 32 36 3a 35  |Jul 2018 17:26:5|
00000030  36 20 47 4d 54 0d 20 53  65 72 76 65 72 3a 20 41  |6 GMT. Server: A|
00000040  70 61 63 68 65 2f 32 2e  34 2e 31 32 20 28 55 6e  |pache/2.4.12 (Un|
00000050  69 78 29 20 4f 70 65 6e  53 53 4c 2f 31 2e 30 2e  |ix) OpenSSL/1.0.|
00000060  31 67 20 6d 6f 64 5f 6a  6b 2f 31 2e 32 2e 34 32  |1g mod_jk/1.2.42|
00000070  0d 20 53 65 74 2d 43 6f  6f 6b 69 65 3a 20 4a 53  |. Set-Cookie: JS|
00000080  45 53 53 49 4f 4e 49 44  3d 39 31 30 32 39 43 37  |ESSIONID=91029C7|
00000090  34 33 41 44 41 41 46 46  31 30 30 44 42 39 41 42  |43ADAAFF100DB9AB|
000000a0  38 34 32 31 30 34 33 30  30 3b 20 50 61 74 68 3d  |842104300; Path=|
000000b0  2f 3b 20 53 65 63 75 72  65 3b 20 48 74 74 70 4f  |/; Secure; HttpO|
000000c0  6e 6c 79 0d 20 43 6f 6e  74 65 6e 74 2d 54 79 70  |nly. Content-Typ|
000000d0  65 3a 20 74 65 78 74 2f  68 74 6d 6c 3b 63 68 61  |e: text/html;cha|
000000e0  72 73 65 74 3d 77 69 6e  64 6f 77 73 2d 31 32 35  |rset=windows-125|
000000f0  31 0d 20 0d 0a                                    |1. ..|
000000f5
router ★★★★★
() автор топика
Ответ на: комментарий от router

Нет, это я идиот. Или спать нужно больше. Штатное поведение bash при попытке запихнуть в переменную многострочный текст

router ★★★★★
() автор топика
Ответ на: комментарий от router

echo "$test" по идее должно отобразить все правильно

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.