Portál AbcLinuxu, 10. května 2025 11:13

Dotaz: Lognuti a stáhnutí dat pomoci CURL

10.5.2010 10:49 Rendijer
Lognuti a stáhnutí dat pomoci CURL
Přečteno: 901×
Odpovědět | Admin
Ahoj, potřeboval bych poradit, jakým způsobem se lognout na stránku http://74.219.212.106 pomocí curl. Ta stránka je demo, ale funguje to pro názorný připad. A stáhnout event Log z aktualního data.

LOGIN="Super%20Administrator" curl -c curlcookies.txt -d "name=A999&pass=1&form_id=user_login&op=$LOGIN" http://74.219.212.106/cgi-bin/login.cgi?command=0

curl -b curlcookies.txt http://74.219.212.106/cgi-bin/eventLog.cgi?command=0

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

Odpovědi

12.5.2010 15:56 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Odpovědět | | Sbalit | Link | Blokovat | Admin
curl -c curlcookies.txt -d "loginName=A999&loginPass=1&loginLevel=B" http://74.219.212.106/cgi-bin/login.cgi?command=0

curl -b curlcookies.txt http://74.219.212.106/cgi-bin/eventLog.cgi?command=0

Takhle by to mělo mělo být správně, ale místo dat mi to stáhne html kod stránky, nevíte, v čem dělám chybu?
12.5.2010 23:44 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Na http://74.219.212.106/cgi-bin/eventLog.cgi?command=0 vidím jen html stránku, tak co jiného bys chtěl stahovat?
-- Nezdar není hanbou, hanbou je strach z pokusu.
13.5.2010 01:40 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Odpovědět | | Sbalit | Link | Blokovat | Admin
Máte tam špatně názvy polí a navíc jsou tam nějaké dopočítáváné javascriptem.
Toto mi zabralo, jsou to jednotlivé příkazy po sobě a potřebujete mít naistalován 'bc'
Určitě to půjde upravit/zjednodušit.
Fčul takto to má správného referera, user-agenta, i dopočítané pole:
ExpTimeNow="`date '+%F %R:%S' --date '3600 seconds'`"
ExpTimeGMT="`date '+%a, %d %b %Y %R:%S GMT' --date \"$ExpTimeNow\"`"
ExpTimeTmp="`date +%s --date \"$ExpTimeNow\"`"
ExpTime="`echo \"$ExpTimeTmp * 1000\" | bc `"

curl -c curlcookies.txt -e 'http://74.219.212.106/cgi-bin/login.cgi' -A 'Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.0'  -d "loginName=A999&loginPass=1&loginLevel=B&exp=$ExpTime&expstring=$ExpTimeGMT&command=1" http://74.219.212.106/cgi-bin/login.cgi

curl -b curlcookies.txt http://74.219.212.106/cgi-bin/eventLog.cgi?command=0
Poslední stáhne tu stránku ale žádný event tam není (aspoň fčul) tak jsem to zkusil za včerejšek a je to tam - teda jestli to jste chtěl.
curl -b curlcookies.txt 'http://74.219.212.106/cgi-bin/eventLog.cgi?command=0&name=&id=&period=2&dayFrom=0&dayTo=0&dept=-999&trigger=-1'
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
13.5.2010 08:29 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Celé to je zbytečné (vyzkoušejte) stačí:
curl -c curlcookies.txt -d "loginName=A999&loginPass=1&loginLevel=B&command=1" http://74.219.212.106/cgi-bin/login.cgi
a pak
curl -b curlcookies.txt http://74.219.212.106/cgi-bin/eventLog.cgi?command=0

Vaše chyba byla jen v názvech formulářových polí a při přihlašování se parametr command předává POSTem, ne GETem, ostatní věci „asi“ nejsou potřeba.
(Ale bylo to kompletní, server měl informace jako by jste na to „přihlásit“ klikl ve Firefoxu :) ).
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
15.5.2010 16:21 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Diky za pomoc, ale porad na to nemuzu prijit, nic to nestahne:o
15.5.2010 16:31 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Pri: curl -b curlcookies.txt http://74.219.212.106/cgi-bin/eventLog.cgi?command=0

To vyhodi tohle...

Session Timeout...This page has been idle more than 3600 seconds

