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

Linux секция за начинаещи => Настройка на програми => Темата е започната от: Radev в Feb 11, 2007, 13:44



Титла: Ddns в опростен вариант, как да?
Публикувано от: Radev в Feb 11, 2007, 13:44
Една машина, която с свързва с интернет чрез ADSL получва динамичен IP адрес.
Как най-просто да я накарам след стартирането автоматично да ме уведомява за текущия си адрес?
Четох малко за ddns (между другото define:ddns в Google не връща нищо на Английски да не говорим за Български ;) ), но не бих искал да инсталирам някакви програми и да се регистрирам в някакви си доставчици на подобни услуги, а по-скоро си мисля за някакъв скрипт, но идея си нямам как да го направя.

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


Титла: Ddns в опростен вариант, как да?
Публикувано от: neter в 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 адреса ти


Титла: Ddns в опростен вариант, как да?
Публикувано от: Йордан в Feb 11, 2007, 15:15
bash + mail2sms


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


Титла: Ddns в опростен вариант, как да?
Публикувано от: Йордан в Feb 11, 2007, 15:16
@neter много си бърз и активен днеска. Поздравления!


Титла: Ddns в опростен вариант, как да?
Публикувано от: redcure в Feb 11, 2007, 15:17
4 отговора за 2 мин.  :D


Титла: Ddns в опростен вариант, как да?
Публикувано от: Йордан в Feb 11, 2007, 15:20
А ако имаш ДНС сървър за потрошване и знаеш, няма кой да ти го млати може да си направиш един хубав запис + днсклиент. Така на mirizlivo.dupe.com винаги ще отговаря тази машина


Титла: Ddns в опростен вариант, как да?
Публикувано от: neter в Feb 11, 2007, 15:33
Хахаха, GigaVolt, мерси, ама мисля, че това ми е едва 2-рия или 3-тия пост за днес. Важното е да помогнем максимално точно и полезно на човека, затова ми се ще да каже какво точно иска да е известяването. Ще му спомена други примери като създаване на файл на десктопа, промяна на тапета, изскачащ прозорец, съобщение по време на boot и т.н. Може и комбинация


Титла: Ddns в опростен вариант, как да?
Публикувано от: Radev в Feb 12, 2007, 09:30
Благодаря Ви!

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

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

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

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





Титла: Ddns в опростен вариант, как да?
Публикувано от: neter в 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. Това не е същински пощенски сървър, просто инструмент за трансфер на съобщения.


Титла: Ddns в опростен вариант, как да?
Публикувано от: Radev в Feb 12, 2007, 11:15
БТК прелагат пренасочване на портове от модема към вътрешната мрежа (пише го в общите условия и като се обадиш след седмица-две до месец го активират :p ), а аз вече имам пренасочване.
За съжаление не знам дали имам mail или трябва да се обадя да ми кажат IP-то по вече описания метод или трябва да отида до там, а "там" е на около 50 км. и ще ида в сряда :).

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

Благодаря!


Титла: Ddns в опростен вариант, как да?
Публикувано от: h7d8 в 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 месеца си играх със скрип за известие при запълване на хард диска ,но като сменях машините го бастисах ,а сега много малко време ми остава да седна и да довърша нещо.


Титла: Ddns в опростен вариант, как да?
Публикувано от: bulg в Aug 10, 2008, 04:44
Примерен код
wget -q www.whatismyip.com






Титла: Ddns в опростен вариант, как да?
Публикувано от: VladSun в Aug 10, 2008, 12:49
Ако вторият ти компютър е със статичен ИП адрес (както казваш), тогава би могъл да си изграждаш тунел м/у двата, като този със динамичния ИП адрес го създава при boot.


Титла: Ddns в опростен вариант, как да?
Публикувано от: bnight в 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


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


Титла: Ddns в опростен вариант, как да?
Публикувано от: h7d8 в Aug 11, 2008, 00:38
Цитат (bulg @ Авг. 10 2008,07:44)
Примерен код
wget -q www.whatismyip.com

