Linux下九个实用脚本

news2024/11/23 15:15:33

目录

1.批量创建用户并设置密码脚本

2.查看网卡实时流量脚本

3.nginx访问日志脚本

4.dos防范攻击(自动屏蔽攻击脚本)

5.监控多台服务器磁盘利用率脚本

6.监控MySQL主从同步异常脚本

7.批量检查网站异常脚本

8.查看服务器资源利用率脚本

9.查找占用CPU内存过高脚本


1.批量创建用户并设置密码脚本

#批量创建100个用户 user01 ~ user100

user=user

#创建存储用户和密码的文件

touch user.txt

txt=user.txt

#循环遍历1到100

for i in {1..100}

  do

    random=$[$RANDOM%100]

    if [ $i -lt 10 ];then

      name="${user}0$i"

      useradd $name

      echo $random | passwd --stdin $name &> /dev/null

      echo -e "$name  $random \t" >> $txt

      echo "$name 创建成功"

    else

      name="$user$i"

      useradd $name

      echo $random | passwd --stdin $name &> /dev/null

      echo -e "$name  $random \t" >> $txt

      echo "$name 创建成功"

    fi

done

2.查看网卡实时流量脚本

[root@ansible ~]# vim sd.sh

#!/bin/basha

RSY=$(cat /proc/net/dev | grep ens33 | sed 's/:/ /g' | awk '{print $10}' |awk '{print $1/1048576 "MB/s"}')

echo $RSY

[root@ansible ~]# watch -n 1 sh sd.sh        加上watch -n 1 来判断网卡实时流量

3.nginx访问日志脚本

cat /var/log/nginx/access.log |awk '{print $1,$4,$5,$6,$7,$8,$9, $10,$12,$13.$14,$15,$16,$17,$18,$19,$10}'|sort |uniq -c |sort -nr

[root@client1 ~]# cat /var/log/nginx/access.log |awk '{print $1, $4,$5,$6, $7 ,$8, $9, $10,$12,$13.$14,$15,$16,$17,$18,$19,$10}'|sort |uniq -c |sort -nr
      3 192.168.1.119 [17/Jul/2023:09:52:02 +0800] "GET / HTTP/1.1" 304 0 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 0
      2 192.168.1.119 [17/Jul/2023:09:52:03 +0800] "GET / HTTP/1.1" 304 0 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 0
      1 192.168.1.119 [17/Jul/2023:09:52:04 +0800] "GET / HTTP/1.1" 304 0 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 0
      1 192.168.1.119 [17/Jul/2023:09:52:01 +0800] "GET / HTTP/1.1" 304 0 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 0
      1 192.168.1.119 [17/Jul/2023:09:52:00 +0800] "GET / HTTP/1.1" 304 0 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 0
      1 192.168.1.119 [17/Jul/2023:09:51:57 +0800] "GET /img/header-background.png HTTP/1.1" 200 82896 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 82896
      1 192.168.1.119 [17/Jul/2023:09:51:57 +0800] "GET /favicon.ico HTTP/1.1" 404 3650 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 3650
      1 192.168.1.119 [17/Jul/2023:09:51:56 +0800] "GET /img/html-background.png HTTP/1.1" 200 1801 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 1801
      1 192.168.1.119 [17/Jul/2023:09:51:56 +0800] "GET /img/centos-logo.png HTTP/1.1" 200 3030 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 3030
      1 192.168.1.119 [17/Jul/2023:09:51:56 +0800] "GET / HTTP/1.1" 200 4833 "Mozilla/5.0 (WindowsNT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 4833
  • 192.168.1.119:客户端的IP地址。
  • [17/Jul/2023:09:52:02 +0800]:请求发生的日期和时间,以及时区偏移量。
  • "GET / HTTP/1.1":HTTP请求的方法、请求的路径和HTTP协议的版本。
  • 200:HTTP响应的状态码,这里是200,表示请求成功。
  • 4833:HTTP响应的内容长度。
  • "-":表示没有提供引用页面的信息。
  • "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.82":客户端使用的浏览器的用户代理标识。
  • 该日志条目表示在2023年7月17日09:52:02,来自IP地址为192.168.1.119的客户端发送了一个成功的GET请求,并返回了4833个字节的内容。客户端使用的浏览器是基于Chrome 114.0.0.0版本的Edge浏览器。

