1.端口占用

检测端口占用情况,如果被占用则随机分配指定范围内端口。

脚本

#!/bin/bash
#
# 检测端口占用,如果占用则随机分配指定范围内端口# 端口范围
min=10800
max=12000port="$1"
if [[ -z "${port}" ]]; thenecho "Usage: $0 PORT"exit 1
fi# 检测端口占用
while lsof -i:"${port}" ; doport=$((RANDOM%$(( ${max} - ${min} )) + ${min} ))if ! lsof -i:"${port}" ; thenecho "$1 端口被占用,已重新分配端口: ${port} "exit 0fi
done# 未进入while循环执行
echo "${port} 端口未被占用"

查看端口占用有两种方式

  • lsof -i:8080
  • netstat -tunlp | grep 8080

2.统计恶意攻击IP尝试破解登录次数

起因是最近购买的腾讯云服务器,一直提示被恶意尝试破解登录,现通过统计这些恶意IP尝试登录的次数,并查询出IP归属地信息,将次数过多的直接拉入黑名单。

脚本

#!/bin/bash
#
# 统计尝试攻击IP次数并查询归属地
# 对超过一定次数的IP添加黑名单# cip.cc 这个网站可以帮助查询IP归属地信息
# 也可以使用whois IP(前提是安装了whois命令)
# /etc/hosts.deny可以添加禁止的黑名单IP
# /var/log/secure/记录的尝试登录失败IP信息
# 日志信息需要root权限,所以执行脚本需要sudowebsite="cip.cc/"       # 可帮助查询IP归属地信息
threshold=30            # 登录失败超过该阈值被列为黑名单
tmp_file="tmp_"$$       # 临时文件存储日志过滤出的IP信息 $$为当前脚本的PID# 输出格式: 次数 IP 用户
cat /var/log/secure | awk '/Failed/{print $(NF-3),$(NF-5)}' | sort | uniq -c > ${tmp_file}while read ip_info; do# 读取临时文件,获取[IP|登录用户|次数] 信息ip=$(echo ${ip_info} | awk '{print $2}')fail_times=$(echo ${ip_info} | awk '{print $1}')login_user=$(echo ${ip_info} | awk '{print $3}')# 利用网站查询归属地信息,如果IP过多需要增加sleep时间,否则网页请求过于频繁。echo "${ip} 尝试登录 ${login_user}; 失败次数: ${fail_times}"curl ${website}${ip}sleep 1# 针对登录失败次数超过阈值的IP添加为登录黑名单if [[ ${fail_times} -ge ${threshold} ]]; thensudo grep ${ip} /etc/hosts.deny > /dev/nullif [[ $? -gt 0 ]]; thensudo echo "sshd:${ip}:deny" >> /etc/hosts.denyecho "${ip} 已被添加登录黑名单"elseecho "${ip} 已存在黑名单中"fifiecho "==========================================="
done < $tmp_file# 删除脚本生成的临时文件
sudo rm ${tmp_file}

笔记

  1. 获取文件某一列信息awk '{print $1}' 默认是以空格分割的,$1表示第一列。

  2. 多列输出我们用,符号 awk '{print $1,$2}' ,而$(NF-3)则是倒数列。

  3. 输出默认是空格分割$1$2,如果需要制定输出分割符,可以使用awk -v OFS="=" '{print $1,$2}',这里-v OFS="=" 我们就指定了以=分割。

  4. while read line 建议用重定向而不是管道命令符,原因可以参考:谷歌Shell脚本编程规范笔记

  5. 安装whois命令可以查询IP归属地信息,但是不够明显,利用第三方网站(cip.cc)获取的信息更加直观且友好。