Tak kde je teda problem..
15.5.2010 16:43 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Mně to nedělá, ale zksute teda plné řešení popisované výše a zde je upravené:
ExpTimeNow="`date '+%F %R:%S' --date '3600 seconds'`"
ExpTimeGMT="`date '+%a,%%20%d%%20%b%%20%Y%%20%R:%S%%20GMT' --date \"$ExpTimeNow\"`"
ExpTimeTmp="`date +%s --date \"$ExpTimeNow\"`"
ExpTime=$(($ExpTimeTmp * 1000))

curl -c curlcookies.txt -e 'http://74.219.212.106/cgi-bin/login.cgi' -A 'Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.0'  -d "loginName=A999&loginPass=1&loginLevel=B&exp=$ExpTime&expstring=$ExpTimeGMT&command=1" http://74.219.212.106/cgi-bin/login.cgi

curl -b curlcookies.txt http://74.219.212.106/cgi-bin/eventLog.cgi?command=0
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
15.5.2010 16:55 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Zkousel jsem i to, uplne to same v blede modrem. Takze chyba bude asi u me, ted ale v cem, ze...
15.5.2010 16:33 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Znovu jsem to zkusil:
curl -c curlcookies.txt -d "loginName=A999&loginPass=1 &loginLevel=B&command=1" http://74.219.212.106/cgi-bin/login.cgi > log.html
a v log.html mám stránku, kde vidím že se to příhlásilo.
curl -b curlcookies.txt http://74.219.212.106/cgi-bin/ eventLog.cgi?command=0 > out.html
a v out.html mám html stránku, kde je spousta zápisů z logu.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
15.5.2010 17:03 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Zkusil jsem na to jine distribuci *deb* a uz to funguje. Super, parada, diky.. Stejne se ale budu pidit po problemu, proc to nejde tady, na ubuntu..
15.5.2010 17:09 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Zkontrolujte co se Vám ukládá do toho souboru s koláčky, jestli tam není zádrhel.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
16.5.2010 20:12 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Nic podezřelého tam nevidím... :(

Chtěl jsem se ještě zeptat, když chci stáhnout přímo soubor,

curl -b curlcookies.txt http://74.219.212.106/cgi-bin/report.cgi?command=0&elemployeename=&elemployeeid=&elperiod=2&dayFrom=0&dayTo=0&elemployeedept=-999&eltrigger=-1&format=1

Tohle když zadám do internetového prohlížeče, tak to přímo nabídne stáhnutí CVS souboru z "Today" s daty. Ale jak to nacpat do curlu?

Díky
16.5.2010 20:41 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Ah,omlouvam se, chyběly mi tam tyhle znaky ''. Už to jede :) Všem díky
13.5.2010 08:37 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Jen drobnost, místo bc by asi stačilo ExpTime=$(($ExpTimeTmp * 1000))
13.5.2010 09:02 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Jo!, už to bylo v noci a zrovna před tím jsem něco počítal přes bc a a chtěl jsem se tam dostat, tak jsem použil co jsem měl v cache :)
Zamozřejmě to celé lze napsat jinak a úsporněji, ale chtěl jsem aby bylo vidět co dělám po krocích, a jak vidno v mém následujícím příspěvku, stejně je to zbytečné, soustředil jsem se na prkotiny, bo mně to nešlo a přehlédl jsem ten command, že musí být v POSTu :).
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
26.5.2010 16:08 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Odpovědět | | Sbalit | Link | Blokovat | Admin
EDIT!!!!!!!!!!!!!!!!!:

Ahoj, tak softva jsem vyřešil problém, hned je tu další. A musím to udělat úplně jiným způsobem.

curl -c curlcookies.txt -d "loginName=A999&loginPass=1&loginLevel=B&command=1" http://74.219.212.106/cgi-bin/login.cgi

curl -b curlcookies.txt 'http://74.219.212.106/cgi-bin/report.cgi?command=0&elemployeename=&elemployeeid=&elperiod=2&dayFrom=0&dayTo=0&elemployeedept=-999&eltrigger=-1&format=1' > data.csv

Tohle je sice fajn, stáhne mi to data, přímo data už v souboru, doupravím si to, ale už mi to nestáhne fotky, který samozřejmně v demoverzi nejsou. Takhle to vypadá v reálu: http://img375.imageshack.us/img375/3061/obrx.png

