Автор Тема: Ddns в опростен вариант, как да?  (Прочетена 15011 пъти)

Radev

  • Напреднали
  • *****
  • Публикации: 218
    • Профил
    • WWW
Една машина, която с свързва с интернет чрез ADSL получва динамичен IP адрес.
Как най-просто да я накарам след стартирането автоматично да ме уведомява за текущия си адрес?
Четох малко за ddns (между другото define:ddns в Google не връща нищо на Английски да не говорим за Български '<img'> ), но не бих искал да инсталирам някакви програми и да се регистрирам в някакви си доставчици на подобни услуги, а по-скоро си мисля за някакъв скрипт, но идея си нямам как да го направя.

Предварително благодаря на отзовалите се!
Активен

Човек и добре да живее... !

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Ddns в опростен вариант, как да?
« Отговор #1 -: Feb 11, 2007, 15:14 »
Зависи по какъв начин искаш да те уведомява. Ето един пример как ще те уведоми с sms

#!/bin/bash                                                                                                                                                
                                                                                                                                                            
file_with_ip=/path/to/the/file/file                                                                                                                      
inet_card=eth0                                                                                                                                            
from=nqkakyv@email.adres                                                                                                                                          
to=359880000000@sms.mtel.net                                                                                                                                
                                                                                                                                                            
echo `/sbin/ifconfig $inet_card | /bin/sed -n 's/\(.*\)inet addr:\(.*\)B.*$/\2/p'`>$file_with_ip                                                            
mail -a "From: $from" -t $to < "$file_with_ip"

Слагаш това в един изпълним файл, създаваш един празен файл някъде, в който ще се записва IP-то, редактираш първите 4 реда от скрипта и задаваш скрипта да се изпълнява при boot. В момента се сещам за два начина:
1. правиш shortcut-и на файла в /etc/rc*.d папките
2. слагаш ред от вида /path/to/the/script/script.sh в rc.local (респективно boot.local при SuSE)
Ако скрипта се изпълнява, но sms-а не се изпраща, то се сещам за четири варианта за причината:
1.номера ти няма активирана услуга mail2sms
2.нямаш качен mail exchanger (например mailx, exim и т.н.) - пробвай командата mail извън скрипта дали я има
3.командата mail не работи с тези опции - махни -t пред $to, пробвай да махнеш и кавичките на "$file_with_ip" или комбинация от тези двете
4.firewall - виж да не би да ти е забранен 25-и порт
А ако искаш друг вид известяване, кажи какво да бъде и ще ти драсна скрипта или, ако искаш, сам си поиграй. Само трябва да знаеш, че командата
/sbin/ifconfig $inet_card | /bin/sed -n 's/\(.*\)inet addr:\(.*\)B.*$/\2/p'
е тази, която извлича IP адреса ти
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Йордан

  • Напреднали
  • *****
  • Публикации: 1451
  • Distribution: Ubuntu / Gentoo
  • Window Manager: Gnome
  • не е важно колко ти е голяма пишката, а какво можеш с нея
    • Профил
    • WWW
Ddns в опростен вариант, как да?
« Отговор #2 -: Feb 11, 2007, 15:15 »
bash + mail2sms
Активен

Всеки пост - отговор на въпрос !!!

Йордан Георгиев
http://ygeorgiev.net/

redcure

  • Напреднали
  • *****
  • Публикации: 914
    • Профил
Ddns в опростен вариант, как да?
« Отговор #3 -: Feb 11, 2007, 15:15 »
Аз съм на pppoe и използвам това:
EXTIF=ppp0
EXTIP=`/sbin/ifconfig $EXTIF | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`
echo "$EXTIP"
Активен

Debian testing 2.6.18, Enlightenment DR17

http://www.debian.org/doc/manuals/apt-howto/index.en.html

Йордан

  • Напреднали
  • *****
  • Публикации: 1451
  • Distribution: Ubuntu / Gentoo
  • Window Manager: Gnome
  • не е важно колко ти е голяма пишката, а какво можеш с нея
    • Профил
    • WWW
Ddns в опростен вариант, как да?
« Отговор #4 -: Feb 11, 2007, 15:16 »
@neter много си бърз и активен днеска. Поздравления!
Активен