Ако ползвам този линк ще свали файл с ненужни неща.->
Примерен код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>What Is My IP Address? - IP Address Lookup, Bandwidth Speed Test, IP Info, plus more</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Keywords" content="IP, my ip, my ip address, ip address, address, address translation, proxy, firewall, dhcp, network, games, voice chat, tutorials, find ip address, ip addres, whats ip, ip find, ipconfig, ipaddress, ifconfig, bandwidth speed test, bandwidth speedtest, bandwidth, speed, test, speedtest, router, voip, internet protocol">
<meta name="Description" content="What Is My IP Address? Click Here to Lookup your IP Address plus more IP Address information...">
<meta http-equiv="Pragma" content="no-cache">
<link rel="shortcut icon" href="http://whatismyip.com/favicon.ico">
<link title="" href="default.css" type="text/css" rel="stylesheet">
<script language="JavaScript" src="default.js" type="text/javascript"></script>
</head>
<body>
<table class="maintable" border="0" cellspacing="0" cellpadding="0">
    <tr>
        <td class="head" colspan="3">
            <h1>WhatIsMyIP.com</h1>
            <h3>The fastest and easiest way to determine your IP address.</h3>
        </td>
    </tr>
    <tr>
        <td colspan="3">
            <div id="navmenu">
    <ul id="menu">
        <li><a href="default.asp" title="IP Address" class="current">IP Address</a></li>
        <li><a href="IP-commands.asp" title="IP Command Lines">IP Command Lines</a></li>
        <li><a href="IP-address.asp" title="IP Addresses Explained">IP Addresses Explained</a></li>
        <li><a href="speedtest/index.asp" title="Speed Test">Speed Test</a></li>
        <li><a href="automation.asp" title="Automation">Automation</a></li>
        <li><a href="http://forum.whatismyip.com" title="Forum">Forum</a></li>
        <li><a href="whatsnew.asp" title="What's new on WhatIsMyIP.com">What's New</a></li>
    </ul>
</div>

        </td>
    </tr>
    <tr><td><br></td></tr>
            <tr>
        <td colspan="3">
            <h1>Your IP Address Is <span>&#56;</span>&#55;<span>&#46;</span>&#49;<span>2</span>&#54;&#46;&#55;<span>&#50;</span><span>&#46;</span>&#54;&#56;</h1><!--Please set your code to scrape your IP from www.whatismyip.com/automation/n09230945.asp Please set your code to hit this page at a REASONABLE pace.  For more info, please see our "What's New" page.-->
        </td>
    </tr>
    <tr><td><br></td></tr>
    <tr>
        <td colspan="3">
            <blockquote><script type="text/javascript"><!--
                doaddefault300x250();
            //--></script></blockquote>
        </td>
    </tr>
    <tr>
        <td colspan="3">
            <script type="text/javascript"><!--
                doad3();
            //--></script>
        </td>
    </tr>
    <tr>
        <td colspan="3" class="content">
            <blockquote>
                <p><strong>IP Address (Internet Protocol Address):</strong> This number is an exclusive number all information technology devices (printers, routers, modems, et al) use which identifies and allows them the ability to communicate with each other on a computer network.  There is a standard of communication which is called an <strong>I</strong>nternet <strong>P</strong>rotocol standard (<strong>IP</strong>).  In laymans terms it is the same as your home address. In order for you to receive snail mail at home the sending party must have your correct mailing address (<strong>IP address</strong>) in your town (<strong>network</strong>) or you do not receive bills, pizza coupons or your tax refund.  The same is true for all equipment on the internet.  Without this specific address, information cannot be received.  IP addresses may either be assigned permanently for an Email server/Business server or a permanent home resident or temporarily, from a pool of available addresses (first come first serve) from your <strong>I</strong>nternet <strong>S</strong>ervice <strong>P</strong>rovider.  A permanent number may not be available in all areas and may cost extra so be  sure to ask your <strong>ISP</strong>...  <a href=IP-address.asp title="More IP Address Info">More IP Address Info</a></p>
            </blockquote>
        </td>
    </tr>
    <tr>
        <td>
            <br>
            <script type="text/javascript"><!--
                doad5468x15();
            //--></script>
        </td>
    </tr>
    <tr>
        <td class="ad" colspan="3">
            <br>
            <a href="http://www.kqzyfj.com/click-2215688-4200925" target="_top">
            <img src="http://www.ftjcfx.com/image-2215688-4200925" width="120" height="60" alt="GoToMyPC - Access Your PC from Anywhere" border="0"></a>
        </td>
    </tr>
    <tr><td><br></td></tr>
    <tr>
        <td colspan="3">
            &#169 2008 whatismyip.com<br>
<a href="privacy.asp" title="Privacy Policy">Privacy Policy</a>
        </td>
    </tr>
</table>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4975660-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>


С www.whatismyip.org го закрепих като резултатът е следния:
file:index.html
contents:87.43.29.29

До скоро и очаквам помощ за скрипт-а ;)


Титла: Ddns в опростен вариант, как да?
Публикувано от: bulg в Aug 11, 2008, 02:43
Toва сработва:
Примерен код
lynx -dump http://whatismyip.com | awk '/Your IP Address Is/{print $NF}'


Титла: Ddns в опростен вариант, как да?
Публикувано от: foxb в Aug 11, 2008, 04:10
А няма ли да е по-лесно да се ползва:
http://whatismyip.com/automation.asp

Там има линк на който получаваш само IP адреса.

Колкото до другата информация може би снмп клопка snmp trap или електронна поща.


Титла: Ddns в опростен вариант, как да?
Публикувано от: satir в Aug 11, 2008, 04:38
хм...... не ги разбирам много тия работи... ма я виж тва: danasoft


