shell脚本实战

学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章。
笔记只是方便学习,以下内容只涉及学习内容,切莫逾越法律红线。
安全见闻,包含了各种网络安全,网络技术,旨在明白自己的渺小,知识的广博,要时时刻刻保持平等的心,很多分类组合有互相包含也属于正常情况,遇到问题就能够举一反三。


前言

俗话说:学以致用,那今天就来敲几个shell脚本,巩固一下shell基础的知识点。大家一定要多动手尝试,这样才能融会贯通,将死知识内化为自己的东西。

一、计算器

1.脚本要求

2.代码实现

(代码不唯一,仅供参考):

3.代码思路

首先通过read函数读入三个运算参数,分别赋值给x,func,y变量

然后通过if判断三个变量是否为空,如果其中有为空的变量说明用户的参数输入不正确,提示argument error,再退出程序

再然后使用两组代码判断x和y变量是否为数字,其原理是expr函数之后的变量必须为数字才能计算,否则命令运行错误,返回非零的返回值,此时使用if判断$?是否等于0可判断出变量是否为数值

最后通过case语句对不同的func进行不同的处理,其中出发要判断除数是否为零

不难发现,我在代码中添加了很多对用户输入数据的验证命令,其目的在于提高脚本的健壮性。在编写代码时不能只考虑用户会乖乖的输入正确格式的数据,对于错误的输入我们也要考虑到,并且还要有相应的命令去处理这种情况,不然就会发生输错一个数据,卡,程序出错退出的情况,不仅用户体验不好,而且还可能存在安全问题。

 

二、阶乘

1.脚本要求

2.代码实现

(代码不唯一,仅供参考):

3.代码思路

首先通过read函数读入一个参数,赋值给x

然后判断x变量是否为数字

再然后定义变量result并赋值为1,其作用是作为阶乘运算的迭代变量

最后使用for循环进行阶乘运算,使用seq命令生成1到$x的列表,然后使用for循环一次读取该列表中的值,在每次循环中都令旧的result变量的值乘该轮的i值,再赋值给result变量。循环结束后输出result值。

三、获取eht0网卡的IPv4地址

1.脚本要求

2.代码实现

3.代码思路

这段代码的意思是先执行ifconfig eth0输出eth0网卡的信息并将输出的结果通过管道作为下一个命令grep的输入。然后执行grep,筛选模式是一个正则表达式,意思是筛选含有inet字符串且某单词结尾就是inet的字符串行,然后也是将输出作为下一命令的输入处理。awk默认以空格(‘ ‘)分割输入字符串,使用定义的函数{print $2}输出经过分割后的列表的第二个元素的值,即网卡IPv4地址。然后将这一串代码通过反引号``执行后将得到的结果赋值给ip变量,最后通过echo输出结果。

四、计划任务

1.实验要求

我这里实现的是将脚本三的代码加入计划任务,并设置随时执行,然后把结果输出到~/ip.txt

2.实验实现

首先修改代码,添加环境变量PATH和结果重定向,因为在crontab的环境中PATH路径的设置是不全面的,这导致有的命令放到其环境中运行不了,使用要在代码中重新设置一下PATH路径。

然后使用crontab -e添加任务计划

这一行的意思是*分 *时 *日 *月 星期* 执行后面的命令,*表示任意

然后启动cron服务

脚本就会随时执行了,实际上是一分钟执行一次,因为cron一分钟检查一次规则文件

五、无限重启

1.实验要求

2.实验实现

首先编写好重启脚本

然后给脚本赋权

再然后把他放到/etc/init.d目录下(我这里已经放到该目录下了)

再然后进入/etc/rc5.d目录下,在该目录下新建一个重启脚本的符号链接,rc5.d是图形界面运行级别的开机启动程序目录,想详细了解可以去搜搜“linux系统的运行级别”相关的知识。推荐看一下这篇文章:linux /etc/rc.d/目录的详解 - Dus - 博客园,讲的超详细

最后重启,系统开始无限重启


总结

以上就是今天要讲的全部内容,这次主要是shell实操的分享,自己动手写了几个shell脚本。动手操作是很重要的,因为计算机是一门很注重实操的课程,只有动起来进步的才会快。希望大家能动起手来,共同进步。喜欢的话可以给个一键三连吗,这对我很重要ヾ(≧▽≦*)o

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值