Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

sh/bash/dash/ksh/zsh等Shell脚本
头像
十月流星
帖子: 19
注册时间: 2010-02-02 11:01

Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#1

帖子 十月流星 » 2010-06-21 11:39

当前的Ubuntu服务器所在的网络环境是ADSL拨号,并用路由器把改服务器映射到外网了,每次必需要人帮忙查询到当前服务器的外网的IP地址告诉我后,我才可以进入到我的服务器管理,所以我想Ubuntu服务器实现让服务器自己获取当前外网的IP地址,并把它获取的外网的IP地址每天定时的发送到我的邮箱里~请各位帮帮忙~帮我解决下,谢谢~或者给我提供解决的意见办法,本人不胜感谢~
头像
boboj
帖子: 6
注册时间: 2010-06-09 12:58
联系:

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#2

帖子 boboj » 2010-06-21 15:03

代码: 全选

  
  1 #!/bin/sh
  2 
  3 
  4 ip=`curl -s 'http://checkip.dyndns.org' | sed 's/.*Current IP Address: \([0-    9\.]*\).*/\1/g'`
  5 echo "Sending ip $ip..."
  6 
  7 to="[email protected]"
  8 subject="IP"
  9 message="IP is $ip"
  10 headers="From:[email protected]"
  11 echo $message | mail -s $subject $to -- -f $headers
  12 echo "Send OK!"
先通过查询http://checkip.dyndns.org获取外网IP,通过sendmail发送邮件。
首先需要安装curl:

代码: 全选

sudo apt-get install curl
安装sendmail:

代码: 全选

sudo apt-get install sendmail
sendmail 貌似配置比较复杂,不过什么都不配,直接使用默认也可以发送邮件成功,学习ing~
至于如何定时发送,cron可以吧?
头像
十月流星
帖子: 19
注册时间: 2010-02-02 11:01

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#3

帖子 十月流星 » 2010-06-21 19:56

谢谢你,你可以给我个详细的配置步骤吗?
头像
十月流星
帖子: 19
注册时间: 2010-02-02 11:01

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#4

帖子 十月流星 » 2010-06-21 20:31

您好,再次感谢你的帮助和回复,上面的那么配置文件我不是很明白,你要是有时间的话,给写个配置的步骤可以吗?我测试下~谢谢了,我的邮箱[email protected]
头像
boboj
帖子: 6
注册时间: 2010-06-09 12:58
联系:

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#5

帖子 boboj » 2010-06-21 22:22

先安装sendmail,

代码: 全选

sudo apt-get install sendmail
什么都不用配,直接默认就可以
然后安装curl

代码: 全选

sudo apt-get install curl
然后编写下面的脚本checkIP.sh

代码: 全选

  1 #!/bin/sh
  2 
  3 #获取IP
  4 ip=`curl -s 'http://checkip.dyndns.org' | sed 's/.*Current IP Address: \([0-    9\.]*\).*/\1/g'`
  5 echo "Sending ip $ip..."
  6 #发送邮件
  7 to="[email protected]"
  8 subject="IP"
  9 message="IP is $ip"
 10 headers="[email protected]"
 11 echo $message | mail -s $subject $to -- -f $headers
 12 echo "Send OK!"
[email protected]换成你要接受邮件的邮箱,[email protected]是你sendmail服务器的名字。
这个脚本先从http://checkip.dyndns.org查询到外网IP,然后通过sendmail发送邮件。
最后配置每日定时执行者个脚本:
编辑/etc/crontab

代码: 全选

sudo vim /etc/crontab
添加如下

代码: 全选

0 6 * * *  root  /path/to/checkIP.sh(脚本文件路径)
这个配置的意思是每天6点执行查询IP脚本
最后重启cron

代码: 全选

sudo service cron restart
这样就可以了。(cron不懂得话,自己google吧)
头像
十月流星
帖子: 19
注册时间: 2010-02-02 11:01

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#6

帖子 十月流星 » 2010-06-22 21:47