Титла: Ddns в опростен вариант, как да?
Публикувано от: bnight в Aug 11, 2008, 11:21
Цитат (bulg @ Авг. 11 2008,03:43)
Toва сработва:
Примерен код
lynx -dump http://whatismyip.com | awk '/Your IP Address Is/{print $NF}'

да този скрип който ти дадох го ползвам в реална среда и си работи супер :). Поздрави.


Титла: Ddns в опростен вариант, как да?
Публикувано от: h7d8 в Aug 17, 2008, 01:49
1. apt-get install mailutils OK
2. Вие вече сте регистрирани за услугата mail2sms. Услугата в момента е със статус активен. OK

3.
Примерен код
#!/bin/bash

store_ip=/root/index.html
from=blq@blq.bg
to=35988XXXXXXX@sms.mtel.net

wget -q http://whatismyip.org
mail -a "From: $from" -t $to < "$store_ip"
echo "Done! IP Adress: Send"
echo "Done! IP Adress: Send" >> /var/log/messages


4. [root@stoyanov:~]$ sh ip.sh
Null message body; hope that's ok

Done! IP Adress: Send

5.[root@stoyanov:~]$ pico index.html < там е  IP ADDRESS OK

6.iptables --list < OK

Казва ,че няма съобщения ,но защо да се надявам че е добре? :) След това няма смс няма нищо естествено. :) Има проблем ,но явно не го виждам.


Титла: Ddns в опростен вариант, как да?
Публикувано от: neter в Aug 17, 2008, 10:08
Я!? Кога сте извадили тази тема от архива? Пропуснал съм да я видя :)
h7d8, относно последния ти пост:
1. За това, че ти изписва "Null message body; hope that's ok". В скрипта си забил статичен път, където да се търси index.html (демек това, че променливата $store_ip e равна на /root/index.html), а при изпълнението на wget не указваш къде да се свали файлът index.html (в този случай трябва да се зададе да се сваля в /root) и така файлът се сваля там, откъдето изпълняваш скрипта. Виж в коя папка се намираш, когато изпълняваш скрипта. Трябва да се намираш в папка /root или просто махни това "/root/" от $store_ip. Между другото, редът "[root@stoyanov:~]$" изглежда странно. Как така в момента си влязъл с потребител root и уж се намираш в домашната му папка ("~" в случая трябва да значи /root), а накрая ти е изписан $, а не #? Ти с каква дистрибуция или ОС си? И правил ли си някакви промени относно това?
2. За неизпратения sms. Сигурен ли си, че при ръчно изпълнен mail, sms-ът се изпраща? Ако се изпраща, виж дали използваш един и същи потребител, когато изпълняваш скрипта и когато изпълняваш mail ръчно. Пробвай да изпълниш скрипта под root, ако още не си го направил (както казах, онзи ред там изглежда странно).
3. Защо в 6-та точка пише "iptables --list", а не си ни показал изхода от тази команда? Защо тогава я изпълняваш?

edit0: А, забравих да вметна. Ако имаш инсталиран curl, можеш да си опростиш малко изпълнението на скрипта като не теглиш някакъв файл, който да остава на машината, а просто си вземеш IP-то в променлива, а именно
Примерен код
store_ip=`curl -s http://whatismyip.org`

Обърни внимание на кавичките, които съм използвал. Това е единичната кавичка, която се намира на клавиша с вълничката (~), горе вляво.
След това можеш да си подредиш mail командата в скрипта и така
Примерен код
echo "$store_ip" | mail -a "From: $from" -t $to


edit1: Оп, още един проблем видях в твоя скрипт - загради стойностите на променливите $from и $to в кавички. Т.е.
Примерен код
from="blq@blq.bg"
to="35988XXXXXXX@sms.mtel.net"






Титла: Ddns в опростен вариант, как да?
Публикувано от: n00b в Aug 17, 2008, 11:13
http://whatismyip.org/ <- Това е линка!


Титла: Ddns в опростен вариант, как да?
Публикувано от: h7d8 в Aug 17, 2008, 15:27
Цитат (neter @ Авг. 17 2008,13:08)
Я!? Кога сте извадили тази тема от архива? Пропуснал съм да я видя :)
h7d8, относно последния ти пост:
1. За това, че ти изписва "Null message body; hope that's ok". В скрипта си забил статичен път, където да се търси index.html (демек това, че променливата $store_ip e равна на /root/index.html), а при изпълнението на wget не указваш къде да се свали файлът index.html (в този случай трябва да се зададе да се сваля в /root) и така файлът се сваля там, откъдето изпълняваш скрипта. Виж в коя папка се намираш, когато изпълняваш скрипта. Трябва да се намираш в папка /root или просто махни това "/root/" от $store_ip. Между другото, редът "[root@stoyanov:~]$" изглежда странно. Как така в момента си влязъл с потребител root и уж се намираш в домашната му папка ("~" в случая трябва да значи /root), а накрая ти е изписан $, а не #? Ти с каква дистрибуция или ОС си? И правил ли си някакви промени относно това?
2. За неизпратения sms. Сигурен ли си, че при ръчно изпълнен mail, sms-ът се изпраща? Ако се изпраща, виж дали използваш един и същи потребител, когато изпълняваш скрипта и когато изпълняваш mail ръчно. Пробвай да изпълниш скрипта под root, ако още не си го направил (както казах, онзи ред там изглежда странно).
3. Защо в 6-та точка пише "iptables --list", а не си ни показал изхода от тази команда? Защо тогава я изпълняваш?

