Temat: CURL - nagłówek i dane do różnych zmiennych oraz timeouty w uhttpd
Cześć,
Pobieram obraz CURLem:
WWW=$( /usr/bin/curl -m 3 -D - "http://1.2.3.4/image.jpg" | base64 )Zmienna WWW przyjmuje wartość:
HTTP/1.1 200 OK
Date: Sat, 04 Jul 2020 22:04:39 GMT
Server: Apache/2.4.25 (Debian)
Content-Type: image/jpeg; charset="UTF-8"
Content-Length: 53133
Via: 1.1 localhost
˙Ř˙ŕ JFIF ˙Ű C
2!=,.$2I@LKG@FEPZsbPU
;!!;|SFS||||||||||||||||||||||||||||||||||||||||||||||||||˙Ŕ Đ
˙Ä µ } !1A
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwx—™š˘Ł¤Ą¦§¨©Ş˛ł´µ¶·¸ąşÂĂÄĹĆÇČÉĘŇÓÔŐÖ×ŘŮÚáâăäĺćçčéęńňóôő
˙Ä µ w !1AQaq"2
$4á%ń&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚„…†‡—™š˘Ł¤Ą¦§¨©Ş˛ł´µ¶·¸ąşÂĂÄĹĆÇČÉĘŇÓÔŐÖ×ŘŮÚâăäĺćçčéęň¶1KžŐPotrzebuję wyciągnąć HEAD ze zmiennej WWW, aby wykonać obliczenia (kod odpowiedzi serwera nie wystarczy, wtedy wystarczyłoby --fail w curl), jeśli obliczenia będą pozytywne, chciałem wydrukować BODY ze zmiennej WWW. Jak mogę wyciąć wszystko od wystąpienia dwóch znaków "\n\n"?
Na ten moment działa mi to tak:
HEAD=$( echo "$WWW" | base64 --decode | head -n 6 )
BODY=$( echo "$WWW" | base64 --decode | tail -n +8 )...ale nie zawsze będę otrzymywał 6 linijek nagłówka.
Prawie mi się udało z tym:
HEAD=$( echo "$WWW" | base64 --decode | awk '/^$/{exit} 1' )
HEAD=$( echo "$WWW" | base64 --decode | awk -v RS= 'NR==1' )