Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: sunhater в May 05, 2003, 00:58



Титла: Need help writing script
Публикувано от: sunhater в May 05, 2003, 00:58
В главата ми се роди една идея, но за съжаление не знам как да я реализирам.

Имам кабелен интернет с динамичен IP адрес. Идеята ми е да пусна web сървър, който да се редирект-ва от някой безплатен хостинг (примерно hit.bg). Понеже IP адресът ми е динамичен, при всяка негова смяна ще трябва да се променя и HTML кода в hit.bg. Няма ли начин да се напише скрипт, който следи за промяна на IP адреса, и когато това се случи, автоматично да генерира HTML, и да го качи посредством ftp на hit.bg.

Най-често IP адресът се променя при стоп/старт/рестарт на системата, затова ще трябва да се пипне в стартиращия и спиращия скриптове (/etc/rc.d)
Спиращият скрипт (rc.6) ще трябва да записва във файл IP адресът, когато системата спира. А стартирaщия (rc.local) ще трябва до провери записаният във файла IP адрес с текущият.

Но предполагам, че е възможно да ти сменят IP адреса и когато компютъра работи. Затова предполагам че ще трябва да се пусне background proccess, който периодически да изпълнява ifconfig и да сравнява резултата му с предишния такъв.

Help me if you can.


Титла: Need help writing script
Публикувано от: KNK в May 07, 2003, 15:10
po-lesno shte ti e da poiskash statichno IP ot dostavchika ili dori da si go nastroish rachno (polulegalno  ;) ) vmesto s DHCP
inache tekushtoto IP shte si go poluchish s:
Примерен код
ifconfig eth0 | cut -c 21-33 | cut -s -f 1-4 -d .

vij cut --help za podrobnosti ako sam oburkal neshto. 21-33 e kade se namira IPto v izhoda na ifconfig, a vtoria cut otdelia samo reda s IPto (samo toj bi sledvalo da ima . )
popalvash si go v redirectvaahtia script, obache kak da go kachish na FTP neznam. opitaj s:
Примерен код
cat <file> | ftp -n <HOST>

kadeto <file> sadazha komandi koito da se pratiat na ftp-to t.e. neshto kato
Примерен код
user <username>%<pass>
 put index.htm

obache dali shte shte stane neznam


Титла: Need help writing script
Публикувано от: в May 10, 2003, 00:00
Виж dns2go www.deerfield.com.
credits: Николай Андонов  ;)


Титла: Need help writing script
Публикувано от: KNK в May 10, 2003, 19:32
da ama 20$ na godina, a static IP e 1-3$


Титла: Need help writing script
Публикувано от: KNK в May 10, 2003, 20:12
tova me zaintriguva, ta eto kakvo izmislih. sazdaj si slednia script i go slozhi v cron na kakavto iskash interval.
Примерен код
#!/bin/sh

#Current IP
cIP = `ifconfig eth0 | cut -c 21-33 | cut -s -f 1-4 -d .`

HTMLfile = "<HTML><HEAD><meta http-equiv='refresh' content='0;URL=${cIP}'></HEAD><BODY></BODY></HTML>"
# zameni USR, PASS i WEBFOLDER s tvoite
FTPdata = "user USR%PASS
cd WEBFOLDER
put /tmp/Index.htm"

#OldIP
oIP = `cat /tmp/Old.IP`

if [ ! "${cIP}" = "${oIP}" ]; then
   echo ${cIP} 1> /tmp/Old.IP
   echo ${HTMLfile} 1> /tmp/Index.htm
# zameni WEBHOST sas imeto na servera kadeto ti se hostva sajta
   echo ${FTPdata} 1> /bin/ftp -n WEBHOST
fi

Pishi dali e stanalo pls


Титла: Need help writing script
Публикувано от: в May 11, 2003, 01:03
ako si v SF i si kam cablebg.net ISP moje da ti pusnat napravo DNS i dori i da ti e dinamc IPto . . . pone pri men e taka za drugite ISP HE znam
mislia 4e e nai-dobre da pita6 ISPto si


Титла: Need help writing script
Публикувано от: sunhater в May 11, 2003, 20:53
Май имаш грешка в cut, защото в /tmp/Old.IP се записва нещо от сорта:

217.18.247.12 562041 (1.4 M

докато IP-то ми е 217.18.247.129

Освен това /bin/ftp вече е текстов файл със съдържанието на FTPdata.

Колкото до това за DNS-a... Не ща да плащам повече от стандартната услуга... нали затова (и не само) има скриптове.


Титла: Need help writing script
Публикувано от: KNK в May 11, 2003, 22:04
ups! sorry.
vmesto
Примерен код
echo ${FTPdata} 1> /bin/ftp -n WEBHOST
triabva da e
Примерен код
echo ${FTPdata} | /bin/ftp -n WEBHOST

kolkoto do IPto, mislia che s
Примерен код
cIP = `ifconfig eth0 | cut -c 20-35 | cut -s -f 1-4 -d . | cut -s -f 2 -d :`
neshtata shte se opraviat.


Титла: Need help writing script
Публикувано от: sunhater в May 12, 2003, 01:14
Абе нещо ми дава:

usage: user username [password] [account]

и не ще да upload-ва
иначе всичко друго е OK
Пробвах:

user <username> <password>

вместо:

user <username>%<password>

и пак същото съобщение  ???


Титла: Need help writing script
Публикувано от: в May 12, 2003, 02:22
Цитат (sunhater @ Май 11 2003,21:53)
Май имаш грешка в cut, защото в /tmp/Old.IP се записва нещо от сорта:

217.18.247.12 562041 (1.4 M

докато IP-то ми е 217.18.247.129

Освен това /bin/ftp вече е текстов файл със съдържанието на FTPdata.

Колкото до това за DNS-a... Не ща да плащам повече от стандартната услуга... нали затова (и не само) има скриптове.

v cablebg.net HE sam pla6tal dopulnitelno za DNSa


Титла: Need help writing script
Публикувано от: KNK в May 12, 2003, 14:33
za IPto pak imam greshka (zabravil sam da izchistia intervalite v kraia na IPto), triabva da e
Примерен код
cIP = `ifconfig eth0 | cut -c 20-35 | cut -s -f 1-4 -d . | cut -s -f 2 -d : | cut -s -f 1 -d ' '`
, ama taka stava monogo tromavo, ta se setih vmesto ifconfig, da pozvam DHCPto
Примерен код
cIP = `grep IPADDR= /etc/dhcpc/dhcpcd-eth0.info | cut -s -f 2 -d =`

I dvata nachina stavat, no vtoria e za predpovhitane spored men.
Ami opitaj parvo ruchno da go upload za da sverish komandite.
/bin/ftp -n WEBHOST
i posle vij kak tochno moje da se lognesh. sigurno iska i account da e posocheno ili neshto drugo, tova veche zavisi ot FTP servera, moje da se naloji predi uploada da izberesh pasiven rejim, da setnesh che fajla e tekstov i t.n.

P.S. posochi ( ili email direktno) koj e free webhosta, da si napravia acc tam, ako imash problemi.


Титла: Need help writing script
Публикувано от: sunhater в May 15, 2003, 14:16
Много странно. Когато изпълня
Примерен код
ftp -n free.hit.bg

и после напиша
Примерен код
user USER PASS

си се логва нормално. Обаче вътре в скрипта не ще  :(


Титла: Need help writing script
Публикувано от: sunhater в May 15, 2003, 14:39
Мисля, че проблема е, че не взема пред вид знака за нов ред при ${FTPdata}. Като сложа в скрипта
Примерен код
echo ${FTPdata}

ми показва на един ред всички команди


Титла: Need help writing script
Публикувано от: KNK в May 15, 2003, 14:43
ami opitaj s cat FTPdata, kato parvo zapishesh fajla FTPdata red po red


Титла: Need help writing script
Публикувано от: sunhater в May 15, 2003, 14:46
Стана много very 10x!!! KNK е пич!


Титла: Need help writing script
Публикувано от: sunhater в May 15, 2003, 18:51
Ще взема да обобщя всичко, за да не е нужно други хора да четат всички post-ове (освен първия):

Първо се логвам като root. Във /etc/cron.hourly слагам следните файлове:

/etc/cron.hourly/checkip
Примерен код
#!/bin/sh
 
cIP=`/sbin/ifconfig eth0 | cut -c 20-35 | cut -s -f 1-4 -d . | cut -s -f 2 -d :`
oIP=`/bin/cat /tmp/Old.IP`
 
if [ ! "${cIP}"="${oIP}" ]; then
    HTMLfile="<HTML><HEAD><meta http-equiv='refresh' content='0;URL=http://${cIP}'></HEAD><BODY></BODY></HTML>"
    cd /etc/cron.hourly
    echo ${cIP} 1> /tmp/Old.IP
    echo ${HTMLfile} 1> index.html
    cat FTPdata | /bin/ftp -n FTPHOST
    rm -f index.html
fi
На мястото на FTPHOST се пише хоста на FTP сървъра, където ще се качва index.html

/etc/cron.hourly/FTPdata
Примерен код
user USER PASS
put index.html
bye
На мястото на USER и PASS се пишат съответните username и парола за логване във FTP сървъра.

После изпълнявам:
Примерен код
chmod 755 /etc/cron.hourly/checkip
chmod 600 /etc/cron.hourly/FTPdata
FTPdata съдържа конфиденциална информация (username и password), и затова правата трябва да са 600 за да не могат обикновени потребители да да разглеждат този файл.


Титла: Need help writing script
Публикувано от: KNK в May 15, 2003, 19:04
za cIP e po-dobre
Примерен код
cIP = `grep IPADDR= /etc/dhcpc/dhcpcd-eth0.info | cut -s -f 2 -d =`
ako IPto se poluchava po DHCP


Титла: Need help writing script
Публикувано от: sunhater в May 15, 2003, 19:14
Знам че е по-добре ама нещо зависва скрипта... много странно... пробвах ръчно ред по ред - всичко си става