edit0: А, забравих да вметна. Ако имаш инсталиран curl, можеш да си опростиш малко изпълнението на скрипта като не теглиш някакъв файл, който да остава на машината, а просто си вземеш IP-то в променлива, а именно
Примерен код
store_ip=`curl -s http://whatismyip.org`

Обърни внимание на кавичките, които съм използвал. Това е единичната кавичка, която се намира на клавиша с вълничката (~), горе вляво.
След това можеш да си подредиш mail командата в скрипта и така
Примерен код
echo "$store_ip" | mail -a "From: $from" -t $to


edit1: Оп, още един проблем видях в твоя скрипт - загради стойностите на променливите $from и $to в кавички. Т.е.
Примерен код
from="blq@blq.bg"
to="35988XXXXXXX@sms.mtel.net"


Тези неща ги изпълнявам ,но пак ми казва ,че няма месидж.Когато пробвам с curl ми показва следното:
[root@stoyanov:~]$ sh ip.sh
ip.sh: line 7: 87.126.72.28: No such file or directory

Изпълнявам с роот и съм в роот дир-а.По-горе реда в който съм писал за iptables..само проверявам дали всичко е наред.Ако пробваме да го опростим с curl дали ще може да вмъкнем в скрипта да извлича ,ако харда е пълен и ако има голямо натоварване на CPU.Относно странното [root@stoyanov:~]$ то изглежда така:
Примерен код
'\[\033[1;32m\][\[\033[0m\]\[\033[1;37m\]\u\[\033[0m\]\[\033[1;31m\]@\033[0m\]\[\033[1;37m\]\h:\w\[\033[0m\]\[\033[1;32m\]]\[\033[0m\]\[\033[1;34m\]$\[\033[0m\] '
,можеби съм мацнал нещо ,но смятам че не е фатално.С debian etch съм. ;)





Титла: Ddns в опростен вариант, как да?
Публикувано от: neter в Aug 17, 2008, 17:10
Нормално е да ти гърми с така използвания curl - не си си преправил mail командата по начина, по който ти показах. Ето как трябва да изглежда скриптът
Примерен код
#!/bin/bash

store_ip=`curl -s http://whatismyip.org`
from="blq@blq.bg"
to="35988XXXXXXX@sms.mtel.net"

echo "$store_ip" | mail -a "From: $from" -t $to
echo "Done! IP Adress: Send"
echo "Done! IP Adress: Send" >> /var/log/messages

Така скриптът трябва да работи. Има обаче една подробност - в момента явно има някаква нестабилност в услугата mail2sms на MTel :) В момента, когато пиша този пост, и аз не мога да изпратя sms нито ръчно, нито със скриптовете ми, които от години си ми пращат sms-и за разни неща. Цял ден не бях пред компютъра и се чудех защо не съм получил нито един sms за това време. Така че, изпиши си скрипта така, както ти го дадох и чакай услугата да се стабилизира.

P.S.: За протокола. Командата mail има две разновидности. При теб си е тази, за която говорим, но има и друга, при която опциите са други, а този ред при нея трябва да се формира по същия начин, но без -t. Т.е.
Примерен код
echo "$store_ip" | mail -a "From: $from" $to

Но, както казах, това е само за протокола, така че ти не го вземай предвид.

edit: Забравих да ти обясня защо в момента скриптът ти гърми с грешката "ip.sh: line 7: 87.126.72.28: No such file or directory". Тъй като си променил задаването на променливата $store_ip така, както ти казах, но не си променил реда с командата mail, то при изпълнението на скрипта след заменяне на променливите с реалните стойности се е получил такъв ред
Примерен код
mail -a "From: blq@blq.bg" -t 35988XXXXXXX@sms.mtel.net < "87.126.72.28"

Както сам виждаш, получава се, че текстът на писмото трябва да се извлече от файла 87.126.72.28, а такъв файл няма. При реда с командата mail, който ти давам аз, нямаме извличане на текста на писмото от външен файл, а текстът на писмото се получава от съдържанието на echo, което седи преди mail командата ;)





Титла: Ddns в опростен вариант, как да?
Публикувано от: h7d8 в Aug 17, 2008, 18:46
Цитат (neter @ Авг. 17 2008,20:10)
Нормално е да ти гърми с така използвания curl - не си си преправил mail командата по начина, по който ти показах. Ето как трябва да изглежда скриптът
Примерен код
#!/bin/bash