Shell脚本编程案例集(持续更新)相关推荐

  1. shell脚本编程《linux下kvm虚拟机的创建、开启、显示、停止、重置》

    Shell脚本编程--案例一 编程要求: 1.创建vm-ctl脚本,在/bin/下 2.实现功能:创建虚拟机.创建虚拟机快照.开启虚拟机.显示虚拟机.停止虚拟机.重置虚拟机. 脚本实现预期结果: sh ...

  2. shell脚本编程神器之awk语法案例详解

    AWK入门指南 文章目录 shell脚本编程神器之awk语法案例详解 安装AWK AWK 起步示例 AWK程序的结构 执行 awk 程序 awk 的错误提示 简单输出 打印每一行 打印特定行 NF,字 ...

  3. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-汇总 ( Chapter1-Chapter16 )

    一.初识 Linux shell Linux 系统可划分为以下 4 部分. Linux 内核 GNU 工具 图形化桌面环境 应用软件 内核主要负责以下 4 种功能. 系统内存管理 内核通过硬盘上称为交 ...

  4. Shell脚本编程教程

    1.Shell脚本语言的基本结构 1.1 Shell脚本的用途: 自动化常用命令 执行系统管理和故障排除 创建简单的应用程序 处理文本或文件 1.2 Shell脚本基本结构: ​ Shell脚本编程: ...

  5. 《Linux命令行与shell脚本编程大全》(第三版)读书笔记

    第一部分 Linux命令行 第三章.基本的bash shell命令 bash手册 man 命令 例子: man cat 空格翻页.回车下一行.左右键看右侧(左侧)内容.q退出 info info in ...

  6. linux 命令行与shell脚本编程大全

    linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失. 第二章 第三章 1.man手 ...

  7. Shell脚本编程-总

    Shell脚本编程 一. SHELL入门 1.1 变量 1.1.1 变量名规范 1.1.2 位置变量 1.1.3 环境变量 1.2 管道 1.3 退出状态码 1.3.1 退出状态码描述 1.3.2 改 ...

  8. Linux基础篇--shell脚本编程基础

    Linux基础篇–shell脚本编程基础 本章内容概要  编程基础  脚本基本格式  变量  运算  条件测试  配置用户环境 7.1 编程基础 程序:指令+数据 程序编程风格:   过程式:以指令为 ...

  9. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter6-Linux 环境变量

    六.Linux 环境变量 bash shell 使用环境变量来存储 shell 会话和工作环境的相关信息(这也是被称作环境变量的原因).环境变量允许在内存中存储数据, 以便 shell 中运行的程序或 ...

最新文章

  1. 让软件版本信息自动引用SVN修订版本号
  2. 为什么on用的时候会失效?
  3. linux 创建组,创建用户
  4. Golang 交叉编译
  5. Jenkins配置:添加用户和管理权限
  6. Ubuntu18.10与windows7文件夹共享
  7. HBase常用操作备忘
  8. asp.net core中的razor页面
  9. PyPI可以使用的几个国内源
  10. 淘宝首页原生js练习(基础练习的基础中的基础)
  11. vue 点击图标旋转
  12. mumu模拟器切换android,MuMu模拟器“键位设置”功能详解!如有问题请联系在线客服~...
  13. Leetcode 5855 数组第K大的整数
  14. 基因组测序中N50和N90到底指什么?
  15. 封装组件引发的问题——vue给对象添加响应式属性
  16. 最大连续登录天数统计对应的用户数分布的三种实现方式(HQL+Spark Rdd)
  17. BERT如何解决一词多义问题
  18. oracle nested loops outer,11g对Nested Loops的改进
  19. Oracle Database 10g for Windows安装
  20. Linux设备模型之platform设备

热门文章

  1. HTML5 拖放(Drag 和 Drop)简介
  2. ECS的简单入门(六):传统GameObject模式转换到ECS模式
  3. [游戏开发]Unity Profiler真机调试
  4. 项目管理:KANO模型
  5. 【原】充电桩APP-原型设计
  6. Python基础笔记_Day14_Python图形化界面、Python GUI、tkinter、Python英汉词典
  7. 接口测试常用工具及测试方法(入门篇)
  8. 简单认识一下mbedTLS
  9. LED大屏分屏专业播放软件vMix Pro 19版一键和谐补丁永久使用
  10. 新版华为管家+NFC实现多屏协同2.0的方法