4.dos防范攻击(自动屏蔽攻击脚本)

[root@bogon ~]# vim dd.sh

RT=$(cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | awk '{print $1}')

FG=$( cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr  | awk '{print $2}')

if [ "$RT" -gt 250 ]      限定次数250  超过就屏蔽

then

    echo "正在防御"

   firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='$FG' drop"

   systemctl restart firewalld

else

    echo "无事发生"

fi

[root@bogon ~]#  watch -n 1 sh dd.sh

 

 如果超过限定次数

 会自动防范显示  管理员检查IP情况

 不过要退出 watch   才会使IP屏蔽

5.监控多台服务器磁盘利用率脚本

要借助Ansible自动化运维工具

[root@bogon ~]# watch sh dd.sh

[root@bogon ~]# vim dd.sh

#!/bin/bash

DF=$(ansible 192.168.1.* -m command -a "df -hT")

aa=$(echo "$DF"  | grep "/$" | awk '{print $5}' | awk '{print $1}')

GG=$(ansible 192.168.1.* -m command -a "df -hT" )

gg=$(echo "$GG" | awk  '{print $1,              $5,          $6}')

echo "全面分析: $gg"

echo "磁盘空间已使用: $aa"

if [ "$aa" = "50" ]; then

    echo "磁盘已经沾满不能存储数据!!!"

fi

[root@ansible ~]#  sh dd.sh 
全面分析: 192.168.1.111 rc=0 >>
文件系统 可用 已用%
devtmpfs 475M 0%
tmpfs 487M 0%
tmpfs 473M 3%
tmpfs 487M 0%
/dev/mapper/centos-root 16G 11%
/dev/sda1 847M 17%
tmpfs 98M 0%
192.168.1.108 rc=0 >>
文件系统 可用 已用%
devtmpfs 898M 0%
tmpfs 910M 0%
tmpfs 893M 2%
tmpfs 910M 0%
/dev/mapper/centos-root 16G 11%
/dev/sda1 834M 18%
tmpfs 182M 0%
磁盘空间已使用: 16G
16G

6.监控MySQL主从同步异常脚本

RT=$( cat /var/log/mariadb/mariadb.log |grep -n '[ERROR]' |wc -l)

GG=$( cat /var/log/mariadb/mariadb.log |grep -n '[ERROR]')

if [ "$RT" -gt 0 ]; then

    echo "主状态丢失: $GG"

else

    echo "主无事发生"

fi
RT=$( cat /var/log/mariadb/mariadb.log |grep -n 'up' |wc -l)

GG=$( cat /var/log/mariadb/mariadb.log |grep -n 'up')

if [ "$RT" -gt 0 ]; then

    echo "从状态丢失: $GG"

else

    echo "从无事发生"

fi

宕掉主  [root@ansible ~]# systemctl stop mariadb

[root@bogon ~]# watch sh dd.sh   

主状态丢失: 5:230717 10:48:00 InnoDB: Using Linux native AIO
26:230717 10:48:02 [Note] Plugin 'FEEDBACK' is disabled.
28:230717 10:48:02 [Note] Event Scheduler: Loaded 0 events
32:230717 10:53:31 [Note] 'CHANGE MASTER TO executed'. Previous state master_host='', master_port='3306', master_log_file='', master_log_pos='4'. New state master_host='192.168.1.118', master_port='3306', master_log_file='mysql-binlog.000003', master_log_pos='475'.
34:230717 10:53:46 [Note] Slave I/O thread: connected to master 'myslave@192.168.1.118:3306',replication started in log 'mysql-binlog.000003' at position 475
36:230717 10:55:51 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysql-binlog.000003' at position 475
37:230717 10:55:51 [ERROR] Slave I/O: error reconnecting to master 'myslave@192.168.1.118:3306' - retry-time: 60  retries: 86400  message: Can't connect to MySQL server on '192.168.1.118' (111), Error_code: 2003
40:230717 11:00:39 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysql-binlog.000004' at position 245
41:230717 11:00:39 [ERROR] Slave I/O: error reconnecting to master 'myslave@192.168.1.118:3306' - retry-time: 60  retries: 86400  message: Can't connect to MySQL server on '192.168.1.118' (111), Error_code: 2003
从无事发生