Всеки пост - отговор на въпрос !!!

Йордан Георгиев
http://ygeorgiev.net/

redcure

  • Напреднали
  • *****
  • Публикации: 914
    • Профил
Ddns в опростен вариант, как да?
« Отговор #5 -: Feb 11, 2007, 15:17 »
4 отговора за 2 мин.  '<img'>
Активен

Debian testing 2.6.18, Enlightenment DR17

http://www.debian.org/doc/manuals/apt-howto/index.en.html

Йордан

  • Напреднали
  • *****
  • Публикации: 1451
  • Distribution: Ubuntu / Gentoo
  • Window Manager: Gnome
  • не е важно колко ти е голяма пишката, а какво можеш с нея
    • Профил
    • WWW
Ddns в опростен вариант, как да?
« Отговор #6 -: Feb 11, 2007, 15:20 »
А ако имаш ДНС сървър за потрошване и знаеш, няма кой да ти го млати може да си направиш един хубав запис + днсклиент. Така на mirizlivo.dupe.com винаги ще отговаря тази машина
Активен

Всеки пост - отговор на въпрос !!!

Йордан Георгиев
http://ygeorgiev.net/

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Ddns в опростен вариант, как да?
« Отговор #7 -: Feb 11, 2007, 15:33 »
Хахаха, GigaVolt, мерси, ама мисля, че това ми е едва 2-рия или 3-тия пост за днес. Важното е да помогнем максимално точно и полезно на човека, затова ми се ще да каже какво точно иска да е известяването. Ще му спомена други примери като създаване на файл на десктопа, промяна на тапета, изскачащ прозорец, съобщение по време на boot и т.н. Може и комбинация
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Radev

  • Напреднали
  • *****
  • Публикации: 218
    • Профил
    • WWW
Ddns в опростен вариант, как да?
« Отговор #8 -: Feb 12, 2007, 09:30 »
Благодаря Ви!

Идеята е наистина да ме известява на отдалечен компютър, а ако успея да измисля как директно да актулизира таблицата на bind за моята си зона '<img'> още по-добре.
Проблема е, че сегиз тогиз ми се налага да се закачам на тази (а може и на друга) машина с ssh и да свършвам туй-онуй '<img'> и най-тъпото решение което ми хрумна е да накарам някой на машината да се закачи за мен (аз обикновенно съм със статично IP и конфигуриран dns сочещ към него), след което с iptraf да видя кой последно '<img'> се е закачил и да пробва с това IP. Съгласете се, че идеята ми е тъпа и неудобна, но пък работи. Та сега да си осигурим някакъв комфорт. '<img'>

Достатъчно е да ми изпрати e-mail защото в повечето случаи се вижда от къде е изпратен, но това означава да знам как се конфигурира mail сървър, а аз не знам '<img'>. Не че Debian не се справя (Редакция: много бързо пиша и греша клавишите '<img'> ) сам, но в случая не става, защото въпросната дистрибуция е Тиликс 1.0.1, и ако се опитам да я актуализирам, което ще ми се наложи да да инсталирам exim с apt-get е меко казано нежелателно. (в друга тема има описани патила ':p' )

Другия проблем е, че adsl модема дава на машината IP 192.168.1.2 и съответно нямам какво да откривам с ifconfig.

Още веднъж благодаря! Ще опитам да измисля как да си пращам поща.



Активен

Човек и добре да живее... !

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Ddns в опростен вариант, как да?
« Отговор #9 -: Feb 12, 2007, 11:05 »
Ето как ще изглежда скрипта за sms известяването, така че да ти дава външния адрес на модема
Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3. file_with_ip=/path/to/the/file/index.html
  4. from=nqkakyv@email.adres
  5. to=359880000000@sms.mtel.net
  6.  
  7. wget -q http://whatismyip.org
  8. mail -a "From: $from" -t $to < "$file_with_ip"