你好,谢谢你的回复,今天晚上的时候我实验了下,环境是VMware7.1+Ubuntu Server 10.04(32位),
第一步:sudo apt-get install sendmail
第二步:sudo apt-get install curl
第三步:在vim /etc/checkIP.sh内容如下:
#!/bin/sh

#获取IP
ip=`curl -s 'http://checkip.dyndns.org' | sed 's/.*Current IP Address: \([0- 9\.]*\).*/\1/g'`
echo "Sending ip $ip..."
#发送邮件
to="[email protected]"
subject="IP"
message="IP is $ip"
headers="[email protected]"
echo $message | mail -s $subject $to -- -f $headers
echo "Send OK!"
第四步:编辑sudo vim /etc/crontab在最后一行添加如下内容:
00 20 * * * root /etc/checkIP.sh
第五步:重启cron
sudo service cron restart
第六步:我设置了我的Ubuntu系统时间,使用date查看跟我主机时间相对应;

第七步:我检查了我的收件箱,发现没有邮件,我检查了checkIP.sh文件的权限,发现没有执行权限,所以:
chmod 755 /etc/checkIP.sh

此时我又重新设定时间,并重启cron,但是还没有收到邮件,我不知道是怎么回事,请你指点!谢谢~
qu_son
帖子: 7
注册时间: 2010-06-06 13:29

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#7

帖子 qu_son » 2010-06-22 22:32

用wget +3322.org来做,不用收邮件直接一个域名搞定。
头像
boboj
帖子: 6
注册时间: 2010-06-09 12:58
联系:

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#8

帖子 boboj » 2010-06-23 10:27

十月流星 写了:你好,谢谢你的回复,今天晚上的时候我实验了下,环境是VMware7.1+Ubuntu Server 10.04(32位),
第一步:sudo apt-get install sendmail
第二步:sudo apt-get install curl
第三步:在vim /etc/checkIP.sh内容如下:
#!/bin/sh

#获取IP
ip=`curl -s 'http://checkip.dyndns.org' | sed 's/.*Current IP Address: \([0- 9\.]*\).*/\1/g'`
echo "Sending ip $ip..."
#发送邮件
to="[email protected]"
subject="IP"
message="IP is $ip"
headers="[email protected]"
echo $message | mail -s $subject $to -- -f $headers
echo "Send OK!"
第四步:编辑sudo vim /etc/crontab在最后一行添加如下内容:
00 20 * * * root /etc/checkIP.sh
第五步:重启cron
sudo service cron restart
第六步:我设置了我的Ubuntu系统时间,使用date查看跟我主机时间相对应;

第七步:我检查了我的收件箱,发现没有邮件,我检查了checkIP.sh文件的权限,发现没有执行权限,所以:
chmod 755 /etc/checkIP.sh

此时我又重新设定时间,并重启cron,但是还没有收到邮件,我不知道是怎么回事,请你指点!谢谢~
先试试直接手动执行那个脚本,看看能不能发吧,能的话,就是cron配错了,有可能是你设的时间已经过了,没有执行,不能的话,看看能不能直接查到IP,能的话就是sendmail有问题,再排查下吧。另外,[email protected]要换为你的机器名,不过貌似不换也无所谓。
basncy
帖子: 321
注册时间: 2009-11-19 10:40

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#9

帖子 basncy » 2010-06-23 11:21

qu_son 写了:用wget +3322.org来做,不用收邮件直接一个域名搞定。
嗯,用动态域名解决最好!

echo $message | mail -s $subject $to -- -f $header
这行报错,./sendmail.sh: line 10: mail: command not found
这个mail程序要install什么?
头像
十月流星
帖子: 19
注册时间: 2010-02-02 11:01

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#10

帖子 十月流星 » 2010-06-23 19:39

boboj 写了:
十月流星 写了:你好,谢谢你的回复,今天晚上的时候我实验了下,环境是VMware7.1+Ubuntu Server 10.04(32位),
第一步:sudo apt-get install sendmail
第二步:sudo apt-get install curl
第三步:在vim /etc/checkIP.sh内容如下:
#!/bin/sh

