Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: eddieul 18 Srpna 2008, 07:46:04
-
Dobrý den. Mám jeden problém. Můj provider kazdy den "restartuje" prihlaseni vsem uzivatelum, tzn. ze me kazdy den cca. v 6.00 odhlasi a ja se musim zase na jeho web page prihlasit ,abych se dostal na internet. Pri brouzdani to neni problem,ale pokud neco taham a nejsem dele doma,problem to je. Tak me napadlo,zda by nesel napsat script ,ktery by zjistil,zda je internet dostupny a pokud ne, poslal by prihlasovaci udaje na prihlasovaci stranku. Chtel bych toto reseni pouzit pro router ASUS WL500gP . Za kazdou radu popripade nakopnuti predem dekuji.
PS: Jsem Linux a BASH total lama :-(
-
zkuste pohledat googlem curl auto login
Jestli chcete aby to dělal přímo sám WL500gP bez PC tak se porozhlédněte zde: http://wl500g.info/ ,mám takový pocit že někdo curl v routeru rozběhal: http://wl500g.info/showthread.php?t=1679 (Hugo)
-
zkuste pohledat googlem curl auto login
Jestli chcete aby to dělal přímo sám WL500gP bez PC tak se porozhlédněte zde: http://wl500g.info/ ,mám takový pocit že někdo curl v routeru rozběhal: http://wl500g.info/showthread.php?t=1679 (Hugo)
Ano,rád bych,aby se o to staral Asus sám. Mrknu na ten curl, jen se docela obávám, že kompilace pod linuxem je pro mne Španělská vesnice :-( .Kdyby byl jednoduší způsob ( Cron + script ? ) ,uvítal bych ho.
Díky.
-
Jednodušší by to mělo být rozchodit nejdříve z počítače, curl je v repozitářích. Až potom případně zkoušet asus.
-
Dobrý nápad. Jdu na to ;-)
-
mozna by stacil i wget
-
mozna by stacil i wget
A to jak ?
Zkousim cURL ,ale moc se nedaří. Přidávám i kod stranky, kterou zkousim :
<H1 align="center">BLABLA <BR>
přihlašovací stránka</H1>
<div align="center">
</div>
<form name="login" method="post" action="https://www.blablabla.cz/index.php">
<table align="center" border=1>
<tr><td>Přihlašovací jméno :</td><td><input type="text" name="login"></td></tr>
<tr><td>Heslo : </td><td><input type="password" name="pwd"></td></tr>
<tr><td colspan="2" align="center"><input type="submit" value="OK"></td></tr>
</table>
</form>
A takto jsem to zkousel pres cURL :
curl -d "login=hlupak&pwd=nejapny&press=OK" --cacert soubor_s_certifikatem.pem https://www.blablabla.cz/index.php
Díky za každý kopanec.
-
server si může hlídat referer, cookies
Hoďte si do FF doplněk HttpFox, uvidíte veškerou komunikaci se serverem, podle toho si pak upravte skript
(existoval i doplněk který uměl to samé ale navíc umožňoval i odesílané hlavičky před odesláním modifikovat - je to už delší čas a nějak si nemohu vzpomenout jak se jmenoval)
Pak si podle toho upravte příkaz
-
mozna by stacil i wget
A to jak ?
Jednoduše :) Stačí ve FF kliknout pravým tlač. na přímý odkaz ke stažení, dát "Kopírovat adresu odkazu" a potom spustit terminál, napsat "wget " (i s tou mezerou) a potom jen stisknout kolečko myši(nebo prostřední tlačítko). Pak dáte enter a můžete s klidem odejít.. váš soubor se stáhne doslova za každou cenu - stahování se prostě neukončí a po restartu sítě pokračuje ;)
-
mozna by stacil i wget
A to jak ?
Jednoduše :) Stačí ve FF kliknout pravým tlač. na přímý odkaz ke stažení, dát "Kopírovat adresu odkazu" a potom spustit terminál, napsat "wget " (i s tou mezerou) a potom jen stisknout kolečko myši(nebo prostřední tlačítko). Pak dáte enter a můžete s klidem odejít.. váš soubor se stáhne doslova za každou cenu - stahování se prostě neukončí a po restartu sítě pokračuje ;)
Tak tohle bohužel fungovat nebude. Nejde o problém s navázáním na stahování ale o to,že po restartu se nedostanu na internet bez toho,aniž bych se přihlásil na speciální stránce. wget se tedy asi bude pokoušet tahat,ale když nebude odkud,nedokaže to....
-
server si může hlídat referer, cookies
Hoďte si do FF doplněk HttpFox, uvidíte veškerou komunikaci se serverem, podle toho si pak upravte skript
(existoval i doplněk který uměl to samé ale navíc umožňoval i odesílané hlavičky před odesláním modifikovat - je to už delší čas a nějak si nemohu vzpomenout jak se jmenoval)
Pak si podle toho upravte příkaz
Díky... odpoledne na to skočím.
-
Tak me napadlo,zda by nesel napsat script ,ktery by zjistil,zda je internet dostupny a pokud ne...
na toto mám jedno dokonale vulgárne riešenie, ktoré som však so svojimi znalosťami scriptovania zvládol spraviť: dal som pingovať nejakú stránku (ja to mám limitované na 50 krát, ale tuším by to mohlo ísť aj donekonečna) a ak ju nie je schopný pingnúť, mám pripravenú sériu príkazov ktoré spraví. ak všetko ide v poriadku, spustí script znovu. vyzerá to nejak takto (nepamätám presne, som v robote teraz)if ping www.google.com;
exec bash /cesta/ku/scriptu
else príkaz1&&prikaz2&prikaz3
..alebo tak nejak :). dôležité sú príkazy if a exec. viac o bashi napr. tu: http://www.linuxexpres.cz/praxe/bash-1-dil-1
-
Tak me napadlo,zda by nesel napsat script ,ktery by zjistil,zda je internet dostupny a pokud ne...
na toto mám jedno dokonale vulgárne riešenie, ktoré som však so svojimi znalosťami scriptovania zvládol spraviť: dal som pingovať nejakú stránku (ja to mám limitované na 50 krát, ale tuším by to mohlo ísť aj donekonečna) a ak ju nie je schopný pingnúť, mám pripravenú sériu príkazov ktoré spraví. ak všetko ide v poriadku, spustí script znovu. vyzerá to nejak takto (nepamätám presne, som v robote teraz)if ping www.google.com;
exec bash /cesta/ku/scriptu
else príkaz1&&prikaz2&prikaz3
..alebo tak nejak :). dôležité sú príkazy if a exec. viac o bashi napr. tu: http://www.linuxexpres.cz/praxe/bash-1-dil-1
Díky. Tohle pouziju hned jak vymyslím, jak se prihlásit pres cURL.
-
Tim wgetem by to mohlo vypadat treba takto:
wget --post-data="login=LOGIN&pwd=HESLO" https://www.blablabla.cz/index.php -O -
--post-data je poslani dat metodou POST, stranka je myslim jasna a to "-O -" (velke "o") zaridi, ze se stranka neulozi do souboru, ale jen vypise na terminal. Kdyz by to bezelo, tak to muzes zamenit treba za "-O /dev/null".
ikdyz nemuzu ti zarucit, ze to takto bude fungovat, na https jsem to nikdy nezkousel (ikdyz to umi), mozna je treba jeste neco (cookies, podvrhnout hlavicky,..), ladit by to bylo treba na konkretni stranku. Nezbyva, nez te pripadne odkazat na "man wget".
Mimochodem, dalsi podobne rozsireni do firefoxu je Live HTTP Headers.
-
Tim wgetem by to mohlo vypadat treba takto:
wget --post-data="login=LOGIN&pwd=HESLO" https://www.blablabla.cz/index.php -O -
--post-data je poslani dat metodou POST, stranka je myslim jasna a to "-O -" (velke "o") zaridi, ze se stranka neulozi do souboru, ale jen vypise na terminal. Kdyz by to bezelo, tak to muzes zamenit treba za "-O /dev/null".
ikdyz nemuzu ti zarucit, ze to takto bude fungovat, na https jsem to nikdy nezkousel (ikdyz to umi), mozna je treba jeste neco (cookies, podvrhnout hlavicky,..), ladit by to bylo treba na konkretni stranku. Nezbyva, nez te pripadne odkazat na "man wget".
Mimochodem, dalsi podobne rozsireni do firefoxu je Live HTTP Headers.
Tak to uz vypada zajimaveji,ale stranka vyzaduje certifikat a bojim se, ze tato metoda s tim nepocita. Kazdopadne to dnes testnu pac cURL me zatim moc neposloucha...
-
No, ta co jsem napsal ne.. nicmene jak uz jsem psal, wget to umi. Koukni se do manualovych stranek do sekce "HTTPS (SSL/TLS) Options", figuruje tam nekolik parametru, vcetne toho pro zadani certifikatu.
-
Treba se ti to bude hodit, pripadne nekomu jinemu.
Tento skript jsem pouzival na stahovani uvodni stranky z speed.travian.cz (http://speed.travian.cz). (uvodni stranky po prihlaseni) Je to dobre okomentovane, takze neni problem to pochopit.
#!/bin/bash
# travian.sh by TommyHot
# Original by beginner
CESTA="/home/truhlik/travian";
COOKIES_FOLDER="$CESTA/cookies"; # cookies folder, asi budes muset vytvorit rucne..
COOKIES_FILE="$COOKIES_FOLDER/cookies.txt"; # cookies file to use
URL_LOGIN="http://speed.travian.cz/login.php/"
USERNAME="dotatown"
PASSWORD="creep"
rm -r $CESTA/index*
##stiahnutie uvodnej prvej stranky za ucelom zistenia premennych
wget -q $URL_LOGIN
##zistenie hodnoty nahodnej premennej type="hidden" name="login" _HIDDEN_LOGIN
HIDDEN_LOGIN=`cat $CESTA/index.html | grep "type=\"hidden\" name=\"login\"" | awk '{print $4}' |awk -F"\"" '{print $2}'`
#zistenie hodnoty nahodnej premennej "prihlasovacie meno" _RANDOM_NAME
RANDOM_NAME=`cat $CESTA/index.html | grep "class=\"fm fm110\" type=\"text\" name=\"" | awk '{print $5}' | awk -F "\"" '{print $2}'`
#zistenie hodnoty nahodnej premennej "prihlasovacie heslo" _RANDOM_PASS
RANDOM_PASS=`cat $CESTA/index.html | grep "class=\"fm fm110\" type=\"password\"" | awk '{print $5}' | awk -F "\"" '{print $2}'`
RANDOM_HIDDEN=`cat $CESTA/index.html | grep "<p align=\"center\"><input type=\"hidden\" name=\"" | awk '{print $4}' | awk -F "\"" '{print $2}'`
# w= nastav tam svoje rozlisenie monitora, ktore pouzivas
# RANDOM_HIDDEN a aj jej hodnota mi zostala vzdy nemenna aj napriek tomu ze som vymazal cookies, btw ked nemas cookies, tak sa neposiela, iba ked ich mas prijate
# Ale ak sa to nahodou zmeni (mozno pre kazdeho usera inak), tak si to tam pridaj manualne.. To by nemal byt az taky problem
POST_DATA="'w=1280%3A800&login="$HIDDEN_LOGIN"&$RANDOM_NAME="$USERNAME"&$RANDOM_PASS="$PASSWORD"&$RANDOM_HIDDEN=1205804237&s1.x=45&s1.y=6&s1=login&autologin=ja'";
wget -q --cookies=on --load-cookies "$COOKIES_FILE" --save-cookies "$COOKIES_FILE" --post-data $POST_DATA "http://speed.travian.cz/dorf1.php/?newdid=108329"
EDIT: 1000 ;D
-
No, ta co jsem napsal ne.. nicmene jak uz jsem psal, wget to umi. Koukni se do manualovych stranek do sekce "HTTPS (SSL/TLS) Options", figuruje tam nekolik parametru, vcetne toho pro zadani certifikatu.
Tak to pravdepodobne chodi,bohuzel jen na PC ponevadz Asus router nema GNU wget ,ale pouze BusyBox wget a ten neumi --post-data. Takze se musim pokusit rozchodit cURL. :-( Kazdopadne diky.
-
No, ta co jsem napsal ne.. nicmene jak uz jsem psal, wget to umi. Koukni se do manualovych stranek do sekce "HTTPS (SSL/TLS) Options", figuruje tam nekolik parametru, vcetne toho pro zadani certifikatu.
Tak to pravdepodobne chodi,bohuzel jen na PC ponevadz Asus router nema GNU wget ,ale pouze BusyBox wget a ten neumi --post-data. Takze se musim pokusit rozchodit cURL. :-( Kazdopadne diky.
na svym ASUS WL500gP jsem nainstaloval wget (balicek je wget-ssl) pomoci ipkg (pouzivam teda oleg firmware)
skript na login muze vypadat nasledovne:
#!/bin/sh
#
wget --quiet --save-cookies=blablabla.cookie \
--no-check-certificate \
--post-data="login=LOGIN&pwd=HESLO" \
-P /tmp/harddisk/stazena-data \
-O - \
"https://www.blablabla.cz/index.php" > /dev/null
a je to
-
No, ta co jsem napsal ne.. nicmene jak uz jsem psal, wget to umi. Koukni se do manualovych stranek do sekce "HTTPS (SSL/TLS) Options", figuruje tam nekolik parametru, vcetne toho pro zadani certifikatu.
Tak to pravdepodobne chodi,bohuzel jen na PC ponevadz Asus router nema GNU wget ,ale pouze BusyBox wget a ten neumi --post-data. Takze se musim pokusit rozchodit cURL. :-( Kazdopadne diky.
na svym ASUS WL500gP jsem nainstaloval wget (balicek je wget-ssl) pomoci ipkg (pouzivam teda oleg firmware)
skript na login muze vypadat nasledovne:
#!/bin/sh
#
wget --quiet --save-cookies=blablabla.cookie \
--no-check-certificate \
--post-data="login=LOGIN&pwd=HESLO" \
-P /tmp/harddisk/stazena-data \
-O - \
"https://www.blablabla.cz/index.php" > /dev/null
a je to
Uz jsem zacinal jasat, bohuzel muj Asus hlasi, ze wget-ssl neexistuje.Neni ani ve vypisu ipkg list :-( Take pouzivam Olega.
-
zkus aktualizovat seznam balicku pomoci ipkg update, protoze kdyz se podivas na http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/ , tak v seznamu je
-
zkus aktualizovat seznam balicku pomoci ipkg update, protoze kdyz se podivas na feeds/optware/oleg/cross/stable/ , tak v seznamu je
jj..to jsem udelal ,ale nevidi ho..ani po v seznamu LIST... a kdyz napisu ipkg update ,stahuje seznam z http://ipkg.nslu2-linux.org/unslug/wl500g/Packades .. pouzivam Olega 1.9.2.7-9.
-
zkus aktualizovat seznam balicku pomoci ipkg update, protoze kdyz se podivas na feeds/optware/oleg/cross/stable/ , tak v seznamu je
jj..to jsem udelal ,ale nevidi ho..ani po v seznamu LIST... a kdyz napisu ipkg update ,stahuje seznam z http://ipkg.nslu2-linux.org/unslug/wl500g/Packades .. pouzivam Olega 1.9.2.7-9.
potom tedy mrkni do /opt/etc/ipkg.conf
#Uncomment the following line for native packages feed (if any)
#src/gz native http://ipkg.nslu2-linux.org/feeds/optware/oleg/native/stable
src/gz optware http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable
dest /opt/ /
#option verbose-wget
-
zkus aktualizovat seznam balicku pomoci ipkg update, protoze kdyz se podivas na feeds/optware/oleg/cross/stable/ , tak v seznamu je
jj..to jsem udelal ,ale nevidi ho..ani po v seznamu LIST... a kdyz napisu ipkg update ,stahuje seznam z http://ipkg.nslu2-linux.org/unslug/wl500g/Packades .. pouzivam Olega 1.9.2.7-9.
potom tedy mrkni do /opt/etc/ipkg.conf
#Uncomment the following line for native packages feed (if any)
#src/gz native http://ipkg.nslu2-linux.org/feeds/optware/oleg/native/stable
src/gz optware http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable
dest /opt/ /
#option verbose-wget
Presne to jsem po chvilce googlovani udelal,presto diky .Instalace probehla, ve vypisu IPKG LIST_INSTALLED je videt wgwt-ssl ,ale pri zpousteni at uz meho prikazu ( funkcniho na PC ) a nebo tveho sciptu to nejede.Porad hlasi BusyBox v1.1.3 ....Usage: .... a ze nezna --no-check-certificate a -O ... jsem z toho tak trochu jelen.
-
hm, to by mohlo znamenat, ze nebyl kompilovan s podporou pro OpenSSL
-
novy wget z wget-ssl balicku se nejspis nainstaloval do /opt/bin, ale wget jako link na busybox bude nekde v ceste driv, tak ho zkus najit a smazat (pravdepodobne bude v /bin), ale pak musis flashnout flashku
pokud bys chtel nekdy v budoucnu pouzit wget z busyboxu staci jen napsat busybox wget <parametry>
(napriklad v pripade, ze by Ti spadnul /opt filesystem)
-
novy wget z wget-ssl balicku se nejspis nainstaloval do /opt/bin, ale wget jako link na busybox bude nekde v ceste driv, tak ho zkus najit a smazat (pravdepodobne bude v /bin), ale pak musis flashnout flashku
pokud bys chtel nekdy v budoucnu pouzit wget z busyboxu staci jen napsat busybox wget <parametry>
(napriklad v pripade, ze by Ti spadnul /opt filesystem)
Opět si měl pravdu ( /bin/busybox vs /opt/bin/wget ), bohužel při pokusu o jeho smazani vypadne Read-only file system. Jsem prihlasen jako admin ,ale stejne mi to smazat nedovoli.
-
tak to zadavej s celou cestou tzn. /opt/bin/wget misto pouze wget
-
tak to zadavej s celou cestou tzn. /opt/bin/wget misto pouze wget
pokud najedu do adresare /opt/bin a napisu wget, pusti se BusyBox ...pokud dam do scriptu celou cestu zahlasi not found a to i presto,ze v tom adresari je...
-
tak to zadavej s celou cestou tzn. /opt/bin/wget misto pouze wget
pokud najedu do adresare /opt/bin a napisu wget, pusti se BusyBox ...pokud dam do scriptu celou cestu zahlasi not found a to i presto,ze v tom adresari je...
Prosim,pokud mate jeste nejake napady ,tak sem s nima ;-) Diky
-
pokud najedu do adresare /opt/bin a napisu wget, pusti se BusyBox ...pokud dam do scriptu celou cestu zahlasi not found a to i presto,ze v tom adresari je...
Muzes sem dat nejakej vypis, kterej to dokumentuje? Nejak se mi tomu nechce verit, mozna neni program spustitelny. Vloz sem prosim "ls -l /opt/bin/wget" a tu chybovou hlasku.
-
pokud najedu do adresare /opt/bin a napisu wget, pusti se BusyBox ...pokud dam do scriptu celou cestu zahlasi not found a to i presto,ze v tom adresari je...
Muzes sem dat nejakej vypis, kterej to dokumentuje? Nejak se mi tomu nechce verit, mozna neni program spustitelny. Vloz sem prosim "ls -l /opt/bin/wget" a tu chybovou hlasku.
lepe receno hod sem ls -la /opt/bin | grep wget
jinak co se tyka cesty, tak pokud mas v /etc/profile nastaveno aby se spoustel /opt/etc/profile a ten ma nastaveny executable priznak, tak potom do nej hod nastaveni cesty:
PATH=/opt/sbin:/opt/bin:/sbin:/bin:/usr/sbin:/usr/bin
aby se nejdriv prohledavalo /opt/(s)bin, pokud nejde smazat link wget na busybox
pripadne takto muzes upravit rovnou /etc/profile, ale nezapomen provest flash
-
lepe receno hod sem ls -la /opt/bin | grep wget
Je v tom nejaky zasadni rozdil? :-D
-
pokud najedu do adresare /opt/bin a napisu wget, pusti se BusyBox ...pokud dam do scriptu celou cestu zahlasi not found a to i presto,ze v tom adresari je...
Muzes sem dat nejakej vypis, kterej to dokumentuje? Nejak se mi tomu nechce verit, mozna neni program spustitelny. Vloz sem prosim "ls -l /opt/bin/wget" a tu chybovou hlasku.
tak tady to je :
-rwxr-xr-x 1 admin root 313692 Jul 1 06:09 /opt/bin/wget
-
pokud najedu do adresare /opt/bin a napisu wget, pusti se BusyBox ...pokud dam do scriptu celou cestu zahlasi not found a to i presto,ze v tom adresari je...
Muzes sem dat nejakej vypis, kterej to dokumentuje? Nejak se mi tomu nechce verit, mozna neni program spustitelny. Vloz sem prosim "ls -l /opt/bin/wget" a tu chybovou hlasku.
lepe receno hod sem ls -la /opt/bin | grep wget
jinak co se tyka cesty, tak pokud mas v /etc/profile nastaveno aby se spoustel /opt/etc/profile a ten ma nastaveny executable priznak, tak potom do nej hod nastaveni cesty:
PATH=/opt/sbin:/opt/bin:/sbin:/bin:/usr/sbin:/usr/bin
aby se nejdriv prohledavalo /opt/(s)bin, pokud nejde smazat link wget na busybox
pripadne takto muzes upravit rovnou /etc/profile, ale nezapomen provest flash
To napsalo to same ,jen na konci radku je misto cesty jen wget ;-)
Jak by mel tedy vypadat soubor "profile" ? Me zacina # /etc/profile a pak "export PATH=/opt/sbin:/opt/bin ......
Díky,ze vas jeste bavi se se mnou trapit ;-)
-
muzes jeste pridat text te hlasky, kdyz spoustis "/opt/bin/wget"?
-
muzes jeste pridat text te hlasky, kdyz spoustis "/opt/bin/wget"?
-sh: /opt/bin/wget: not found
-
to je divny, protoze /opt/bin/wget je binarni soubor a ne sh.
muj /etc/profile vypada nasledovne:
# /etc/profile
export PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PS1="[\u@\h \W]\$ "
[ -x /usr/local/etc/profile ] && . /usr/local/etc/profile
[ -x /opt/etc/profile ] && . /opt/etc/profile
a /opt/etc/profile:
#
# Bash initialization script
#
PS1="[\u@\h \W]$ "
PATH=/opt/sbin:/opt/bin:/sbin:/bin:/usr/sbin:/usr/bin
export PS1 PATH LD_LIBRARY_PATH
export TERMINFO=/opt/share/terminfo
alias mc='mc -c'
alias df='df -hT'
alias ls='ls -la'
export EDITOR="/opt/bin/nano"