User-Profile-Image
hankin
  • 5
  • centos7
  • docker
  • mysql
  • PostgreSQL
  • git/gitlab
  • ELK
  • python
    • python-Tornado
    • python-django
  • redis
  • nginx
  • kvm
  • proxmox
  • mongo
  • kubernetes
  • prometheus
  • GlusterFs
  • nfs
  • freeswitch
  • httpd
  • shell脚本
  • linux
  • fastdfs
  • nextcloud
  • openssl
  • openvpn
  • rabbitmq
  • sqlite
  • svn
  • java
  • ubuntu
  • vue2
  • wordpress
  • php
  • IOT物联网
  • 项目
  • 故障处理
  • 树莓派
  • 博客存档
  • 未分类
  • 杂项
  • #1742(无标题)
  • 新视野
  • 分类
    • 项目
    • 树莓派
    • 杂项
    • 未分类
    • 新视野
    • 故障处理
    • 博客存档
    • wordpress
    • vue2
    • ubuntu
    • svn
    • sqlite
    • shell脚本
    • redis
    • rabbitmq
    • python-django
    • python
    • proxmox
    • prometheus
    • PostgreSQL
    • php
    • openvpn
    • openssl
    • nginx
    • nfs
    • nextcloud
    • mysql
    • mongo
    • linux
    • kvm
    • kubernetes
    • java
    • IOT物联网
    • httpd
    • GlusterFs
    • git/gitlab
    • freeswitch
    • fastdfs
    • ELK
    • docker
    • centos7
  • 页面
    • #1742(无标题)
  • 友链
      请到[后台->主题设置->友情链接]中设置。
Help?

Please contact us on our email for need any support

Support
    首页   ›   shell脚本   ›   正文
shell脚本

常用脚本

2022-11-04 15:39:56
821  0 0

CentOS7 下一个利用安全日志和防火墙防止暴力破解的SHELL脚本

    #!/bin/bash
    #第一次运行创建记录文件
    -f 1.txt || touch 1.txt
    while :
    do
        #查看日志中登陆失败的ip次数超过10次的用户ip
        fip=<code>awk '/Failed/{ip[$11]++;}END{for (i in ip){if (ip[i]>10){print i}}}' /var/log/secure</code>
        #循环取出登陆失败超过十次的ip进行处理
        for i in $fip
        do  
            #查看处理记录文件如果该ip没有存在处理记录中说明是没有处理过该ip
            a=<code>awk -F: -v i=$i '$2==i{print}' 1.txt | wc -l</code>
            #如果有查到结果则说明已经处理过该ip     
            if [ "$a" -ne 0 ]
            then
                echo "服务器安全"
            else
                #将新的***ip加入防火墙阻止(方入drop的区域则该ip发送的数据包会立刻丢弃不做回应)区域
                    firewall-cmd --zone=drop --add-source=$i && echo "成功将:$i:加入防火墙block区域" >> 1.txt
            fi
        done
        #120s执行一次
        sleep 120
    done

CentOS7开放端口脚本

    #!/bin/bash

    systemctl status firewalld > /dev/null;
    echo "input port:$1"

    if [ $? -eq 0 ] # 判断上条命令执行结果是否为0()
    then
            echo "now open port :"
            firewall-cmd --zone=public --list-ports

            firewall-cmd --zone=public --query-port=$1/tcp > /dev/null   #查看端口号是否存在,存在返回yes,不存在返回no
            if [ $? -ne 0 ] # 判断上一条命令执行状态不为0,即:端口未开放。(上一条执行输出yes时.端口打开.执行状态为0)
            then
                    firewall-cmd --zone=public --add-port=$1/tcp --permanent > /dev/null
                    firewall-cmd --reload > /dev/null
                    echo "new open port :"
                    firewall-cmd --zone=public --list-ports

            else
                    echo "port $1 is alread opened!"
            fi
    fi

ping脚本

#ping
for IP in <code>cat IP.txt</code>
do
  ping -c 1 -i 0.2 -W 1 $IP &> /dev/nall
  #-c 设定尝试的次数,-i 每个数据发送的间隔,-W 超时等待的时间,/dev/nall是将结果存入黑洞中。
  if [ $? -eq 0 ]
  #判断上面的结果是否为正确,正确为0,错误为1。
  then
    echo "$IP yes "
    echo $IP &>> yes.txt  
  else
    echo "$IP no "
    echo $IP &>> no.txt 
  fi
done

获取打印多个日志文件内的首位的时间,比对分割多个日志的时间内容

for i in a.txt b.txt c.txt ; do echo $1 && sed -n '1p' $i |awk -F '[-#,]' '{printf strtime("%Y%m%d-%H%M",substr($3,0,10))}" "' && do tail -n 1 $i |awk -F '[-#,]' '{print strtime("%Y%m%d-%H%M",substr($3,0,10))}' ;done

#写成一行,方便随时使用
#-#,为多个分隔符 awk支持用多个分隔符
#获取首尾或其他行 使用 sed head tail (如果首尾有几行不是正文的,用sed指定行)
#substr 是awk内部命令 ,将毫秒unix时间的后三位去掉(转秒),再用strtime转格式化

for循环多次执行任务

for i in {1..100} ;do ls ;done
评论 (0)

点击这里取消回复。

欢迎您 游客  

Copyright © 2025 网站备案号 : 蜀ICP备2022017747号
smarty_hankin 主题. Designed by hankin
主页
页面
  • #1742(无标题)
博主
tang.show
tang.show 管理员
linux、centos、docker 、k8s、mysql等技术相关的总结文档
210 文章 2 评论 194516 浏览
测试
测试