《Linux命令行与shell脚本编程大全》第二十六章 一些有意思的脚本
26.1 发送消息
26.1.1 功能分析
1.确定系统中都有谁
$who
给出的信息包括用户名 用户所在终端 用户登入系统的时间
2.启用消息功能
用户可以禁止别人给我发消息,所以需要先检查一下是否允许发送消息。
$mesg
结果是is n说明消息发送被关闭了。 is y 表示允许发送消息
还可以查看别人的消息状态,
$who –T
用户名后面的-表示用户的消息功能已经关闭。+表示已经启用
要接受消息可以使用mesg 的y选项,这样消息功能就启用了。
$mesg y
3.向其他用户发送消息
消息功能启用以后,就可以使用write命令通过用户名和当前终端向其发消息
用who查看:给xiaochongyong pts/19发送消息

$write xiaochongyong pts/19 #这样就是发送消息
我开了两个终端,一个是pts/17 一个是19。下面是19接收到的

注意:接收方接到消息后经常需要按回车来重新获得命令行提示符
26.1.2 创建脚本
有几个步骤
1)先检查用户是否登录
2)检查用户是否能接收消息
3)检查是否包含要发送的消息
4)发送消息
代码如下:
xcy@xcy-virtual-machine:~/shell/26zhang$ cat mu.sh
#!/bin/bash
muser=$1
logged_on=$(who | grep -i -m 1 $muser | gawk '{print $1}')
#1) determine if user is logged
if [ -z $logged_on ]
then
echo "$muser is not logged on"
echo "Exiting script......"
exit
fi
#2) determine if user allows messages
allowed=$(who -T | grep -i -m 1 $muser | gawk '{print $2}')
if [ $allowed != "+" ]
then
echo "$muser does not allowing messageing."
echo "Exiting script......"
exit
fi
# 3) check message
if [ -z $2 ]
then
echo "No message parameter included"
echo "Exiting script......"
exit
fi
shift
while [ -n "$1" ]
do
whole_message=$whole_message' '$1
shift
done
# 4) Send message to user
uterminal=$(who | grep -i -m 1 $muser | gawk '{print $2}')
echo $whole_message | write $logged_on $uterminal
exit
运行结果:

可以看到右下角的提醒:

26.2 获取格言
26.2.1 功能分析
在指定的网址上提取一行格言,励志的话。
1.学习wget
wget能够将web页面下载到本地linux系统中。
功能十分丰富,这里只介绍一点点。
如何使用,使用wget命令和网站地址就行了
$wget www.baidu.com
会将网站的信息存储在与web页面同名的文件中。这里是保存在了index.html
还可以通过-o选项指定将会话输出保存在日志文件中
$wget –o baidu.log www.baidu.com
还可以用-O,控制web页面信息保存的位置。可以自己指定文件名,
$wget –o baidu.log –O baidu.html www.baidu.com
2.测试web地址
有写wed地址会变化。所以需要测试地址的有效性。
使用 –spider选项
$wget –spider www.baidu.com
还可以加上-nv选项,精简输出信息
$wget –spider –nv www.baidu.com
这里可以测试一个无效的地址
$wget –spider –nv www.xiaochongyong.com
26.2.2 创建脚本
xcy@xcy-virtual-machine:~/shell/26zhang$ cat quota.sh
#!/bin/bash
quote_url=www.quotationspage.com/qotd.html
#quote_url=www.baidu.com
check_url=$(wget -nv --spider $quote_url 2>&1)
if [[ $check_url == *error404* ]]
then
echo "Bad web address"
echo "$quote_url invalid"
echo "Exiting script ..."
exit
fi
#wget -o /tmp/quote.log -O /tmp/quote.html $quote_url
wget -o quote.log -O quote.html $quote_url
sed 's/<[^>]*//g' quote.html | #去除<>
#grep "$(date +%B' '%-d,' '%Y)" -A2 | #匹配格言中当前日期的右边。-A2选项提取出另外 两行文本
grep "28, $(date +%Y)" -A2 | # xcy add
sed 's/>//g' | # 删除>
sed '/ /{n ; d}' |
gawk 'BEGIN{FS=" "} {print $1}' |
tee daily_quote.txt > /dev/null #保存文件
exit
xcy@xcy-virtual-machine:~/shell/26zhang$ ./quota.sh
xcy@xcy-virtual-machine:~/shell/26zhang$ cat daily_quote.txt
Selected from Michael Moncur's Collection of Quotations - November 28, 2017
Perpetual devotion to what a man calls his business, is only to be sustained by perpetual neglect of many other things. Robert Louis Stevenson (1850 - 1894)
xcy@xcy-virtual-machine:~/shell/26zhang$
注意这个:#grep "$(date +%B' '%-d,' '%Y)" -A2 |
由于我的乌班图是中文的,一直都搜不到November。我就把它换成了这个,只匹配28, 2017
grep "28, $(date +%Y)" -A2 | # xcy add
本来想这样的grep "$(date +%-d,’ ’%Y)" -A2 | # xcy add,不知道为啥我的日期是29。而网站上的是28.可能跟是美国的网站有关系。
26.3 编造借口
curl工具允许你从特定的Web服务器中接收数据。还可以用它发送数据。
这里测试需要美国的SMS卡,就不研究了。
《Linux命令行与shell脚本编程大全》第二十六章 一些有意思的脚本的更多相关文章
- 《Linux命令行与shell脚本编程大全》 第六章环境变量
很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息. 6.1 什么是环境变量: bash shell用一个叫环境变量(environment variable)的特性来存储有关shel ...
- Linux命令行与shell脚本编程大全.第3版(文字版) 超清文字-非扫描版 [免积分、免登录]
此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Linux命令行与shell脚本编程大全.第3版 (大小:约22M)
- 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---56
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---55
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---54
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
随机推荐
- css雪碧图(css splite)
将很多小的背景图片放在一起,可以减少http请求. 这些图片通常是一类的. 所以使用雪碧图. 雪碧图即为: 测试一下减少了多长时间 0 = 0
- Unable to open debugger port (127.0.0.1:51554): java.net.SocketException "socket closed"
刚开始使用IDEA 总是有各种各样奇葩的问题 启动报错: Unable to open debugger port (127.0.0.1:51554): java.net.SocketExceptio ...
- PCL 1.60 +windows+vs2010 安装与配置
PCL简介 PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取.滤波.分 ...
- java 操作hbase1.2
说明: .第一部分为代码 .第二部分为工程pom文件 [java] view plain copy import org.apache.hadoop.conf.Configuration; impor ...
- mysql索引优化建议
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- git使用教程之git分支
1 分支简介 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流. 你将经历如下步骤: 开发某个网站. 为实现某个新的需求,创建一个分支. 在这个分支上开展工作. 正在此 ...
- 【Win 10 应用开发】UI Composition 札记(三):与 XAML 集成
除了 DirectX 游戏开发,我们一般很少单独使用 UI Composition ,因此,与 XAML 互动并集成是必然结果.这样能够把两者的优势混合使用,让UI布局能够更灵活. 说到与 XAML ...
- onload、DOMContentLoaded与性能问题
onload.DOMContentLoaded与性能问题 onload事件 DomContentLoaded 1.onload事件 onload事件一般在所有的文档内容加载完成后触发,如果网页中图 ...
- struts2框架的登录制作
首先:我们要建一个web项目 接着: 我们先来导入struts的xml文件 第一步:右击你的项目名,鼠标到MyEclipse会看到一个add struts开头的文件,点开以后看到: 这里我们选择str ...
- Node.js初探之POST方式传输
小知识:POST比GET传输的数据量大很多 POST发数据--"分段" 实例: 准备一个form.html文件: <!DOCTYPE html> <html> ...