Portál AbcLinuxu, 4. června 2024 10:53


Dotaz: TXT data z URL adresy poslat do Stdout, jak?

1.9.2020 18:53 cvp | skóre: 18
TXT data z URL adresy poslat do Stdout, jak?
Přečteno: 276×
Odpovědět | Admin
Potřebuji stahovat data z URL adresy a ukládat je do STDOUT. Pozor, data z URL adresy se mění každou chvíli a do STDOUT potřebuji načíst vždy nové. Tj. aby to neprovádělo cache.

Pomůžete jak tohle udělat? Aby do STDOUT šli vždy čerstvé data z URL?

Eventuálně. Data na URL adrese musí mít nějakou PHP hlavičku no-cache? Půjde o měnící se data v TXT soubor.

Strašně moc děkuji za výpomoc.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.9.2020 18:58 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Použijte wget nebo curl.
1.9.2020 19:01 PetebLazar | skóre: 33 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevím jak se ukládá do STDOUT, ale zobrazit na STDOUT by možná šlo takto.

wget -q -O - http://domain/path/file

1.9.2020 19:21 cvp | skóre: 18
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
wget -q -O - 'http://example.com/data.txt' > /dev/stdout

Na internetu jsem ještě našel, že u STDOUT se používá sync a sleep. To tam snad být nemusí, ne? :)

sync

sleep 5
1.9.2020 19:28 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pridaj hlavicku pre http, ze nech nema poslat cache verziu.
debian.plus@protonmail.com
1.9.2020 19:33 cvp | skóre: 18
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Data do souboru TXT vkládám přes PHP script na serveru pomocí: file_put_contents("data.txt", $raw_data);

Napadlo mně přes .htaccess udělat data.php, které bude "přesměrovávat" na data.txt, přičemž do data.php budu moci dát header hlavičku no-cache. Jen nevím, zda-li to není zbytečně složité. file_put_contents by cachovat neměl. Prostě zapíše nové data.
1.9.2020 22:21 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Ja som myslel na strane klienkta cez toto
debian.plus@protonmail.com
1.9.2020 20:23 cvp | skóre: 18
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak bohužel je tam cache. Nejlepším řešením je na konec URL přidat čas, který se bude pořád měnit. Jak to do BASH přidat, aby místo 123456 byl vždy čas?

date +%s

wget -q -O - 'http://example.com/data.txt?123456' > /dev/stdout
1.9.2020 20:34 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Pokiaľ je po ceste slušne nakonfigurovaný Proxy Server, tak by mal stačiť parameter --no-cache pre wget. Pokiaľ je ten Proxy Server nakonfigurovaný neslušne, tak by malo stačiť prepnúť URL z HTTP na HTTPS.
1.9.2020 20:38 PetebLazar | skóre: 33 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
$(date +%Y%m%d%H%M%S%N)

by mělo vrátit datum_cas_v_nanosekundach

wget -O - "http://example.com/data.txt?$(date +%Y%m%d%H%M%S%N)"
1.9.2020 21:30 cvp | skóre: 18
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Další věc je výpadek webhostingu nebo vrácení prázdného souboru. Je možné ošetřit získání dat? Napadlo mně, wget použít do IF, zda-li obsahuje třeba dostatek znaků. Pak toto bude možné poslat do > stdout. Poradíte ještě? :)
1.9.2020 21:41 PetebLazar | skóre: 33 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Jedna možnost je umístit na konec generovaného .txt souboru očekávaný fixní řetězec v užitečném obsahu se jinak nevyskytující a jeho přítomností validovat úplnost staženého souboru. Pokud nebude řetězec přítomen počkat stanovený čas a pokusit se načíst soubor znovu (třeba již bude jeho nová verze dokončena).

Další možností je vytvářet nový soubor pod náhradním jménem a následně jej přesunout na cílový název (tím se snižuje doba nedostupnosti úplného obsahu, ale má to asi větší smysl u větších či déle vznikajících souborů).
1.9.2020 22:02 cvp | skóre: 18
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Bohatě stačí kontrolovat, zda-li wget něco stáhnul. Předpokládám, že pokud nastane chyba 404, tak wget nic nestáhne a když už server vrátí prázdnou stránku, tak by stačilo kontrolovat počet znaků. Jenže v bash příliš neumím. Poradíte? Dost mně to pomůže. Předem hrozně moc děkuji.
Jendа avatar 1.9.2020 22:14 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
wget vrací návratovou hodnotu. Ta je (stejně jako u většiny ostatních příkazů) 0 pokud všechno proběhlo v pořádku a ne-0 pokud došlo k chybě. Další možnost je samozřejmě udělat if [ `výstup | wc -c` -eq 0 ]; then chyba; fi. Bohužel nevím co zadat za výstup, protože nepíšeš, co s daty z wgetu děláš. Pokud je ukládáš do proměnné, tak echo "$proměnná". Osobně bych možná preferoval nepoužívat wget na stdout, ale uložit to do dočasného souboru -- bude to příjemnější když s daty zjevně chceš dělat další věci (kontrolovat validitu atd.). Tj. wget ... -O /tmp/bla.$$ a následně cat /tmp/bla.$$. Za $$ se doplňuje PID běžícího skriptu, které je na počítači v daný okamžik unikátní, takže nevadí, pokud se skript spustí vícekrát.
1.9.2020 22:49 cvp | skóre: 18
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Ukládat to nechci do souboru. Pouze data poslat do stdout. Používám Metehub.de software a ten si data z toho stdout načte.
Jendа avatar 2.9.2020 00:30 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
No to jo, ale osobně bych to možná řešil tak, že bych to uložil do souboru, pak bych ho zvalidoval, a na konci catnul. Ale jde to samozřejmě i s proměnnou.
2.9.2020 08:49 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Tiez ide ulozit do suboru v /dev/shm (uklada len do RAM) a nasledne cez cat predas tou programu.
debian.plus@protonmail.com
Jendа avatar 1.9.2020 22:16 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
Chtělo by to vidět kontext, ale obecně je divné dávat > /dev/stdout, protože programy defaultně píšou na stdout.

Dále je blbost dávat wget -O - > někam, protože -O - říká neukládej někam a > někam říká ulož to někam. Napiš přímo -O někam.
1.9.2020 22:22 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: TXT data z URL adresy poslat do Stdout, jak?
To uz moze pisat rovno: wget -O kde_ma_uloz.html
debian.plus@protonmail.com

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.