【引言】
您是否曾经遇到过需要提取大量IP地址、归档文件、发送消息等烦琐的工作?
如果是,那么您一定不能错过这篇文章!
在本文中,我们将探讨Shell编程的各种技巧和方法,帮助您轻松完成这些任务。无需任何编程基础,只需跟随我们的指导,您就可以成为一名懂得如何高效地处理工作的专家!
现在就开始学习吧
【shell编程-提取IP地址】
1、使用cut文本处理工具提取
[root@hadoop129 scripts]# ifconfig ens33 | grep netmask | cut -d " " -f 10
192.168.xxx.xxx
2、使用awk文本处理工具提取
[root@hadoop129 scripts]# ifconfig ens33 | awk '/netmask/{print $2}'
192.168.xxx.xxx
【shell编程-文件归档】
需求说明:设置定时任务,每天凌晨1点进行将指定目录(/root/scripts)下文件按照archive_目录名_年月日.tar.gz的格式归档存放到/root/archive 路径下。
1、编写脚本文件archive_script.sh
1 #!/bin/bash
2 # 检查参数格式是否是1
3 if [ $# -ne 1 ]
4 then
5 echo "参数个数错误,应该输入一个参数作为归档目录名!"
6 exit
7 fi
8
9 # 检查参数是否为目录
10 if [ -d $1 ]
11 then
12 echo
13 else
14 echo "参数不是一个目录,请检查!"
15 exit
16 fi
17
18 # 获取目录名称和路径
19 DIR_NAME=$(basename $1)
20 DIR_PATH=$(cd $(dirname $1);pwd)
21
22 # 获取当前日期
23 DATE=$(date +%y%m%d)
24
25 # 定义生成的归档文件名称
26 FILE=archive_${DIR_NAME}_$DATE.tar.gz
27 DEST=/root/archive/$FILE
28
29 # 进行归档
30 echo "开始归档..."
31 tar -zcf $DEST $DIR_PATH/$DIR_NAME
32
33 # 判断归档是否成功
34 if [ $? -eq 0 ]
35 then
36 echo "已归档成功!"
37 echo "归档文件为:$DEST"
38 exit
39 fi
2、给脚本文件的属主添加可执行权限
[root@hadoop129 scripts]# chmod u+x archive_script.sh
3、设置定时任务
[root@hadoop129 scripts]# crontab -e
* 1 * * * /root/scripts/archive_script.sh /root/archive
4、查询定时任务
[root@hadoop129 scripts]# crontab -l
* 1 * * * /root/scripts/archive_script.sh /root/archive
【shell编程-发送消息】
需求:利用 Linux 自带的 mesg 和 write 工具,编写一个向用户快速发送消息的脚本,输入用户名作为第一个参数,消息内容为第二个参数。脚本需要检测用户是否登录,是否打开消息功能,以及当前发送消息是否为空。
1、编写脚本
send_message.sh
#!/bin/bash
# 脚本说明:执行此脚本的时候需要传入两个参数($1用户名、$2消息内容),用于向指定登录用户快速发送消息。
# 判断用户是否登录,忽略大小写,多个用户的话匹配第一个
login_user=$(who | grep -i -m 1 $1 | awk '{print $1}')
if [ -z $login_user ]
then
echo "$login_user 未登录!"
echo "脚本退出..."
exit
fi
# 判断用户是否开启发送消息功能
is_allowed=$(who -T | grep -i -m 1 $1 | awk '{print $2}')
if [ $is_allowed != "+" ]
then
echo "$login_user 未开启发送消息功能,请先开启!"
echo "脚本退出..."
exit
fi
# 判断消息内容是否为空
if [ -z $2 ]
then
echo "消息内容为空,请检查!"
echo "脚本退出..."
exit
fi
# 获取完整消息内容
whole_msg=$(echo $* | cut -d " " -f 2-)
# 获取登录终端名称
user_terminal=$(who | grep -i -m 1 $1 | awk '{print $2}')
# 发送消息并判断是否发送成功
echo $whole_msg | write $login_user $user_terminal
if [ $? = 0 ]
then
echo "发送成功!"
else
echo "发送失败!"
fi
exit
2、给脚本添加可执行权限
[root@hadoop129 scripts]# chmod u+x send_message.sh
3、执行脚本
[root@hadoop129 scripts]# ./send_message.sh zhongxintao hello,welcome to linux!
发送成功!
4、登录用户查看消息
[zhongxintao@hadoop129 ~]$
Message from root@hadoop129 on pts/0 at 15:45 ...
hello,welcome to linux!
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
在我的QQ技术交流群里(技术交流和资源共享,广告勿扰)