store_ip=`curl -s http://whatismyip.org`
from="blq@blq.bg"
to="35988XXXXXXX@sms.mtel.net"

echo "$store_ip" | mail -a "From: $from" -t $to
echo "Done! IP Adress: Send"
echo "Done! IP Adress: Send" >> /var/log/messages

Така скриптът трябва да работи. Има обаче една подробност - в момента явно има някаква нестабилност в услугата mail2sms на MTel :) В момента, когато пиша този пост, и аз не мога да изпратя sms нито ръчно, нито със скриптовете ми, които от години си ми пращат sms-и за разни неща. Цял ден не бях пред компютъра и се чудех защо не съм получил нито един sms за това време. Така че, изпиши си скрипта така, както ти го дадох и чакай услугата да се стабилизира.

P.S.: За протокола. Командата mail има две разновидности. При теб си е тази, за която говорим, но има и друга, при която опциите са други, а този ред при нея трябва да се формира по същия начин, но без -t. Т.е.
Примерен код
echo "$store_ip" | mail -a "From: $from" $to

Но, както казах, това е само за протокола, така че ти не го вземай предвид.

edit: Забравих да ти обясня защо в момента скриптът ти гърми с грешката "ip.sh: line 7: 87.126.72.28: No such file or directory". Тъй като си променил задаването на променливата $store_ip така, както ти казах, но не си променил реда с командата mail, то при изпълнението на скрипта след заменяне на променливите с реалните стойности се е получил такъв ред
Примерен код
mail -a "From: [EMAIL=blq@blq.bg]blq@blq.bg[/EMAIL]" -t [EMAIL=35988XXXXXXX@sms.mtel.net]35988XXXXXXX@sms.mtel.net[/EMAIL] < "87.126.72.28"

Както сам виждаш, получава се, че текстът на писмото трябва да се извлече от файла 87.126.72.28, а такъв файл няма. При реда с командата mail, който ти давам аз, нямаме извличане на текста на писмото от външен файл, а текстът на писмото се получава от съдържанието на echo, което седи преди mail командата ;)

Прав си ,мерси за корекциите сега остава да почакаме да оправят от мтел услугата.
Примерен код
[root@stoyanov:~]$ sh ip.sh
Done! IP Adress: Send

Ръчно какъв е точно синтаксиса на едната команда?С mail --help немога да го наредя. :)


Титла: Ddns в опростен вариант, как да?
Публикувано от: neter в Aug 17, 2008, 18:59
Цитат (h7d8 @ Авг. 17 2008,18:46)
Ръчно какъв е точно синтаксиса на едната команда?С mail --help немога да го наредя. :)

Синтаксисът е същият, както в скрипта. Само замени променливите с техните стойности
Примерен код
echo "`curl -s http://whatismyip.org`" | mail -a "From: blq@blq.bg" -t 35988XXXXXXX@sms.mtel.net






Титла: Ddns в опростен вариант, как да?
Публикувано от: h7d8 в Aug 17, 2008, 19:23
Цитат (neter @ Авг. 17 2008,21:59)
Цитат на: h7d8,Авг. 17 2008,18:46
Ръчно какъв е точно синтаксиса на едната команда?С mail --help немога да го наредя. :)

Синтаксисът е същият, както в скрипта. Само замени променливите с техните стойности
Примерен код
echo "`curl -s http://whatismyip.org`" | mail -a "From: [EMAIL=blq@blq.bg]blq@blq.bg[/EMAIL]" -t [EMAIL=35988XXXXXXX@sms.mtel.net]35988XXXXXXX@sms.mtel.net[/EMAIL]

Говоря за майл както му е реда.От,тема,копие,съдържание.М/у другото още не са оправили mail2sms.Така съставения скрипт обаче ,ще праща IP само при рестарт на машината.Ако pppoe пропадне при следващото закачане няма да прати смс с новия адрес.На бтк съм.. и аз по някъв начин се боря с динамичните адреси. :( Ако вмъкнем това което ползва redcure ;
Примерен код
EXTIF=ppp0
EXTIP=`/sbin/ifconfig $EXTIF | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`
echo "$EXTIP"  
дали ще има ефект.Или ако eth0 е dhcp какъв е начина при даване на адрес скрипта да извлича ИП.Любопитно ми е и искам да знам някой от вариантите. ;)





Титла: Ddns в опростен вариант, как да?
Публикувано от: neter в Aug 18, 2008, 01:18
//offtopic

Проблемът с услугата mail2sms май ще излезе от съвсем друго естество. Забелязах, че от техния сайт може да се изпрати sms без проблем, но от всички други сървъри, от които пробвах, не може. Явно са блокирали услугата поради някаква причина и (мое предположение) най-вероятно става дума за пари, но засега не откривам никаква информация по въпроса. Язък, ако направят услугата платена, но... каквото, такова :)