7.批量检查网站异常脚本

#!/bin/bash  

WZ="www.baidu.com www.ctnrs.com www.der-matech.net.cn www.der-matech.com.cn www.der-matech.cn www.der-matech.top www.der-matech.org"

for URL in $WZ; do

    CS=0

    for ((i=1;i<=3;i++)); do

        WZ=$(curl -o /dev/null --connect-timeout 3 -s -w "%{http_code}" $URL)

        if [ $WZ -eq 200 ]; then

            echo "$URL OK"

            break

        else

            echo "$URL retry $CS"

            let CS++

        fi

    done

    if [ $CS -eq 3 ]; then

        echo "Warning: $URL Access failure!"

                echo "网站$URL坏掉,请及时处理"

                echo  "网站高危$URL"

    fi

done

[root@client1 ~]# sh 1.txt 
www.baidu.com retry 0
www.baidu.com OK
www.ctnrs.com retry 0
www.ctnrs.com retry 1
www.ctnrs.com retry 2
Warning: www.ctnrs.com Access failure!
网站www.ctnrs.com坏掉,请及时处理
网站高危www.ctnrs.com
www.der-matech.net.cn retry 0
www.der-matech.net.cn retry 1
www.der-matech.net.cn retry 2
Warning: www.der-matech.net.cn Access failure!
网站www.der-matech.net.cn坏掉,请及时处理
网站高危www.der-matech.net.cn
www.der-matech.com.cn OK

8.查看服务器资源利用率脚本

[root@bogon ~]# vim dd.sh

#!/bin/bash

DF=$(df -hT)

aa=$(echo "$DF"  | grep "/$" | awk '{print $5}' | awk '{print $1}')

echo "磁盘空间已使用: $aa"

DD=$(free -h |sed -n '2p' |awk '{print $2}')

echo "内存-总大小: $DD"

FF=$(free -h |sed -n '2p' |awk '{print $4}')

echo "可以空闲内存: $FF"

KK=$(free -h |sed -n '2p' |awk '{print $7}')

echo "磁盘缓存: $KK"

GG=$( vmstat |awk '{if(NR==3) print $13+$14}')

echo "CPU-使用率: $GG"

LL=$(vmstat |awk '{if(NR==3) print $16}')

echo "等待磁盘IO响应使用率: $LL"

[root@clint2 ~]#  sh 1.txt
磁盘空间已使用: 16G
内存-总大小: 1.8G
可以空闲内存: 223M
磁盘缓存: 1.2G
CPU-使用率: 0
等待磁盘IO响应使用率: 0

9.查找占用CPU内存过高脚本

[root@bogon ~]# vim dd.sh

#!/bin/bash

cat /proc/stat |egrep -n '(cpu)' |sort -nr

[root@clint2 ~]#  sh 1.txt
2:cpu0 4877 10 5482 1964823 73 0 183 0 0 0
1:cpu  4877 10 5482 1964823 73 0 183 0 0 0

或者

# yum -y install sysstat

 sar -u 1 5

[root@clint2 ~]#  sar -u 1 5
Linux 3.10.0-1160.el7.x86_64 (clint2)     2023年07月17日     _x86_64_    (1 CPU)

11时12分11秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
11时12分12秒     all      0.00      0.00      0.00      0.00      0.00    100.00
11时12分13秒     all      0.00      0.00      0.00      0.00      0.00    100.00
11时12分14秒     all      0.00      0.00      1.00      0.00      0.00     99.00
11时12分15秒     all      0.00      0.00      0.00      0.00      0.00    100.00
11时12分16秒     all      0.00      0.00      0.00      0.00      0.00    100.00
平均时间:     all      0.00      0.00      0.20      0.00      0.00     99.80

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/766584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高效出报表的工具有哪些?奥威BI报表工具怎样?

