+ -
当前位置:首页 → 问答吧 → bash 通配符 如何表示'排除'?

bash 通配符 如何表示'排除'?

时间:2010-06-21

来源:互联网

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

作者: 十月流星   发布时间: 2010-06-21

代码:
 
  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可以吧?

作者: boboj   发布时间: 2010-06-21

谢谢你,你可以给我个详细的配置步骤吗?

作者: 十月流星   发布时间: 2010-06-21

您好,再次感谢你的帮助和回复,上面的那么配置文件我不是很明白,你要是有时间的话,给写个配置的步骤可以吗?我测试下~谢谢了,我的邮箱[email protected]

作者: 十月流星   发布时间: 2010-06-21

先安装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吧)

作者: boboj   发布时间: 2010-06-21

你好,谢谢你的回复,今天晚上的时候我实验了下,环境是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,但是还没有收到邮件,我不知道是怎么回事,请你指点!谢谢~

作者: 十月流星   发布时间: 2010-06-22

用wget +3322.org来做,不用收邮件直接一个域名搞定。

作者: qu_son   发布时间: 2010-06-22

十月流星 写道:
你好,谢谢你的回复,今天晚上的时候我实验了下,环境是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]要换为你的机器名,不过貌似不换也无所谓。

作者: boboj   发布时间: 2010-06-23

qu_son 写道:
用wget +3322.org来做,不用收邮件直接一个域名搞定。

嗯,用动态域名解决最好!

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

作者: basncy   发布时间: 2010-06-23

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]要换为你的机器名,不过貌似不换也无所谓。



我手动执行过脚本了,谢谢你!貌似好像还是不行,我再检查下~你有时间的话,帮忙也测试下吧,说不定,你的代码都对,是我那里做错了,谢谢你哈~

作者: 十月流星   发布时间: 2010-06-23

basncy 写道:
qu_son 写道:
用wget +3322.org来做,不用收邮件直接一个域名搞定。

嗯,用动态域名解决最好!

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



多学一种解决的办法,更好,老兄,你要不也把你的解决方案,做个步骤发上来吧!谢谢了~

作者: 十月流星   发布时间: 2010-06-23

用动态域名的话,直接ping就行了。

作者: xyf   发布时间: 2010-06-24

百度搜索(98kv444)最大的十八禁聊天室!

作者: 特务小象   发布时间: 2010-06-24

十月流星 写道:
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?system=dyndns&hostname=myhost.3322.org"

参见:http://www.3322.org/static/client.html

作者: basncy   发布时间: 2010-06-25

maybe .. chmod u+x name.sh

作者: xiaorui   发布时间: 2010-06-25