//ontopic

Аз пак не разбрах какво точно искаш да ти обясня около mail командата и писмото. Дай някакъв пример, че да хвана идеята ти. А относно изпращането на писмо (да използваме общата дума писмо, защото не се знае какво ще става с услугата mail2sms) при всяка смяна на IP-то, в момента се сещам само за едно предложение, което да ти дам - преправи скрипта да изглежда така
Примерен код
store_ip=`curl -s http://whatismyip.org`
old_ip=`cat /някакъв/път/файл_в_който_да_се_пази_IPто`
from="blq@blq.bg"
to="35988XXXXXXX@sms.mtel.net"

if [ "$old_ip" != "$store_ip" ]; then
    echo "$store_ip" | mail -a "From: $from" -t $to
    echo "Done! IP Adress: Send" >> /var/log/messages
    echo $store_ip > /някакъв/път/файл_в_който_да_се_пази_IPто
fi

Създай файла "/някакъв/път/файл_в_който_да_се_пази_IPто" предварително. След като си готов със скрипта, сложи го за изпълнение в cron на всеки 5 минути например (да не е съвсем начесто, тъй като whatismyip.org са сложили ограничения и, ако е много начесто, в много моменти скриптът няма да може да получи информация от там). Така, при всяко изпълнение на скрипта от cron-а ще се взема настоящото ти IP, ще се сравнява с това, което се пази във файла "/някакъв/път/файл_в_който_да_се_пази_IPто" и, ако са различни, ще ти изпраща писмо с новото IP и ще обновява записа във файла "/някакъв/път/файл_в_който_да_се_пази_IPто". Редът на redcure не ти върши работа, тъй като въпросното IP не се задава в твоята система, а в модема на БТК. Има хипотетична вероятност в настройките на модема да може да се зададе да изпълнява нещо при подновяване на връзката, но ти май нямаш достъп до неговите настройки. Ако имаш желание, може да врътнеш една шайба до поддръжката на БТК и да ги питаш за информация или съдействие, но малко се съмнявам, че ще получиш това, което ти е нужно. Иначе, ако това IP се намираше на твоята машина, редът на redcure върши работа и можеше да го сложиш за изпълнение при задаването на $store_ip променливата на мястото на curl командата. Това, което прави редът на redcure, е да изпълни ifconfig и да изреже само нужното IP от изхода на командата.

P.S.: Какъв е смисълът да записваш във /var/log/messages някакви ни в клин, ни в ръкав редове "Done! IP Adress: Send"? Сложи го да бъде поне така
Примерен код
echo "[`date`]: Done! IP Adress: Send" >> /var/log/messages

за да знаеш поне кога точно се е случило това. Допълнително, файлът /var/log/messages не е много удачно решение за файл, в който да пазиш този лог. Направи си някакъв файл, в който да си пълниш само тази информация, за да не се ровиш из купчината друга информация във /var/log/messages. Виж и дали можеш да си измислиш още нещо по-информативно, което да си пазиш в този лог и, ако не се справяш с изписването му в скрипта, ще помагаме. Всяко действие в скрипта трябва да е с някаква практична цел, иначе става излишно ;)





Титла: Ddns в опростен вариант, как да?
Публикувано от: h7d8 в Aug 18, 2008, 16:19
Цитат
//offtopic

Проблемът с услугата mail2sms май ще излезе от съвсем друго естество. Забелязах, че от техния сайт може да се изпрати sms без проблем, но от всички други сървъри, от които пробвах, не може. Явно са блокирали услугата поради някаква причина и (мое предположение) най-вероятно става дума за пари, но засега не откривам никаква информация по въпроса. Язък, ако направят услугата платена, но... каквото, такова :)

//ontopic

Аз пак не разбрах какво точно искаш да ти обясня около mail командата и писмото. Дай някакъв пример, че да хвана идеята ти. А относно изпращането на писмо (да използваме общата дума писмо, защото не се знае какво ще става с услугата mail2sms) при всяка смяна на IP-то, в момента се сещам само за едно предложение, което да ти дам - преправи скрипта да изглежда така
<!--c1--></span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td><b>Примерен код</b> </td></tr><tr><td id="CODE"><!--ec1-->store_ip=`curl -s http://whatismyip.org`
old_ip=`cat /някакъв/път/файл_в_който_да_се_пази_IPто`
from="blq@blq.bg"
to="35988XXXXXXX@sms.mtel.net"

if [ "$old_ip" != "$store_ip" ]; then
    echo "$store_ip" | mail -a "From: $from" -t $to
    echo "Done! IP Adress: Send" >> /var/log/messages
    echo $store_ip > /някакъв/път/файл_в_който_да_се_пази_IPто