随着企业精细化数据分析的展开&#xff0c;数据分析报表的制作压力也随之增加。对企业而言&#xff0c;拥有一个高效出报表的工具十分重要。高效出报表的工具有哪些&#xff1f;奥威BI报表工具的效率够不够高&#xff1f; 高效出报表的工具有很多&#xff0c;奥威BI报表工具就…

java多线程之并发容器集合

一、多线程操作容器存在的问题 如下代码 public class NotSafeDemo {public static void main(String[] args) {List list new ArrayList();for (int i 0; i < 100; i) {new Thread(() -> {list.add(UUID.randomUUID().toString());System.out.println(list);}, &quo…

Vue导入Echarts实现散点图 axios解析excel流数据 echarts数据可视化前端展示

为实现从本地服务器下载xlsx文件至前端vue echarts中展示&#xff0c;踩过许多坑&#xff0c;现将完整流程和源码分享。 1、 vue axios get请求 返回304 Not Modified 不更新数据 原因&#xff1a;由于浏览器缓存了get请求&#xff0c;导致不管如何刷新&#xff0c;数据都不更…

Echarts:柱状图的第一个柱子超出了y轴

问题 使用Echarts绘制柱状图的时候&#xff0c;第一个柱子超出了y轴&#xff1a; 解决 boundaryGap 此属性与坐标轴两端空白有关。默认值为true即留空&#xff0c;false则表示柱子顶头,而出现上述现象,是因为代码中参数 boundaryGap设置为了false 将boundaryGap的值改为tru…

sadtalker-- 本地生成数字人

文章目录 概要工具讲解安装流程1. 安装Python2. 安装FFmpeg3. 安装Sadtalker4. 导入模型 使用流程1. 生成语音2. 上传图片跟语音3. 点击生成&#xff0c;漫长等待4. 虚拟内存 小结 概要 sadtalker&#xff0c;可以根据图片以及语音&#xff0c;生成动态视频&#xff0c;跟现在…

怎么将拼接的字符串element组件通过“v-html“渲染到页面

如上图所示&#xff0c;没那么多废话&#xff0c;直接上代码 html中 <div id"app"><div :html"tempHtml"></div> </div>vue中 new Vue({el: #app,data() {return {tempHtml: }},created() {this.getHtml()},mounted() {window.…

Java学到什么程度可以在当下面试找工作?

今年的面试主打一个字&#xff1a;卷&#xff01; 随着经济环境下行&#xff0c;大厂降本增效、筛除了一部分冗余岗位&#xff0c;原本荒蛮的IT行业发展正在逐步进入正轨中。虽说今年就业环境不容乐观&#xff0c;但数据不会骗人&#xff0c;以Java为例&#xff0c;在职友集上…

gd32f103vbt6 串口OTA升级3-linux端的部分

一. 简介 本文主要是对linux端升级单片机程序的功能部分做一些介绍&#xff0c;包括一些软件流程。 二.硬件部分 2.1 rk3399cpugd32f103 2.2 连接方式&#xff1a;串口&#xff08;115200&#xff0c;8N1&#xff09;或者iic&#xff08;本文没有介绍iic&#xff09; 三、其…

[nlp] GPT

一、联合训练任务 1.1 NTP(Next Token Prediction) gpt预训练的一个目标函数有两个,第一个是基础的下一个词预测任务,选择一个K窗口,将窗口中的K个词的embedding作为条件去预测下一个词。 1.2 TC(Text Classification) 第二个是一个分类任务,一段话给一个标签,然后去预…

Qt 获得QTableview所选中的行的某一列数据

1、点击QtableView控件-》右键-》跳到槽-》选择 2、编写槽函数信息 void XXX::on_tableView_CalTable_clicked(const QModelIndex &index) {int rowindex.row();//获得当前行索引int colindex.column();//获得当前列索引QModelIndex index1 CalViewModel->index(row,2)…

开鸿智谷与华秋达成生态共创合作,共同打造OpenHarmony硬件生态

7月11日&#xff0c;在2023慕尼黑上海电子展现场&#xff0c;开鸿智谷数字产业发展有限公司(以下简称“开鸿智谷”)与深圳华秋电子有限公司(以下简称“华秋”)签署了生态共创战略合作协议&#xff0c;共同推动开源鸿蒙OpenAtom OpenHarmony(以下简称“OpenHarmony”)硬件生态繁…

在线图片处理工具:让您的图片处理更加轻松

在我们日常生活和工作中&#xff0c;图片已经成为了一种非常常见的媒介。然而&#xff0c;有时候我们会遇到一些问题&#xff0c;例如图片过大不能上传或下载等等。在这种情况下&#xff0c;我们需要一个功能强大的图片处理工具&#xff0c;来解决这些问题。今天&#xff0c;我…

Visual Studio 向工程中添加现有文件夹

前言&#xff1a; 在创建C#类库&#xff08;dll&#xff09;工程后&#xff0c;需要把现有的C#文件添加进工程中 步骤1.将所有文件夹复制到工程中 步骤2. 点击这个图标&#xff0c;显示所有文件夹 工程目录下的所有文件夹都会被显示出来 选中需要添加的文件夹&#xff0c;右…

Ceph 应用(CephFS文件存储、块存储、对象存储)

目录 一&#xff1a;创建 CephFS 文件系统 MDS 接口 1、服务端操作 &#xff08;1&#xff09;在管理节点创建 mds 服务 &#xff08;2&#xff09;查看各个节点的 mds 服务 &#xff08;3&#xff09;创建存储池&#xff0c;启用 ceph 文件系统 &#xff08;4&#xff09;…

C#(六十二)之泛型的约束

类型约束 基类约束有两个重要的目的。 1&#xff1a;它允许在泛型类中使用有约束指定的基类成员。 2&#xff1a;确保只能使用支持指定基类或派生类的类型实例。 约束是使用 where 上下文关键字指定的。 下表列出了五种类型的约束&#xff1a; 约束 说明 T&#xff1a;str…

C++初阶 - 2.类和对象(上)

目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1 访问限定符 4.2 封装 5.类的作用域 6. 类的实例化 7.类对象模型 7.1 如何计算类对象的大小 7.2 类对象的存储方式猜测 7.3 结构体内存对齐规则 8. this指针 8.1 this指针的…

网络--练习错题笔记

1、SNMP是简单网络管理协议&#xff0c;与邮件发送无关 发送邮件&#xff1a;SMTP协议&#xff0c;简单邮件管理协议 用户发送邮件是利用SMTP协议将编辑好的邮件送往发送端的邮件服务器 2、mac地址前24位是厂商编号 来自IEEE&#xff0c;后24位来自厂商&#xff0c;区别每一个…

5.0蓝牙模块助力车联网实现简便、安全连接-车载蓝牙模块SKB501参考设计

车载电子系统正向智能化、信息化和网络化方向发展&#xff0c;无线通信技术在汽车等移动系统中有着广泛的应用前景。车联网通过蓝牙技术可以实现与各种设备进行无缝、快速的连接&#xff0c;针对这部分应用需求&#xff0c;SKYLAB研发推出的5.0蓝牙模块SKB501&#xff0c;该模块…

Linux调试器------gdb的使用【Linux系统编程】

目录 背景&#xff1a; 指令&#xff1a; 背景&#xff1a; &#xff08;1&#xff09;debug和release&#xff1a;debug可以调试&#xff08;形成可执行程序时会有调试信息&#xff09;&#xff0c;release不可以。Linux下默认是release版本。如果要以debug版本发布&#…

Spring Boot 3.x 自动配置详解

基于Spring Boot 3.1.0 系列文章 Spring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解Spring Boot 监听器详解Spring Boot banner详解Spring Boot 属性配置解析Spring Boot 属性加载原理解析Spring Boot 异常报告器解析Spring Bo…