Т.е. заместваш ifconfig с wget. По този начин ще изтеглиш един index.html файл, единственото съдържание на който ще е твоя IP адрес. Трябва да използваш този index.html като стойност на променливата file_with_ip. Да ти напомня обаче, че това IP ще ти върши работа отвън до adsl модема, няма да можеш да го ползваш, за да се логнеш в машината си например, освен ако не пренасочиш портове, незнам дали има такава опция в adsl модемите.
Не разбрах, нямаш ли команда mail? А и какъв е проблема да качиш exim? Лесно е. Още по-лесно е да качиш mailutils. Това не е същински пощенски сървър, просто инструмент за трансфер на съобщения.
« Последна редакция: Dec 29, 2008, 02:04 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Radev

  • Напреднали
  • *****
  • Публикации: 218
    • Профил
    • WWW
Ddns в опростен вариант, как да?
« Отговор #10 -: Feb 12, 2007, 11:15 »
БТК прелагат пренасочване на портове от модема към вътрешната мрежа (пише го в общите условия и като се обадиш след седмица-две до месец го активират ':p' ), а аз вече имам пренасочване.
За съжаление не знам дали имам mail или трябва да се обадя да ми кажат IP-то по вече описания метод или трябва да отида до там, а "там" е на около 50 км. и ще ида в сряда '<img'>.

А иначе този скрипт ми изглежда супер и най-късно в сряда ще пробвам и ще кажа дали всичко е наред.

Благодаря!
Активен

Човек и добре да живее... !

h7d8

  • Напреднали
  • *****
  • Публикации: 197
  • Distribution: Debian;Ubuntu
  • Window Manager: Gnome
    • Профил
Ddns в опростен вариант, как да?
« Отговор #11 -: Aug 10, 2008, 01:31 »
Цитат
Ето как ще изглежда скрипта за sms известяването, така че да ти дава външния адрес на модема
Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3. file_with_ip=/path/to/the/file/index.html
  4. from=nqkakyv@email.adres
  5. to=359880000000@sms.mtel.net
  6.  
  7. wget -q http://whatismyip.org
  8. mail -a "From: $from" -t $to < "$file_with_ip"
