Portál AbcLinuxu, 10. května 2025 11:13
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?
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=0Poslední 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'
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/eventLog.cgi?command=0
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..
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
curl -c curlcookies.txt -d "loginName=A999&loginPass=1 &loginLevel=B&command=1" http://74.219.212.106/cgi-bin/login.cgi > log.html
curl -b curlcookies.txt http://74.219.212.106/cgi-bin/ eventLog.cgi?command=0 > out.html
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
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
<a>
je uložena v href=
.
to číslo je Unix timestampTo bylo prvni, co me napadlo
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.
12:24:24 2010-5-04ted jsem udelal:
promenna=$(cat out.csv) date -d "$promenna" +%sa 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 atdTak 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ěď :)
co když budu mít v tom texťáku různý počet záznamů, né jen jedenViz
man date
, prepinac -f date -f soubor_s_datumy +%s
12 54 2 45 5 254 663 2Tak 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ů
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.
Velkeho Bratra??? Co to je?Blog na ABCLinuxu: Who is Big brother? Wikipedie: Velký bratr
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.