fi<!--c2--></td></tr></table><span id='postcolor'><!--ec2-->
Създай файла "/някакъв/път/файл_в_който_да_се_пази_IPто" предварително. След като си готов със скрипта, сложи го за изпълнение в cron на всеки 5 минути например (да не е съвсем начесто, тъй като whatismyip.org са сложили ограничения и, ако е много начесто, в много моменти скриптът няма да може да получи информация от там). Така, при всяко изпълнение на скрипта от cron-а ще се взема настоящото ти IP, ще се сравнява с това, което се пази във файла "/някакъв/път/файл_в_който_да_се_пази_IPто" и, ако са различни, ще ти изпраща писмо с новото IP и ще обновява записа във файла "/някакъв/път/файл_в_който_да_се_пази_IPто". Редът на redcure не ти върши работа, тъй като въпросното IP не се задава в твоята система, а в модема на БТК. Има хипотетична вероятност в настройките на модема да може да се зададе да изпълнява нещо при подновяване на връзката, но ти май нямаш достъп до неговите настройки. Ако имаш желание, може да врътнеш една шайба до поддръжката на БТК и да ги питаш за информация или съдействие, но малко се съмнявам, че ще получиш това, което ти е нужно. Иначе, ако това IP се намираше на твоята машина, редът на redcure върши работа и можеше да го сложиш за изпълнение при задаването на $store_ip променливата на мястото на curl командата. Това, което прави редът на redcure, е да изпълни ifconfig и да изреже само нужното IP от изхода на командата.

P.S.: Какъв е смисълът да записваш във /var/log/messages някакви ни в клин, ни в ръкав редове "Done! IP Adress: Send"? Сложи го да бъде поне така
<!--c1--></span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td><b>Примерен код</b> </td></tr><tr><td id="CODE"><!--ec1-->echo "[`date`]: Done! IP Adress: Send" >> /var/log/messages<!--c2--></td></tr></table><span id='postcolor'><!--ec2-->
за да знаеш поне кога точно се е случило това. Допълнително, файлът /var/log/messages не е много удачно решение за файл, в който да пазиш този лог. Направи си някакъв файл, в който да си пълниш само тази информация, за да не се ровиш из купчината друга информация във /var/log/messages. Виж и дали можеш да си измислиш още нещо по-информативно, което да си пазиш в този лог и, ако не се справяш с изписването му в скрипта, ще помагаме. Всяко действие в скрипта трябва да е с някаква практична цел, иначе става излишно <!--emo&;)--><img src="http://www.linux-bg.org/iB_html/non-cgi/emoticons/wink.gif" border="0" valign="absmiddle" alt=';)'><!--endemo-->
<span style='color:purple'>Дано не се окаже ,че това е излишно.Ако мтел спрът тази услуга ще е много лошо.До модема имам достъп, <!--emo&:)--><img src="http://www.linux-bg.org/iB_html/non-cgi/emoticons/smile.gif" border="0" valign="absmiddle" alt=':)'><!--endemo--> и в момента съм го пуснал бридж и на машината съм пуснал pppoe.Така можеби се оптимизира и няма проблеми с недостик на рам и прочие.Ако има какво да направя още ,бих могъл.За логването си много прав понеже посления път като рових ми мина деня.</span> <!--emo&:ok:--><img src="http://www.linux-bg.org/iB_html/non-cgi/emoticons/thumbs-up.gif" border="0" valign="absmiddle" alt=':ok:'><!--endemo-->


Титла: Ddns в опростен вариант, как да?
Публикувано от: neter в Aug 18, 2008, 17:24
От днес на обяд услугата вече е активна, така че можеш да си продължиш действията със скрипта :) А щом pppoe връзката е при теб, тогава не използвай предложението с cron-а, което ти дадох, а ползвай реда на redcure, с който скриптът ще изглежда така
Примерен код
#!/bin/bash

EXTIF=ppp0
store_ip=`/sbin/ifconfig $EXTIF | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`
from="blq@blq.bg"
to="35988XXXXXXX@sms.mtel.net"

echo "$store_ip" | mail -a "From: $from" -t $to
echo "[`date`]: Done! IP Adress $store_ip: Send" >> /някакъв/път/лог_файл

Както виждаш, давам ти предложение в лога да си записваш и кое е IP-то, което е изпратено, може да ти свърши работа ;)

edit: Опа, забравих да ти кажа какво да го правиш този скрипт :) Не го слагай да се изпълнява самостоятелно при стартиране на системата, а си направи един изпълним файл, в този файл си сложи последователно първо командата за вдигане на pppoe връзката и след нея си сложи твоя скрипт. Махни и самостоятелното изпълнение на командата за вдигане на pppoe връзката при зареждане на системата. Използвай новосъздадения изпълним файл за вдигане на pppoe връзката както при зареждане на системата, така и при последвало ново свързване. Така, след всяко вдигане на pppoe интерфейса, твоят скрипт ще се изпълнява и ще ти изпраща настоящия IP адрес.





