shell编程第四天(day036)

1.脚本常用命令

本地检查端口 ss -luntp

远程检查端口nmap -p80 www.baidu.com telnet

进程 ps top

检测连通性ping iftop dig

http请求 curl/wget

系统全能 atop/all

2.shell编程的for循环

普通形式for循环

for 变量 in 候补清单列表

do

命令

done

C语言形式for循环

for ((i=1;i<=10;i++))

do

echo $i

done

for循环案例

双重for循环打印九九乘法表

复制代码
for((i=1;i<=9;i++))
do
  for((j=1;j<=9;j++))
     do
        if [ $j -lt $i -o $j -eq $i ];then
        echo -n "$j*$i=$((j*i))  "
           [ $((j*i)) -lt 10 ] && echo -n  " "
        fi
     done
     echo
done

3.while循环

while 条件

do

命令

done

4.退出本次循环

continue

5.while循环读取文件

file=文件

while read line(可以改为其他名字,代表每一行)

do

命令

done <$(file)

6.案例

分析ngx访问日志找出访问量最高的前5个ip及其访问次数,ip访问次数大于200通过iptables屏蔽ip。

步骤

1.分析ngx访问日志,访问次数最高的5个ip及访问次数,保存到文件中.

2.while循环,读取res.txt文件,读取ip和次数.

3.如果次数大于200,而且防火墙规则没有这个ip,则屏蔽,已经屏蔽,则读取下一行.

4.读取直到文件结束.

#分析ngx访问日志,访问次数最高的5个ip及访问次数,保存到文件中

access_log=/server/files/access.log

result.file=/server/files/result.txt

awk '{print 1}' {access.log} | sort|uniq -c |sort -rn|head -5 >${result.file}

#循环判断

while read line

do

ip_cnt=`echo line\|awk '{print 1}'`

ip_addr=`echo line\|awk '{print 2}'`

if [ ip_cnt -ge 200 -a \`iptables -nL \| grep -wc "{ip_addr}" ` -eq 0];then

iptables -t filter -I INPUT -s $(ip_addr) -j DROP

fi

iptables -t filter -

done

done<$(result.file)

优化,可以让while读取两个变量,count和ip,这样子就不需要ip_cnt和ip_addr

while read count ip

do

echo count ip

done<$(result.file)

相关推荐
腾讯蓝鲸智云22 分钟前
嘉为蓝鲸可观测系列产品入选Gartner《中国智能IT监控与日志分析工具市场指南》
运维·人工智能·信息可视化·自动化
路溪非溪2 小时前
Linux下蓝牙框架的数据流
linux·arm开发·驱动开发
能不能别报错2 小时前
openclaw-linux部署教程+mimo-v2-pro
linux·运维·服务器
小虎卫远程打卡app3 小时前
光通信与视频编码前沿技术综述:从超大容量传输到实时神经网络编码
运维·网络·信息与通信·视频编解码
钛态3 小时前
Flutter for OpenHarmony:mockito 单元测试的替身演员,轻松模拟复杂依赖(测试驱动开发必备) 深度解析与鸿蒙适配指南
服务器·驱动开发·安全·flutter·华为·单元测试·harmonyos
ToB营销学堂3 小时前
B2B营销自动化新解法:MarketUP聚焦高转化场景
大数据·运维·自动化
TK云大师-KK3 小时前
TikTok自动化直播遇到内容重复问题?这套技术方案了解一下
大数据·运维·人工智能·矩阵·自动化·新媒体运营·流量运营
济6173 小时前
ARM Linux 驱动开发篇---基于 pinctrl+GPIO 子系统的蜂鸣器驱动开发(设备树版)--- Ubuntu20.04
linux·嵌入式·嵌入式linux驱动开发
AiGuoHou13 小时前
Debian/Ubuntu 各个版本一键更换国内镜像源
linux·ubuntu·国内源·debian·镜像源·换源
蓝羽天空3 小时前
Ubuntu 24.04 安装 Docker
linux·ubuntu·docker