阶段九:shell脚本之Shell小工具与判断语法
一、Shell编程小工具(重点)
1、cut工具
作用:cut是列截取工具,用于列的截取
语法:
cut 选项 文件名常见选项:
-c: 以字符为单位进行分割,截取
-d: 自定义分隔符,默认为制表符\t
-f: 与-d一起使用,指定截取哪个区域举例说明:
cut -d: -f1 1.txt 以:冒号分割,截取第1列内容
cut -d: -f1,6,7 1.txt 以:冒号分割,截取第1,6,7列内容
cut -c4 1.txt 截取文件中每行第4个字符
cut -c1-4 1.txt 截取文件中每行的1-4个字符
cut -c4-10 1.txt 截取文件中每行的4-10个字符
cut -c5- 1.txt 从第5个字符开始截取后面所有字符案例:提取出当前服务器上所有用户的用户名进行权限管理审查,但只需提取 /etc/passwd 文件中的用户名信息,而不需要其他字段。
解决方案:通过 cut 命令,使用 : 作为分隔符,仅提取用户名列。
cut -d: -f1 /etc/passwd小结:
cut作用?用于截取指定列的信息
-c:字符
-d、-f:-d指定分隔符,-f指定截取第几列
2、sort工具
作用:sort工具用于排序;它将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
语法和选项:man sort
-u :uniq去除重复行
-r :reverse降序排列,默认是升序
-o : 将排序结果输出到文件中,类似重定向符号>
-n :以数字排序,默认是按字符排序
--------------------------------------------------
-t :分隔符
-k :第N列
-R :随机排序,每次运行的结果均不同举例说明:
sort -n -t: -k3 1.txt 按照用户的uid进行升序排列
sort -nr -t: -k3 1.txt 按照用户的uid进行降序排列
sort -n 2.txt 按照数字排序
sort -nu 2.txt 按照数字排序并去重
sort -nr 2.txt 按照数字进行降序排列
sort -nru 2.txt 按照数字进行降序排列并去重
sort -n 2.txt -o 3.txt 按照数字排序并将结果重定向到文件
sort -R 2.txt 随机排序
sort -u 2.txt 去除重复行sort作用?就是用于日常排序操作,默认按照字符升序,可以使用(-n)参数按照数字排序?如果想降序,使用(-r)
3、uniq工具
uniq用于去除连续的重复行
常见选项:
-i: 忽略大小写
-c: 在每一行的前面显示该行在文件中出现的次数 => 统计这一行出现频率频次 => 数据统计
-d: 只显示重复行
举例说明:
uniq 2.txt
uniq -d 2.txt
uniq -dc 2.txt案例:在 CentOS Stream 9 的服务器上,运维团队检测到多次失败的登录尝试,怀疑存在潜在的恶意入侵。为了提高服务器的安全性,运维团队需要快速找到频繁失败登录的IP地址,以便采取进一步的安全措施(如阻止IP、加强认证机制等)
第一步:从日志中提取失败登录的IP地址
使用 grep 查找失败的登录尝试: 登录失败的相关日志通常包含 "Failed password" 关键字。
grep "Failed password" /var/log/secure | cut -d ' ' -f 13执行结果:
- 成功后会输出匹配行;没有匹配时通常无输出并返回非零状态。
关键参数:
注意事项:
双向操作:
基本语法
2c2
备注说明:
2左边文件行号
c(change)修改
2右边文件的行号选项:-r选项代表递归操作
案例3:生成补丁文件(保证两个文件内容高度一致)
选项:-u选项以统一模式显示差异,这种格式在创建补丁时常用
我们还可以借助于diff补丁功能,保证两个文件内容的高度一致!
一般用于多日志合并分析
常用选项:
-d:delimiter,自定义间隔符,默认是tab
-s:串行处理,非并行准备数据
1 2 3
**注意事项:**效果
案例2:使用自定义分隔符
效果
a,1 b,2 c,3
效果
运维场景:在服务器上进行日志分析时,运维人员需要将不同日志文件的内容按行合并,以便比较同一时间段内发生的事件。
paste主要作用就是把文件进行(逐行)合并
实际生产环境中,通过把一些日志、文件进行逐行合并,方便分析。
tr用于字符转换,替换和删除;主要用于==删除文件中控制字符==或进行==字符转换==
基本语法
用法1:命令的执行结果交给tr处理,其中set1用于查询,set2用于转换处理 注:'set1'要替换或处理的字符集,'set2'将字符替换为的目标字符集
用法2:tr处理的内容来自文件,记住要使用"<"标准输入
用法3:匹配string1进行相应操作,如删除操作 常用选项:
常用正则表达式:
案例1:小写转大写注意事项:
**注意事项:**注意事项:
itheima/readme.txt
案例:
判断是否有读权限判断是否有写权限
判断是否有执行权限
案例演示:小结
通过新旧比较,了解两个文件的创建信息
案例:
a=5
b=5案例:
a=8 b=7
小结:
由于在Shell脚本中,很多数学符号都有特殊含义,如果要进行日常比较,只能使用字母形式的比较符号!
案例演示:
1
0
1
0
**注意事项:**
逻辑判断符号:
生产应用:代替if...else语句
执行原理:
因为中间&&,必须两边同时为真,同时执行; 如果左边是假的,则右边完全不需要执行了, 因为逻辑与,必须两边同时成立,只要有一边为假,最终结果肯定是假的。
要想获取最终结果必须执行右边表达式,才能获取最终结果
**注意事项:**
&&:前面的表达式为真
||:前面的表达式为假注意事项:
在日常运维中,管理员往往需要定期执行一系列检查操作,例如:
检查系统负载、活动进程和日志信息。
目前,手动执行这些检查任务耗时且容易出错,因此需要一个自动化脚本来定期执行这些任务,并将检查结果保存为日志,以供运维人员查看和分析。
#!/bin/bash
LOG_FILE="/var/log/centos_stream_9_health_check.log"
**注意事项:**
安装后打开,如下图所示:

点击左下角扩展模块(积木小图标)

在搜索框中,输入Tongyi关键词,安装通义灵码插件

安装完成后,点击Login登录,使用阿里云账号即可登录并免费使用通义灵码工具

使用通义灵码,辅助运维开发工作

官网地址:[https://kimi.moonshot.cn/](https://kimi.moonshot.cn/)

基于以上按钮上传课程讲义,然后让大模型帮助我们做核心内容的总结:

辅助学习:

