表明发送成功或失败的消息十分有用,不过对脚本来说就没必要了。要删掉那些消息,只需将STDOUT重定向到/dev/null(参见第15章)就行了。遗憾的是小型linux系统,curl现今的输出结果未能令人满意。

$ curl http://textbelt.com/text  
> -d number=3173334444  
> -d "message=Test from curl" > /dev/null 
  % Total    % Received % Xferd  Average Speed...                                  Dload  Upload...   0    21    0    21    0    45     27     58 ... 
  $ 

前面这段经过摘录的输出显示了各类统计数据,假如使用curl进行错误排查的话,这种信息将很有用。并且对脚本而言,它们必须被屏蔽掉。好在curl命令有一个-s选项才能满足我们这个需求。

$ curl -s http://textbelt.com/text  
> -d number=3173334444  
> -d "message=Test from curl" > /dev/null 

这就很多了。可以把curl命令装入脚本中了。不过在查看脚本代码之前,有个话题还得讨论一下:通过电子电邮发送邮件。

2.使用电子电邮发送邮件

倘若不准备使用提供的邮件中继服务,或是出于个别缘由,这种服务无法使用,你可以转而使用电子电邮来发送邮件。本节简略述说了怎样实现这些技巧。

警告假如你的手机营运商不在法国,这项网路服务可能无法使用。除此之外,你的手机营运

商其实会屏蔽发送自该网站的SMS消息。在这些情况下,你只能尝试使用电子短信发送。

是否还能使用电子电邮作为代替方案要取决于你的手机营运商。假如营运商使用了SMS网段,那算你运气好。联系你的手机营运商,领到网段的名子。网段名一般类似于或。

技巧你一般可以使用因特网找出手机营运商的SMS网段。有一个很棒的网站,

,里面列举了各类SMS网段以及使用方法。假如在里面没有找到你的营运商,那就使用搜索引擎搜索吧。

通过电子短信发送邮件的基本句型如下。

mail -s "your text message" your_phone_number@your_sms_gateway

说明假如mail命令在你的Linux系统上难以使用,就须要安装mailutils包。请阅读本书第9章查

linux常用文本编程器_linux命令行编程_linux命令,编辑器,shell编程实例大全

看怎么安装软件包。

不幸的是,当你根据句型输入完命令以后,必须输入要发送的邮件并按下Ctrl+D才才能发送。这类似于发送普通的电子电邮(参见第24章)。在脚本中似乎不适宜这样做。可以将电子电邮内容保存在文件中,之后用这个文件来发送邮件,具体的做法如下。

$ echo "This is a test" > message.txt $ mail -s "Test from email"  
3173334444@vtext.com < message.txt 

如今,发送电子电邮的句型就更适用于脚本了。不过要注意的是,这些方式还存在不少问题。首先,你的系统中必须运行一个短信服务器(参见第24章)。其次,你的手机服务提供商可能会屏蔽通过电子电邮发送的SMS消息。假如你准备在家里用这个法子的话,这些事时常会发生。

技巧假如你的手机服务提供商屏蔽了来自系统的SMS消息,可以使用基于云的电子短信服务

提供商作为SMS中继。使用你惯用的浏览器搜索关键字SMSrelayyour_favorite_cloud_email,查看搜索到的网站。

虽然使用电子短信发送邮件可以作为一种备选方案,但这些技巧还是问题多多。假如可以的话,免费的SMS中继网站和curl工具要来得容易。在下一节的脚本中,我们使用curl向你的手机发送邮件。

26.3.2创建脚本

实现了相应的功能以后,创建脚本来发送邮件就十分简单了。你须要的只是几个变量和curl命令。

脚本中要用到3个变量。假如信息发生了变化,将特定的数据项设置成变量更便于对脚本做出更改,这种变量如下。

# 
phone="3173334444" 
SMSrelay_url=http://textbelt.com/text text_message="System Code Red" 
# 

另外须要用到的就是curl工具了。完整的邮件发送脚本代码如下。

#!/bin/bash 
# 
# Send a Text Message 
################################ 
# 
# Script Variables #### 
# 
phone="3173334444" 
SMSrelay_url=http://textbelt.com/text text_message="System Code Red" 
# 
# Send text ########### 
# 
curl -s $SMSrelay_url -d  
number=$phone  
-d "message=$text_message" > /dev/null 
# 
exit 

假如你认为这个脚本简单易用,那就对了!更重要的是,这意味着你的shell脚本编程功底已增进不小。即使是简单的脚本也须要测试,在继续之前,先确保使用你的手机号测试了脚本。

技巧在测试脚本时,要注意网站不容许你在3分钟之外向同一个手机号码发送三条以上的邮件。

要想定时发送邮件,必须使用at命令。若果不太记得这个命令的用法,请参见第16章。

首先,可以使用这个新脚本测试一下at命令。在本例中,使用at命令的-f选项以及脚本文件名send_text.sh来运行脚本。假如须要立即运行的话,使用Now选项。

$ at -f send_text.sh Now 
job 22 at 2015-09-24 10:22 
$ 

脚本立即就开始运行了。不过在你手机接收到邮件之前可能须要等待1~2分钟。

要想让脚本在别的时间运行,使用其他的at命令选项(参见第16章)就可以了。在下边的事例中,脚本会在当前时间的25分钟以后运行。

$ at -f send_text.sh Now + 25 minutes job 23 at 2015-09-24 10:48 
$ 

注意,在递交了脚本以后,at命令给出了一条提示信息。信息中给出了日期和时间,指明脚本何时会运行。

真有意思!如今你拥有了一件脚本工具,可以在须要托词离开职工大会的时侯助你一臂之力。更妙的是,你还可以更改脚本linux命令,编辑器,shell编程实例大全,让它发送真正须要解决的真正严重的系统故障信息。

26.4小结

本章展示了怎样综合运用本书所讲授的shell脚本编程知识来创建一些有乐趣的shell脚本。每位脚本都巩固了我们以前学到的知识,另外还引入了一些新的命令和思路。

首先演示了怎么向Linux系统中的其他用户发送消息。脚本检测了用户是否早已登陆系统以及是否容许消息功能。检测完以后中标linux,使用write命令发送指定的消息。除此之外,我们还给出了一些脚本的更改建议,这种建议有助于提升你的脚本编撰水平。

接出来一节介绍了怎样使用wget工具获取网站信息。本节所创建的脚本可以从Web页面中提取名言。检索完毕后,脚本借助一些工具找出实际的名言文本。这种工具包括熟悉的sed、grep、gawk和tee命令。对于这个脚本linux命令,编辑器,shell编程实例大全,我们同样给出了一些更改建议,值得你用心思索,以巩固和提升自己的技能。

本章最后介绍了简单有趣的可以给自己发送邮件的脚本。在这一节中我们认识了curl工具的用法以及SMS的概念。虽然这只是个趣味性脚本,但你也可以对其进行更改,用于更严肃的目的。

谢谢你加入这场Linux命令与shell脚本编程之旅。希望你才能享受这段旅程,学会怎样使用命令行,怎样创建shell脚本,提升工作效率。但不要就此停下学习命令行的步伐。在开源世界中,总有一些新东西正在蕴育,可能是新的命令行实用工具,也可能是一个全新的shell。不要丢下Linux命令行,也别忘了紧跟新的发展和功能。

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复