Титла: Ddns в опростен вариант, как да?
Публикувано от: h7d8 в Aug 18, 2008, 20:00
Цитат (neter @ Авг. 18 2008,20:24)
От днес на обяд услугата вече е активна, така че можеш да си продължиш действията със скрипта :) А щом pppoe връзката е при теб, тогава не използвай предложението с cron-а, което ти дадох, а ползвай реда на redcure, с който скриптът ще изглежда така
Примерен код
#!/bin/bash

EXTIF=ppp0
store_ip=`/sbin/ifconfig $EXTIF | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`
from="blq@blq.bg"
to="35988XXXXXXX@sms.mtel.net"

echo "$store_ip" | mail -a "From: $from" -t $to
echo "[`date`]: Done! IP Adress $store_ip: Send" >> /някакъв/път/лог_файл

Както виждаш, давам ти предложение в лога да си записваш и кое е IP-то, което е изпратено, може да ти свърши работа ;)

edit: Опа, забравих да ти кажа какво да го правиш този скрипт :) Не го слагай да се изпълнява самостоятелно при стартиране на системата, а си направи един изпълним файл, в този файл си сложи последователно първо командата за вдигане на pppoe връзката и след нея си сложи твоя скрипт. Махни и самостоятелното изпълнение на командата за вдигане на pppoe връзката при зареждане на системата. Използвай новосъздадения изпълним файл за вдигане на pppoe връзката както при зареждане на системата, така и при последвало ново свързване. Така, след всяко вдигане на pppoe интерфейса, твоят скрипт ще се изпълнява и ще ти изпраща настоящия IP адрес.

Забелязвам ,че и по стария начин не тръгва т.е не праща смс.Сега нов проблем.
Примерен код
[root@stoyanov:~]$ sh ip.sh
ip.sh: line 9: unexpected EOF while looking for matching `"'
ip.sh: line 10: syntax error: unexpected end of file

Като спра изпълнението ,то трябва този файл да сложа в rcconf ,но дали при нормална работа и само прекъсване на pppoe ще се закачи само и ще прати смс.


Титла: Ddns в опростен вариант, как да?
Публикувано от: h7d8 в Aug 24, 2008, 21:24
Сега пробвах да пратя от пощата си към 35988ЬЬЬЬЬЬЬ@sms.mtel.net и се получи,значи работи услугата.  :ok: :) само скрипта иска обработка.


Титла: Ddns в опростен вариант, как да?
Публикувано от: neter в Aug 25, 2008, 23:29
Я пробвай следните две команди и ми кажи с коя от двете си успял да си пратиш sms
Примерен код
echo "proba" | mail -t 35988ЬЬЬЬЬЬЬ@sms.mtel.net
echo "proba" | mail 35988ЬЬЬЬЬЬЬ@sms.mtel.net


Титла: Ddns в опростен вариант, как да?
Публикувано от: h7d8 в Aug 26, 2008, 16:19
Цитат (neter @ Авг. 26 2008,02:29)
Я пробвай следните две команди и ми кажи с коя от двете си успял да си пратиш sms
Примерен код
echo "proba" | mail -t 35988ЬЬЬЬЬЬЬ@sms.mtel.net
echo "proba" | mail 35988ЬЬЬЬЬЬЬ@sms.mtel.net


Примерен код
[root@stoyanov:~]$ echo "proba" | mail -t 35988ЬЬЬЬЬЬЬ@sms.mtel.net
[root@stoyanov:~]$ echo "proba" | mail 35988ЬЬЬЬЬЬЬ@sms.mtel.net



По двата начина не получих смс ,но явно и другаде има проблем.Веднага от абв си пратих писмо на 35988ЬЬЬЬЬЬЬ@sms.mtel.net и го получих моментално.


Титла: Ddns в опростен вариант, как да?
Публикувано от: neter в Aug 26, 2008, 16:49
:) Нямаш активен MTA (mail transfer agent) в системата. Инсталирай си exim и го пусни. Не е нужно да го настройваш. Веднага след пускането му ще можеш да пращаш sms-и. Виж коя от двете команди ще сработи при теб и ползвай нея в скрипта, а ако сработят и двете, използвай тази, синтаксисът на която ти харесва повече ;)


Титла: Ddns в опростен вариант, как да?
Публикувано от: h7d8 в Aug 27, 2008, 01:17
Цитат
Нямаш активен MTA (mail transfer agent) в системата. Инсталирай си exim и го пусни. Не е нужно да го настройваш. Веднага след пускането му ще можеш да пращаш sms-и. Виж коя от двете команди ще сработи при теб и ползвай нея в скрипта, а ако сработят и двете, използвай тази, синтаксисът на която ти харесва повече ;)
Exim ,бях го сложил ,но ми даде да го конфигурирам за да го пусне.Не помня със сигурност ,но много много май не четох с подробности кое за какво е.Ако има нещо специфично ще пробвам с eximconfig ,а ако има конф направо мога и него да сложа.Можеби нещо съм го омацал като ми даде да го конфигурирам.