脚本开发与自动化运维

shell脚本开发

grep搜索工具

参数:

  • -A<显示行数>-A NUM, --after-context = NUM,除了显示符合范本样式的那一行之
  • 外,并显示该行之后的内容。
  • -B<显示行数>--before-context = NUM,除了显示符合样式的那一行之外,并显示该
  • 行之前的内容。
  • -C<显示行数>-NUM, --context = NUM,除了显示符合样式的那一行之外,并显示该
  • 行之前后的内容。
  • -c:统计匹配的行数
  • -e :实现多个选项间的逻辑 or 关系
  • -E:扩展的正则表达式,grep -E 等同于 egrep
  • -f FILE:从 FILE 获取 PATTERN 匹配
  • -F :相当于 fgrep
  • -i --ignore-case #忽略字符大小写的差别。
  • -n:显示匹配的行号
  • -o:仅显示匹配到的字符串
  • -q: 静默模式,不输出任何信息
  • -s:不显示错误信息。
  • -v:显示不被 pattern 匹配到的行,相当于[^] 反向匹配
  • -w :匹配 整个单词

 

 

sed

sed [ 参数 ] '[ 地址定界 ] command' file

  • command】常用的有如下几种:
  • d:表示删除行。
  • p:打印该行。
  • a:在当前行之后插入新行新内容,每行末尾需要使用‘\’续行。
  • i:在当前行之前插入新行新内容,每行末尾需要使用‘\’续行。
  • cc 符号后的新行新内容,替换当前行中的文本,每行末尾需要使用‘\’续行,整行
  • 替换。
  • r:读取指定文件的内容。
  • w:写入指定文件。
  • s:替换指定字符

参数

 -n:静默模式。不输出模式空间内容到屏幕。

  • d:表示删除行。
  • p:打印该行。
  • a:在当前行之插入新行新内容,每行末尾需要使用‘\’续行;
  •  i:在当前行之插入新行新内容,每行末尾需要使用‘\’续行;
  •  cc 符号后的新行新内容,替换当前行中的文本,每行末尾需要使用‘\’续行,整行
  • 替换
  • r:读取指定文件的内容。
  • w:写入指定文件。
  • s :替换指定字符。
  • -i:直接将处理结果写到文件中。

实训一:安装nginx脚本

#!/bin/bash
# 查询是否安装了 ssh 服务,结果重定向到临时文件 temp_text 中
dpkg -l | grep nginx > temp_text
if [ $? -ne 0 ]
then
# 安装 ssh 服务
sudo apt-get install nginx -y
# 修改配置,允许 root 远程登录
fi
# 查询是否开启了 ssh 服务,结果重定向到临时文件 temp_text 中
ps -e | grep nginx > temp_text
if [ $? -ne 0 ]
then
sudo systemctl start nginx
fi

 

awk 基本语法

awk '{pattern + action}' {filenames}
  • $0 变量:指的是整条记录
  • NF:以空格或 tab 分隔
  • FS:默认为空格或 tab,如 tail -n 5 /etc/passwd |awk -F : '{print $1,$5}' ,将以冒号为分隔符,打印出 /etc/passwd 文件后 5 行的第一、第五列的内容
  •  $1 表示第一个域,$n 表示第 n 个域

统计test中a出现的次数:

 

Python 脚本开发及其在 DevOps 中的应用

os 模块

编程实现获取 /root 目录下的所有 .sh 文件并将其打印输出
import os
path = os.chdir('/home/dhy/course04')
sh_files = [f for f in os.listdir(path) if '.sh' in f]
print(sh_files)

path 子模块

datetime 模块

date 子模块

  • today():获取今天的时间。
  • date():构造日期。
  • d 进行格式化输出,返回格式为字符串。 %Y 表示年份、 %m 表示月份、 %d 表示
    日。

 

time 子模块

time 子模块,以小时、分钟和秒表示一天中的时间。分别获取小时、分钟、秒、毫
秒,调用 strftime()将 t 转化为指定格式的时间, %H 表示小时,%M 表示分钟,%S 表示
秒钟

 

datetime 子模块

获取当天的日期时间,使用 strftime ()进行格式化,转换为字符串类型;使用 strptime
()将字符串类型的时间转成 datetime 类型的时间

 timedelta 子模块

timedelta 子模块用于时间的计算。

​​​​​​​

psutil 模块

 

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南栀北夏ii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值