Fórum Root.cz
Hlavní témata => Software => Téma založeno: wajta 20. 05. 2019, 14:46:48
-
Zdravím,
nevím, do jaké sekce přesně můj dotaz patří, ale mám následující problém:
Mám v síti PLC, který poskytuje data přes http pomocí xml feedu. Do sítě jsem připojil Raspberry Pi s nainstalovaným posledním Raspbianem Lite a xml chci číst pomocí wget. Problém je v tom, že se dokument nenačte celý, resp. nenačte se určitá část, která je cca v první třetině dokumentu.
Zde přikládám malou ukázku:
takhle by měl soubor vypadat
<snmp>
<uptime>3192431225</uptime>
<ntptime>1558359788</ntptime>
<ipw_active>off</ipw_active>
<ipw_state>0</ipw_state>
</snmp>
a takhle se načte:
<snmp>
<uptime>3192431225</uptime>
<ntptime>1558359788</ntptime>
<ip
<ipw_state>0</ipw_state>
</snmp>
Jak je vidět, jeden element se načte jen z části, zbytek dokumentu už potom zase ok.
V čem by mohl být problém?
-
Curl sa sprava rovnako ?
Wget (curl) na inej masine (desktop/server) vie subor stiahnut korektne ?
-
Prověřil bych ten soubor v hexa editoru. Možná se tam vloudil nějaký vadný bajt.
-
Ověřte si, že ten soubor stáhnete opravdu takhle – nechtě ho wgetem nebo curl uložit přímo do souboru, a pak zkontrolujte, že tam nejsou žádné podivné znaky. Taky by pomohlo nechat si vypsat i HTTP hlavičky. Pokud ten soubor bude opravdu vypadat takhle, je to s největší pravděpodobností chyba toho HTTP serveru. Když si porovnám pravděpodobnost, že je chyba ve wgetu, která se u vás projevuje systematicky, ale nikdo jiný na ni zatím nepřišel; a pravděpodobnost, že ta chyba je v nějakém obskurním HTTP serveru implementovaném na PLC, sázel bych na ten server.
-
Vyzkoušel jsem to i pomocí curl a výsledek je stejný.
Dokument jsem si nechal ulozit na disk, nic zvláštního v něm nevidím, jen tam prostě chybí ten řádek.
V podstatě se to chová tak, že opakovaným stahováním se stáhne identická xml struktura včetně toho nedotažení, to se opakuje stále na tom samém místě.
Když se pokusím xml stáhnout z jiného pc, funguje to bez problémů.
Přijde mi, že u wget, curl chyba být nemůže, na to by určitě někdo narazil, v http serveru asi také ne, protože z jiných počítačů to funguje, nejde to jen s tím raspbianem, kde bych to chtěl realizovat.
Ještě mě napadá zkusit vyměnit UTP kabel nebo ho přehodit do jiného portu na switchi.
-
Nemyslím si, že by to bylo kabelem, TCP/IP má kontrolní součty a pakety na sebe musí navazovat, to by vadný kabel těžko zařídil. V tom serveru klidně chyba být může – záleží na časování, velikosti paketů, takže tu chybu může vyvolat specifické (ale správné) chování klienta.
-
Vyzkoušel jsem to i pomocí curl a výsledek je stejný.
Dokument jsem si nechal ulozit na disk, nic zvláštního v něm nevidím, jen tam prostě chybí ten řádek.
V podstatě se to chová tak, že opakovaným stahováním se stáhne identická xml struktura včetně toho nedotažení, to se opakuje stále na tom samém místě.
Když se pokusím xml stáhnout z jiného pc, funguje to bez problémů.
Přijde mi, že u wget, curl chyba být nemůže, na to by určitě někdo narazil, v http serveru asi také ne, protože z jiných počítačů to funguje, nejde to jen s tím raspbianem, kde bych to chtěl realizovat.
Ještě mě napadá zkusit vyměnit UTP kabel nebo ho přehodit do jiného portu na switchi.
Porovnal bych přesně případy, kdy to funguje a kdy ne:
- binárně porovnal stažené soubory
- porovnal odeslane é přijaté hlavičky
- pakety zachycené snifferem
Http umí posílat i rozsah bytů apod. takže i při funkčním tcp/ip se nemusí nutně přenést celý soubor.