Т.е. заместваш ifconfig с wget. По този начин ще изтеглиш един index.html файл, единственото съдържание на който ще е твоя IP адрес. Трябва да използваш този index.html като стойност на променливата file_with_ip. Да ти напомня обаче, че това IP ще ти върши работа отвън до adsl модема, няма да можеш да го ползваш, за да се логнеш в машината си например, освен ако не пренасочиш портове, незнам дали има такава опция в adsl модемите.
Не разбрах, нямаш ли команда mail? А и какъв е проблема да качиш exim? Лесно е. Още по-лесно е да качиш mailutils. Това не е същински пощенски сървър, просто инструмент за трансфер на съобщения.
Първо здравей.При мен нещо не тегли index.html файла (с wget -q http://whatismyip.org ).На мен освен IP адрес-а ми трабва да извлече и да прати ,ако машината е down/up ; down/up link и ,ако има пълен хард диск.Преди 3 месеца си играх със скрип за известие при запълване на хард диска ,но като сменях машините го бастисах ,а сега много малко време ми остава да седна и да довърша нещо.
« Последна редакция: Dec 29, 2008, 02:03 от neter »
Активен

bulg

  • Напреднали
  • *****
  • Публикации: 916
  • Distribution: *bsd/linux
  • Животът е тръпка... иначе живот ли е това...
    • Профил
    • WWW
Ddns в опростен вариант, как да?
« Отговор #12 -: Aug 10, 2008, 04:44 »
Примерен код
wget -q http://www.whatismyip.com




Активен

http://www.youtube.com/watch?v=9rX8Fn-YJpI
---------------------------------------------------------------------
http://cleargreen.com

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Ddns в опростен вариант, как да?
« Отговор #13 -: Aug 10, 2008, 12:49 »
Ако вторият ти компютър е със статичен ИП адрес (както казваш), тогава би могъл да си изграждаш тунел м/у двата, като този със динамичния ИП адрес го създава при boot.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

bnight

  • Напреднали
  • *****
  • Публикации: 313
  • Distribution: Ubuntu 8.10
  • Window Manager: KDE 3.5.10
    • Профил
    • WWW
Ddns в опростен вариант, как да?
« Отговор #14 -: Aug 10, 2008, 19:18 »
Ето един лесен скрипт на баш Който прави динамичен днс с байнд естествено трябва да прочетете малко повече за как точно се генерират ключовете за зоне трансфер че вече съм забравил къде съм го чел. Реализирано е и работи добре поне според мен.
Примерен код

#!/bin/bash
# Script to update DNS zones on a remote server
# Copyright © 2005-2007 - Julien Valroff <julien@kirya.net>
# Parts of the script Copyright © 2001-2002 - Dag Wieers <dag@wieers.com>

KEY="Key File"
SERVER="BIND DNS Server IP"
LOGFILE="/var/log/syslog"
PPP_IFACE="eth0"
FILE="/root/scripts/bnight"

if [ "$PPP_LOCAL" != '' ]; then
   if [ "$PPP_IFACE" != "$PPP_IFACE" ]; then
      echo "$(LANG=C date +'%b %e %X') $(hostname) ddupdate[$$]: ABORTED: Not up                                             dating dynamic IP \
        address $PPP_LOCAL (already done for $(ip addr show $PPP_IFACE | awk '/i                                             net/ { print $2 }'))" >>$LOGFILE 2>&1
      exit 0
   fi
   IPADDR=$(lynx -dump "http://checkip.dyndns.org" |cut -c24-37)
   sleep 3
else
   IPADDR=$(lynx -dump "http://checkip.dyndns.org" |cut -c24-37)
fi

(
echo server $SERVER > "$FILE"
echo update delete forextrade.bnight.exsisto.com. A >> "$FILE"
echo update add forextrade.bnight.exsisto.com. 60 A $IPADDR >> "$FILE"
echo update delete mail.forextrade.bnight.exsisto.com. A >> "$FILE"
echo update add mail.forextrade.bnight.exsisto.com. 60 A $IPADDR >> "$FILE"
echo update delete *.forextrade.bnight.exsisto.com. A >> "$FILE"
echo update add *.forextrade.bnight.exsisto.com. 60 A $IPADDR >> "$FILE"
echo send >> "$FILE"

nsupdate -k "$KEY" "$FILE"
#cat <<EOF | nsupdate -k "$KEY"
#server $SERVER
#update delete bnight.exsisto.com. A
#update add bnight.exsisto.com. 60 A $IPADDR
#update delete mail.bnight.exsisto.com. A
#update add mail.bnight.exsisto.com. 60 A $IPADDR
#update delete host.bnight.exsisto.com. A
#update add host.bnight.exsisto.com. 60 A $IPADDR
#send
#EOF

  RC=$?

  if [ $RC != 0 ]; then
    echo "$(LANG=C date +'%b %e %X') $(hostname) ddupdate[$$]: FAILURE: Updating                                              dynamic IP $IPADDR on $SERVER failed (RC=$RC)"
    (
        echo "Subject: DDNS update failed"
        echo
        echo "Updating dynamic IP $IPADDR on $SERVER failed (RC=$RC)"
    ) | /usr/sbin/sendmail root
  else
    echo "$(LANG=C date +'%b %e %X') $(hostname) ddupdate[$$]: SUCCESS: Updating                                              dynamic IP $IPADDR on $SERVER succeeded"
  fi
) >>$LOGFILE 2>&1

exit $RC


Мисля че ще ти свърши работа. Поздрави.
Активен

Registered Linux user: 473460
http://skyhost.bg - Хостинг и Домейни

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Въпрос относно DDNS
Настройка на програми
Ali Nebi 8 4445 Последна публикация Sep 09, 2010, 14:02
от foxb
Настройка на TP-LINK и ddns
Настройка на хардуер
SylaR 1 3152 Последна публикация Jan 07, 2011, 19:20
от Acho
Рутер и DDNS от no-ip
Идеи и мнения
dark_elf 10 6695 Последна публикация Aug 31, 2013, 12:31
от dark_elf
wget и ddns
Настройка на програми
4096bits 16 6149 Последна публикация Mar 12, 2015, 14:46
от 4096bits
DDNS record
Настройка на програми
supportpc 1 1941 Последна публикация Jul 14, 2016, 18:26
от de_dust2