Problém totiž je, že jsem to dělal na demoverzi stím, že v reálu to bude stejné. Jenže v reálu jsou fotky uložené ve tvaru /photo/1274880305_00111DA07EA8.jpg, ale zaboha nemůžu příjít na to první číslo co to znamená. Jen se to postupně inrementuje s každou další novou fotkou(nepravidelně!), takže nevím, jak to stáhnout, respektive udělat list něco jako :

IP/photo/1274880305_00111DA07EA8.jpg IP/photo/1274880295_00111DA07EA8.jpg IP/photo/1274880281_00111DA07EA8.jpg

Abych to mohl stáhnout wgetem.

Co by vyřešilo problém by bylo, kdyby to stáhlo ty data jako tabulku, né jako html, protože ať to uložím do jakéhokoliv formátu >html csv, tak vždycky to zobrazí html, prostě jen kdyby to stáhlo ty data bez formátofání html. Jinak ta fotka /photo/1274880305_00111DA07EA8.jpg půjde přejmenovat ještě do tvaru datum_OUT/IN_idctecky.jpg a to taky bude oříšek, aby se to nezamíchalo

26.5.2010 16:14 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Sakra, je to těžký vysvětlit, prostě a jednoduše potřebuju stáhnout fotky, který jsou ve tvaru např. /photo/1274880295_00111DA07EA8.jpg a přejmenovat je, podle svého řádku

Takže třeba řádek: Antal Stašek 2010/05/26 15:26:26 Odchod a jeho fotka je např: /photo/1274880295_00111DA07EA8.jpg Přejmenovat na 2605201_152526_Odchod_00111DA07EA8.jpg A tohle udělat pro všechny záznamy pro TODAY. Jenom byhc potřeboval naťuknout, jak na to, jinak všechno ostatní už mám, jen potřebuju udat směr.

Díky

26.5.2010 19:02 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
A není tedy lepší si už přečíst tu databázi, ve které je to všechno uloženo a určitě tam bude provázán uživatel s fotkou.
Nějak jsem nepochopil, jestli tu cestu máte i v tom csv nebo ne.
Každopádně si ze staženého dokumentu dostaňte (rozparsujte jej) tu cestu plus uživatelovo ID a dle toho si je natahejte třeba wgetem smysluplně pojmenujte - třeba tím id a pak již vesel používejte.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
26.5.2010 19:11 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Ne,právě že cestu pro fotku potřebuju získat... Pro každý řádek, kdybych věděl algoritmus jakým je ta fotka uložena, tak bych to udělal,ale prostě jsou tam čísla, který mi nedávaj smysl.

Jinak kdybych měl přístup na databázi, tak to tu neřeším. To je ten problém, těm lidem, co mi zadali ukol to dělala nějaké firma a nerozešli se asi v dobrém. Ani prakticky netuší, kde, nebo jak se dostat na db server :)) A to je celé moje trápení
26.5.2010 19:14 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
No však získejte, když se rozparsuje ten html dokument co je na obrázku tak v tagu <a> je uložena v href=.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
28.5.2010 09:48 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
To by byla zbytečná práce, jinak nečekal jsem to, ale odpověděli mi z actateku, to číslo je Unix timestamp, takže konečně to můžu nějak zprovoznit, každopádně díky za pomoc :)
28.5.2010 13:31 Ant
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
to číslo je Unix timestamp
To bylo prvni, co me napadlo :-)

Sorry, ze jsem nereagoval drive, ale sledoval jsem tuhle diskuzi na zacatku a pak nejak prehledl tu vymenu kolem 26.5. :-O

Musim rict, ze tam teda mate docela solidniho Velkeho Bratra™.

Nejlepsi zpusob s temi jmeny obrazku je -- jak uz ti tady prede mnou napovedeli -- si stahnout to HTML a z neho si primo z te tabulky vyklobat cestu k tomu souboru. Vsechno to je v 8. sloupci, takze to nemuze byt tak tezke udelat nejaky 'cut', 'awk' nebo 'sed' skript.

P.S. Prave jsem si dohral s 'date' a opravdu je to Unix timestamp:

date -d "15:25:05 2010-05-26 CEST" +%s

vraci 1274880305, presne jak prvni radek v tabulce a stavovy radek dole v okne prohlizece ukazuje.
28.5.2010 21:11 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Velkeho Bratra??? Co to je? :)

Jinak jsem student, pomáhám tam při škole, takže žádné závratné znalosti nemám, ale tak dá se to.

Tedy abych stáhl fotku jsem si upravil sloupec na format(out.csv)
12:24:24 2010-5-04  
ted jsem udelal:
promenna=$(cat out.csv)
date -d "$promenna" +%s
a vyhodi mi to UNIX timestamp, ale co když budu mít v tom texťáku různý počet záznamů, né jen jeden

třeba
12:24:24 2010-5-04  
12:24:22 2010-5-04
12:23:04 2010-5-04 
atd

Tak bych potřeboval to udělat pro každý řádek, výše popsaný postup nebude fungovat, nejprve jsem si myslel,že to půjde, ale nee :))

Jde to nějak udělat třeba podmínkou?
for i in $pocetradku
do
  date "promena pro kazdy svuj radek"  +%s
done

??

Díky,vím už otravuju, ale zkouším to souběžně, né že bych tu čekal na odpověď :)

29.5.2010 00:36 Ant
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
co když budu mít v tom texťáku různý počet záznamů, né jen jeden
Viz man date, prepinac -f :-)

date -f soubor_s_datumy +%s
29.5.2010 10:11 Rendijer
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Jojo,díky, taky jsem na to přišel, ale stejně, Nevíte, jakým způsobem by se dala vyřešit ta podmínka? To je jen čistě ze zvědavosti, co se bude třeba hodit do budoucna.

Mám třebas dokument a vněm čísla tady taklhe
12 54
2 45
5 254
663 2
Tak jakým způsobem zaindexovat proměnné A a B, abych pak mohl uděla A x B a udělat to pro každý řadek

Něco jako A=$(cat cisla.txt | awk '{print $1}') a B=$(cat cisla.txt | awk '{print $2}') a pak násobení na stejném řádku.. Představte si to jako v excelu, uděláte vzorec pro jeden řádek a pak ho "roztáhnete" podle počtu řádků

29.5.2010 11:35 Ant
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Nevíte, jakým způsobem by se dala vyřešit ta podmínka?
Viz man bash sekce SHELL BUILTIN COMMANDS, prikaz "read".

#!/bin/bash
muj_soubor="/jmeno/meho/souboru"

# funkce read pouziva IFS (Internal Field Separator) pro rozdeleni slov ve ctene radce
# (tedy pro pochopeni, co je "samostatne slovo", takze puvodni hodnotu si zazalohujeme

IFS_puvodni=$IFS
IFS=" "

# funkce read cte ze standardniho vstupu (resp. to, na co ukazuje souborovy ukazatel 0),
# takze tam presmeruje nas soubor a ulozime puvodni hodnotu do ukazatele napr. cislo 3

exec 3<&0
exec 0<${muj_soubor}

# cteme po radcich dokud je co

while read A B
do
      # zde provadime vlastni vypocet s hodnotami v $A a $B
done

# vratime vse do puvodniho stavu

exec 0<&3
IFS=${IFS_puvodni}

Zde je priklad, kdy se nacte nejpve cela radka a az pak se rozbije na jednotliva slova.

Dalsi priklad se ctenim radku a jejich zpracovanim je tady

Uplne nejjednodussi reseni bez vsech maslicek je udelat:
#!/bin/bash
while read radek    #nebo "while read A B"
do
      # zpracovani radky
do <"muj_soubor"
Snad jsem to nekde nezkopal.
29.5.2010 11:42 Ant
Rozbalit Rozbalit vše Re: Lognuti a stáhnutí dat pomoci CURL
Snad jsem to nekde nezkopal
Zkopal. :-(

Na tom poslednim radku ma byt: done <"muj_soubor"
29.5.2010 00:46 Ant
Rozbalit Rozbalit vše Big brother
Snad jen pro pripad, ze to neni mysleno z legrace ...
Velkeho Bratra??? Co to je?
Blog na ABCLinuxu: Who is Big brother?

Wikipedie: Velký bratr

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.