#获取IP
ip=`curl -s 'http://checkip.dyndns.org' | sed 's/.*Current IP Address: \([0- 9\.]*\).*/\1/g'`
echo "Sending ip $ip..."
#发送邮件
to="[email protected]"
subject="IP"
message="IP is $ip"
headers="[email protected]"
echo $message | mail -s $subject $to -- -f $headers
echo "Send OK!"
第四步:编辑sudo vim /etc/crontab在最后一行添加如下内容:
00 20 * * * root /etc/checkIP.sh
第五步:重启cron
sudo service cron restart
第六步:我设置了我的Ubuntu系统时间,使用date查看跟我主机时间相对应;

第七步:我检查了我的收件箱,发现没有邮件,我检查了checkIP.sh文件的权限,发现没有执行权限,所以:
chmod 755 /etc/checkIP.sh

此时我又重新设定时间,并重启cron,但是还没有收到邮件,我不知道是怎么回事,请你指点!谢谢~
先试试直接手动执行那个脚本,看看能不能发吧,能的话,就是cron配错了,有可能是你设的时间已经过了,没有执行,不能的话,看看能不能直接查到IP,能的话就是sendmail有问题,再排查下吧。另外,[email protected]要换为你的机器名,不过貌似不换也无所谓。

我手动执行过脚本了,谢谢你!貌似好像还是不行,我再检查下~你有时间的话,帮忙也测试下吧,说不定,你的代码都对,是我那里做错了,谢谢你哈~
头像
十月流星
帖子: 19
注册时间: 2010-02-02 11:01

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#11

帖子 十月流星 » 2010-06-23 19:41

basncy 写了:
qu_son 写了:用wget +3322.org来做,不用收邮件直接一个域名搞定。
嗯,用动态域名解决最好!

echo $message | mail -s $subject $to -- -f $header
这行报错,./sendmail.sh: line 10: mail: command not found
这个mail程序要install什么?

多学一种解决的办法,更好,老兄,你要不也把你的解决方案,做个步骤发上来吧!谢谢了~
头像
xyf
帖子: 2032
注册时间: 2007-05-05 23:59
来自: 嘉兴

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#12

帖子 xyf » 2010-06-24 20:00

用动态域名的话,直接ping就行了。
ufraw中文(raw图像处理)  http://sites.google.com/site/ufrawzh/
Gimp影像处理 http://sites.google.com/site/gimpcn/
basncy
帖子: 321
注册时间: 2009-11-19 10:40

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#13

帖子 basncy » 2010-06-25 9:22

十月流星 写了:
basncy 写了:
qu_son 写了:用wget +3322.org来做,不用收邮件直接一个域名搞定。
嗯,用动态域名解决最好!

echo $message | mail -s $subject $to -- -f $header
这行报错,./sendmail.sh: line 10: mail: command not found
这个mail程序要install什么?

多学一种解决的办法,更好,老兄,你要不也把你的解决方案,做个步骤发上来吧!谢谢了~
到http://www.3322.org/注册一个动态域名(免费)
然后终端运行:
lynx -mime_header -auth=user : pass "http://www.3322.org/dyndns/update?syste ... t.3322.org"

参见:http://www.3322.org/static/client.html
xiaorui
帖子: 23
注册时间: 2005-06-21 12:34

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#14

帖子 xiaorui » 2010-06-25 23:39

maybe .. chmod u+x name.sh
xiaorui
帖子: 23
注册时间: 2005-06-21 12:34

Re: Ubuntu下如何实现获取当前服务器的外网IP地址并把该地址发送到我的邮箱里!!!

#15

帖子 xiaorui » 2010-06-25 23:41

basncy 写了:
qu_son 写了:用wget +3322.org来做,不用收邮件直接一个域名搞定。
嗯,用动态域名解决最好!

echo $message | mail -s $subject $to -- -f $header
这行报错,./sendmail.sh: line 10: mail: command not found
这个mail程序要install什么?
apt-get install mailutils
回复