欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

shell语法和写脚本练习

程序员文章站 2022-04-24 10:22:28
...

作业一:awk文本处理

打印uid在30~40范围内的用户名。

awk -F: '$3>=30 && $3<=40{print $1}' passwd

shell语法和写脚本练习

打印第5-10行的行号和用户名

awk -F: 'NR<=10 && NR>=5{print NR,$1}' passwd

shell语法和写脚本练习

打印奇数行

awk -F: 'NR%2==1{print NR,$0}' passwd

shell语法和写脚本练习

打印偶数行

awk -F: 'NR%2==0{print NR,$0}' passwd

shell语法和写脚本练习

打印字段数大于5的行

awk -F: 'NF>5{print NF,$0}' passwd

shell语法和写脚本练习

打印UID不等于GID的用户名

awk -F: '$3 != $4{print $0}' passwd

shell语法和写脚本练习

打印没有指定shell的用户

awk -F: '$NF != " "{print $0}' passwd

shell语法和写脚本练习

作业二:shell脚本编写

自动部署、初始配置、并启动nginx反向代理服务

#!/bin/bash

echo '开始安装........'
yum install epel-release -y
yum install nginx -y
echo '更改配置...........'
a="/etc/nginx/nginx.conf "
echo '添加三台代理服务器IP地址.......'
sed -i "17a upstream app {" $a
read -p "输入第一台服务器IP地址:   " IP1
sed -i "18a server $IP1;}" $a

read -p "输入第二台服务器IP地址:   " IP2
sed -i "18a server $IP2;" $a

read -p "输入第三台服务器IP地址:   " IP3
sed -i "18a server $IP3;" $a

c="proxy_pass http://app;"
sed -i "51a $c" $a
echo "配置完成,启动服务............"
systemctl start nginx

后期可以使用for循环来简化流程。

shell语法和写脚本练习

shell语法和写脚本练习

shell语法和写脚本练习

shell语法和写脚本练习

shell语法和写脚本练习

自动部署、初始配置、并启动三台web

#!/bin/bash
echo '开始安装........'
yum install epel-release -y
yum install nginx -y
echo '初始化配置.......'
echo '启动服务........'
systemctl start nginx

配置IP地址为上面设置好的。

监控脚本:监控每台机器的内存使用率>70%,则输出报警信息

#!/bin/bash
while :
do
a=`free |awk 'NR==2{print $3/$2}'`
b=`echo "scale=2;$a/1"|bc|sed  "s/\.//"`
echo '当前内存使用率:'$b%
(($b>70)) && echo '内存使用过高!!!!!'
sleep 2
done

shell语法和写脚本练习

shell语法和写脚本练习