LiangGaRy-学习笔记-Day12

news2024/12/23 17:32:55

1、作业回顾

1.1、判断磁盘利用率

要求:

  • 判断磁盘的使用率,如果超过了90%就警告
[root@Node1 sh]# vim disk_check.sh
#!/bin/bash
#Author By LiangGaRy
#2023年5月9日
#Usage:检测硬盘的使用率
###########################################
#定义一个基础值,就是用于判断硬盘是否超过某个值90
thred=90
        #这里awk后面跟了一个int,表示可以提取数值;
for i in `df -h |awk '{print int($5)}'`
do
                #然后就进行比较,和90的基础知识比较;
        if [ $i -gt $thred ];then
                echo  "warnning"
        else
                echo "It is ok"
        fi
done

这里可以考虑优化:

  • 优化的方向:
    • 1.它没有显示那个地方是ok的,比如说是/的占用率是ok的;
    • 要实现这个功能,我们可以考虑awk在打印前面的内容;

2.2、解压文件脚本

要求:

  • 写一个解压的脚本;
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
 
function extract {
 if [ -z "$1" ]; then
    # display usage if no parameters given
    echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
    echo "       extract <path/file_name_1.ext> [path/file_name_2.ext] [path/file_name_3.ext]"
 else
    for n in "$@"
    do
      if [ -f "$n" ] ; then
          case "${n%,}" in
            *.cbt|*.tar.bz2|*.tar.gz|*.tar.xz|*.tbz2|*.tgz|*.txz|*.tar) 
                         tar xvf "$n"       ;;
            *.lzma)      unlzma ./"$n"      ;;
            *.bz2)       bunzip2 ./"$n"     ;;
            *.cbr|*.rar)       unrar x -ad ./"$n" ;;
            *.gz)        gunzip ./"$n"      ;;
            *.cbz|*.epub|*.zip)       unzip ./"$n"       ;;
            *.z)         uncompress ./"$n"  ;;
            *.7z|*.arj|*.cab|*.cb7|*.chm|*.deb|*.dmg|*.iso|*.lzh|*.msi|*.pkg|*.rpm|*.udf|*.wim|*.xar)
                         7z x ./"$n"        ;;
            *.xz)        unxz ./"$n"        ;;
            *.exe)       cabextract ./"$n"  ;;
            *.cpio)      cpio -id < ./"$n"  ;;
            *.cba|*.ace)      unace x ./"$n"      ;;
            *)
                         echo "extract: '$n' - unknown archive method"
                         return 1
                         ;;
          esac
      else
          echo "'$n' - file does not exist"
          return 1
      fi
    done
fi
}
IFS=$SAVEIFS

2、编写IP是否在线脚本

要求:

  • 函数:
    • ping ip是否在线
  • 一次性出现结果
  • 显示:
    • 当前在线的IP个数为
    • 当前不在线的个数:

2.1、ip检测脚本v1

按照要求编写一个ip检测的脚本

  • 定义一个 网段,然后输出到显示屏幕
#这个是第一个脚本-->这里仅仅是显示了当年前IP是否在线
[root@Node1 sh]# vim ip_check_v1.sh
#!/bin/bash 
#2023年5月10日
#Author By LiangGaRy
#Usage:检测IP是否存活
##########################
#定义一个网段
str="192.168.75."
for i in {1..25}
do
        ip=${str}${i}
        ping -c1 -w1 ${ip} &>/dev/null
        if [ $? -eq 0 ];then
                echo "${ip}  is  online"
        else
                echo "${ip}  is offline"
        fi
done

#执行脚本查看
[root@Node1 sh]# bash ip_check_v1.sh 
192.168.75.1  is  online
192.168.75.2  is  online
192.168.75.3  is offline
..............

明显第一个版本的脚本是不够完善

  • ip都输出到屏幕;
  • 并没有归总并且显示给用户看
  • 于是就到了V2版本的

2.2、ip检测脚本v2

优化方向:

  • 把输出的脚本追加到一个文件当中;
  • 然后统计文件的个数得出在线IP数
#改进版本-->输出一个数值
[root@Node1 sh]# vim  ip_check_v2.sh 
#!/bin/bash 
#2023年5月10日
#Author By LiangGaRy
#Usage:检测IP是否存活
##########################
str="192.168.75."
for i in {1..25}
do
        ip=${str}${i}
        ping -c1 -w1 ${ip} &>/dev/null
        if [ $? -eq 0 ];then
                echo "${ip}  is  online"
                echo ${ip} >> /root/online.txt
        else
                echo "${ip}  is offline"
                echo ${ip} >> /root/offline.txt
        fi
done
online=`cat /root/online.txt | wc -l`
offline=`cat /root/offline.txt | wc -l`
echo "目前在线的IP总数为 ${online}"
echo "目前不在线的IP总数为${offline}"

#检测脚本
[root@Node1 sh]# bash ip_check_v2.sh 
.................
目前在线的IP总数为 2
目前不在线的IP总数为23

这里又发现有问题

  • 如果脚本执行两次,则统计出来的数据会不准确
  • 假设文件之前就被编辑过有空格统计出来也是有问题;
  • 于是就继续编写v3版本的脚本

2.3、ip检测脚本v3

考虑优化:

  • 如果一开始就有空行怎么说?在一开始的时候就清空文件
  • 如果统计的命令换成排除空格就能解决问题
#第三次修改-->这里考虑到会有重复,因此在执行前就考虑文件
[root@Node1 sh]# vim ip_check_v3.sh 
#!/bin/bash 
#2023年5月10日
#Author By LiangGaRy
#Usage:检测IP是否存活
##########################
#一开始就选择清空两个文件
> /root/online.txt
> /root/offline.txt
str="192.168.75."
for i in {1..25}
do
        ip=${str}${i}
        ping -c1 -w1 ${ip} &>/dev/null
        if [ $? -eq 0 ];then
                echo "${ip}  is  online"
                echo ${ip} >> /root/online.txt
        else
                echo "${ip}  is offline"
                echo ${ip} >> /root/offline.txt
        fi
done
        #这里把命令换成了grep命令
online=`grep -v ^$ /root/online.txt | wc -l`
offline=`grep -v ^$ /root/offline.txt | wc -l`
echo "目前在线的IP总数为 ${online}"
echo "目前不在线的IP总数为${offline}"


#执行查看
[root@Node1 sh]# bash ip_check_v3.sh 
.................
目前在线的IP总数为 2
目前不在线的IP总数为23

总结:

  • 脚本的实现不是一次就好了的,需要不断地更新优化;不断地优化才最后得出

2.4、sort命令讲解

作用:sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出

语法:sort + 选项 + 文件

选项:

  • -c:检查文件是否按照顺序进行排序
  • -d:排序时,处理英文字母,数字及空格字母外,忽略其他字符
  • -f:排序,将小写字母视为大写字母
  • -M:将前面的3个字母依照月份缩写进行排序
  • -r:以相反的顺序进行排序
  • -n:依照数值的大小进行排序-
  • -o:排序后存入指定的文件
  • -t:指定一个用来区分键位置字符
  • -k:后面跟数字,指定按第几列进行排序
#如果不加参数-->直接默认按照首字母排序
[root@Node1 sh]# sort  /etc/passwd | head -3
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin

#倒序排列
[root@Node1 sh]# sort -r /etc/passwd |head -3
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

#-t指定分隔符的位置,-k 指定按第几列进行排序 -r 是倒叙
	#查看文件-->然后指定分隔符为:,按照第三列信息倒叙排列
[root@Node1 ~]# cat passwd  | sort -t ":" -k 3 -r | head -3
nobody:x:99:99:Nobody:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

#sort还有去重功能
	#准备一个模板文件
[root@Node1 ~]# vim aa.txt
aa
bb
cc
aa
bb
	#去重-u
[root@Node1 ~]# sort  -u aa.txt 

aa
bb
cc

#按照数值的方式排序-->sort命令默认会觉得10 比2 小
	#准备素材
[root@Node1 ~]# vim aa.txt 
1
2
3
10
20
	#然后按照数值大小排序-->如果不带参数
[root@Node1 ~]# sort aa.txt 
1
10
2
20
3
	#带上参数n
[root@Node1 ~]# sort  -n aa.txt 
1
2
3
10
20

#忽略空白字符
[root@Node1 ~]# sort  -b -n aa.txt 
1
2
3
10
20

#合并文件
[root@Node1 ~]# sort  -m aa.txt bb.txt 
1
2
3
10
20
aa 
bb
 cc

#结合-o可以重定向到一个文件当中
[root@Node1 ~]# sort  -m aa.txt bb.txt -o cc.txt
[root@Node1 ~]# cat cc.txt 
1
2
3
10
20
aa 
bb
 cc

2.5、Linux 内核参数说明

  • console=tty0:用来指定 Linux 内核启动时使用的控制台设备
  • crashkernel=384:这是指在 Linux 内核启动时,预留 384MB 的内存作为用于系统崩溃时的内存转储(crash dump)
  • l1tf=off :“L1TF"代表"级联缓存失效”,是一种针对Intel处理器的漏洞,可以让攻击者访问系统中的敏感信息
  • nospec_store_bypass_disable:nospec_store_bypass_disable 是 Linux 内核中的一个安全补丁,用于防止 Spectre 攻击。
  • rootdelay=10 :rootdelay=10 是在 Linux 内核启动时传递给内核的一个参数,它的作用是指定根文件系统的延迟时间
  • fsck.repair=yes:fsck.repair=yes 是 Linux 文件系统检查(fsck)命令的一个选项。当这个选项被设置为 yes 时,fsck 会在检查文件系统时自动修复发现的错误。
  • net.ifnames=0:net.ifnames=0 是 Linux 内核启动参数之一,用于禁用网络接口的动态命名。
  • rootwait:rootwait是一个内核启动参数,它告诉内核等待根文件系统可用后再启动系统。当内核启动时,它需要挂载根文件系统来启动系统
  • iommu=ptpti=off:IOMMU 相关的选项
  • spectre_v2=off:用于禁用针对 Spectre 漏洞的特定修复
  • mitigations=off:用于关闭一些内核的安全补丁和保护措施。
  • no_stf_barrier:用于禁用同步线程的强制屏障
  • biosdevname=0:用于控制 BIOS 设备名称的生成。
  • console=ttyS0,115200 :指定了 Linux 内核将控制台输出重定向到串口 ttyS0,并且设置了波特率为 115200。
  • fsck.mode=force:制运行 fsck 工具来检查文件系统,

3、prometheus安装

3.1、prometheus介绍

简介:

  • prometheus是一个监控服务
  • 支持数据采集
    • 数据存储(数据库、文本)
    • 数据分析
    • 数据展示:shell+ grafana
    • 支持数据告警–>钉钉、邮件等方式
    • 监控CPU 内存、网络、磁盘、数据等等

zabbix和prometheus都是一款监控服务;

3.2、prometheus安装

使用源码包安装方式

  • 准备源码包
  • 解压包
  • 安装包
  • prometheus安装完成后,不需要任何配置都可以支持页面展示
#准备好prometheus的包
[root@Node1 ~]# cd /usr/local/src/
[root@Node1 src]# ls prometheus-2.37.1.linux-amd64.tar.gz 
prometheus-2.37.1.linux-amd64.tar.gz

#解压源码包
[root@Node1 src]# tar -xf prometheus-2.37.1.linux-amd64.tar.gz 
[root@Node1 src]# mv prometheus-2.37.1.linux-amd64 /root/prometheus
[root@Node1 src]# cd /root/prometheus/

#查看一下内容
[root@Node1 prometheus]# ls 
console_libraries  LICENSE  prometheus      promtool
consoles           NOTICE   prometheus.yml

#直接启动
[root@Node1 prometheus]# ./prometheus  &

#查看版本号
[root@Node1 prometheus]# ./prometheus --version
prometheus, version 2.37.1 (branch: HEAD, revision: 1ce2197e7f9e95089bfb95cb61762b5a89a8c0da)
  build user:       root@3caaaea7ba87
  build date:       20220912-12:42:39
  go version:       go1.18.6
  platform:         linux/amd64

#查看prometheus支持什么命令
[root@Node1 prometheus]# ./prometheus --help
	#并且可以统计
[root@Node1 prometheus]# ./prometheus --help | wc -l
163
	#查看9090端口可以看到默认的端口
[root@Node1 prometheus]# ./prometheus --help | grep 9090
      --web.listen-address="0.0.0.0:9090"  
#然后直接更变端口启动
[root@Node1 prometheus]# ./prometheus --web.listen-address="0.0.0.0:888"

浏览器直接访问

  • prometheus默认的端口号就是9090
  • 浏览器访问:http://192.168.75.131:9090/

Linxu当中,如果修改配置文件

  • 给一个变量赋值
  • 重启服务后重新加载配置文件等于重新制定了文件的inode号
#查看一个文件i号
[root@Node1 prometheus]# ls -i prometheus.yml 
34623586 prometheus.yml

#修改配置文件后
[root@Node1 prometheus]# vim  prometheus.yml 
# my global config
..........
    static_configs:
      - targets: ["localhost:888"]

#再次查看
[root@Node1 prometheus]# ls -i prometheus.yml 
34623594 prometheus.yml

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

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

相关文章

蓝奥声核心技术分享——用电插座的安全保护技术(安全计量插座)

1.技术背景 用电插座的安全保护技术主要针对在用电负载接入接出&#xff08;即插拔&#xff09;用电插座的过程&#xff0c;解决瞬态异常监控及安全保护问题。该项技术涉及物联网智能硬件设备与测控技术领域&#xff0c;尤其涉及电能信号监测与用电安全监控的技术领域。 随着…

【Redis高级应用】分布式缓存

文章目录 单机Redis存在的问题Redis持久化RDB持久化执行时机RDB原理 AOF持久化AOF原理AOF配置AOF文件重写 RDB与AOF对比 Redis主从搭建主从架构主从数据同步原理全量同步增量同步repl_backlog原理 主从同步优化小结 Redis哨兵哨兵原理集群结构和作用集群监控原理集群故障恢复原…

MySQL多列字段去重的案例实践

同事提了个需求&#xff0c;如下测试表&#xff0c;有code、cdate和ctotal三列&#xff0c; select * from tt;现在要得到code的唯一值&#xff0c;但同时带着cdate和ctotal两个字段。 提起"唯一值"&#xff0c;想到的就是distinct。distinct关键字可以过滤多余的重…

Machine Learning-Ex8(吴恩达课后习题)Anomaly Detection and Recommender Systems

1. Anomaly detection 内容&#xff1a;使用高斯模型来检测数据集中异常的数据&#xff08;概率低的&#xff09;&#xff0c;先在2维数据中进行实验。样本具有两个特征&#xff1a;a. 服务器响应的吞吐量&#xff08;mb/s&#xff09; b. 延迟&#xff08;ms&#xff09;。 …

【linux网络】正则表达式

一、正则表达式 1.1作用范围 通常用于判断语句中&#xff0c;用来检查某一个字符串是否满足某一格式 1.2正则表达式的组成 普通字符包括大小写字母、数字、标点符号及其它符号元字符元字符是指在正则表达式中具有特殊意思的专用字符&#xff0c;可以用来规定其导字符&#…

【P18】JMeter JSON JMESPath Extractor

文章目录 一、准备工作二、测试计划设计 一、准备工作 慕慕生鲜&#xff1a; http://111.231.103.117/#/login 进入网页后&#xff0c;登录&#xff0c;页面提供了账户和密码 搜索框输入“虾” 右键检查或按F12&#xff0c;打开调试工具&#xff0c;点击搜索 二、测试计划设…

Bean的存取、五大注解、对象的注入方式、Bean的作用域和生命周期

一、Bean 的创建、存储和使用 PS&#xff1a;Java语言中的对象也叫作 Bean。 1、创建一个maven项目 PS&#xff1a;要在 pom.xml 中添加 spring 框架支持 PS&#xff1a;引入 lombok 依赖&#xff08;可以帮助实现 get 和 set 方法&#xff09; 2、存对象 2.1、创建类 启…

Linux 蜂鸣器驱动实验

蜂鸣器驱动原理 ①、在设备树中添加 SNVS_TAMPER1 引脚的 pinctrl 信息。 ②、在设备树中创建蜂鸣器节点&#xff0c;在蜂鸣器节点中加入 GPIO 信息。 1、修改设备树文件 添加 pinctrl 节点 I.MX6U-ALPHA开发板上的BEEP使用了SNVS_TAMPER1这个PIN&#xff0c;打开imx6ull-alien…

【01】C++的第一个程序Hello World

C的第一个应用程序&#xff08;Hello World程序&#xff09; 引言一、代码二、代码解释三、注意事项总结 引言 &#x1f4a1; 作者简介&#xff1a;专注于C/C高性能程序设计和开发&#xff0c;理论与代码实践结合&#xff0c;让世界没有难学的技术。 &#x1f449; &#x1f39…

报表生成工具Stimulsoft Reports.JS如何减少产品脚本的加载时间

Stimulsoft Reports 是一款报告编写器&#xff0c;主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署&#xff0c;如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等&#xff0c;在你的应用程序中嵌入报告设计器…

Django框架之视图HttpResponse 对象

本篇文章主要内容为&#xff1a;视图中HttpResponse对象的属性、方法及json、redirect子类包含使用cookie使用、跳转、json返回的示例。 概述 HttpResponse对象是对用户访问的响应&#xff0c;与HttpRequest对象由django创建&#xff0c;HttpResponse对象是由开发人员创建。Ht…

001+limou+MySQL的基础命令

0.前言 您好&#xff0c;这里是limou3434的一篇个人博文&#xff0c;感兴趣的话您也可以看看我的其他文章。本博文是借鉴于李小威前辈所著的书籍《SQL 基础教程》所成的博文笔记&#xff0c;这本书真的很适合新手学习数据库相关的内容。本次我想给您带来的是关于MySQL的一些基…

网站神奇工具Viewport Resizer,支持手机、pad和电脑等不同尺寸大小

标题&#xff1a;Viewport Resizer&#xff1a;让网站适应不同设备的神奇工具&#xff01; 导语&#xff1a; 在互联网世界中&#xff0c;我们常常需要在不同设备上浏览网站。为了让用户在手机、平板或电脑上都能看到美观易用的页面&#xff0c;网站开发者们努力优化网站的适应…

qemu-虚拟机

qemu 官网下载地址 https://www.qemu.org/ 跨平台虚拟机&#xff0c;类型vmware&#xff0c;执行效率比vmware高 官方参考文档&#xff1a;https://www.qemu.org/docs/master/system/introduction.html kvm&#xff0c;轻量级虚拟机&#xff0c;可以加速qemu的执行 qemu-e…

微信云开发技术架构

&#xff08;仅有把抱怨环境的情绪&#xff0c;化为上进的力量&#xff0c;才是成功的保证。——罗曼罗兰&#xff09; 微信云开发 官方文档 文本只用来概述微信云开发的技术架构&#xff0c;并结合实战场景进行说明。更详细的请直接查看微信官方文档。 背景 微信云开发是微…

Oracle11g全新讲解之游标

游标 游标的作用&#xff1a;处理多行数据&#xff0c;类似与java中的集合 1.隐式游标 一般是配合显示游标去使用的&#xff0c;不需要显示声明&#xff0c;打开&#xff0c;关闭&#xff0c;系统自定维护,名称为&#xff1a;sql 常用属性&#xff1a; sql%found:语句影响了…

快速分隔文件(split),合并文件(paste)的命令;eval(先扫描输出在执行)命令

split快速分割文件&#xff0c;paste快速合并文件&#xff1b;eval命令 split命令快速分隔文件paste命令快速合并文件eval命令 split命令快速分隔文件 语法格式&#xff1a; split 【选项】 参数 原始文件 拆分后文件名前缀 常用选项 -l&#xff1a;以行数拆分 -b&#xf…

7.对象模型

对象模型 信号和槽 信号和槽是一种用于对象之间通信的机制。信号是对象发出的通知&#xff0c;槽是用于接收这些通知的函数。 当对象的状态发生变化时[按钮被点击]&#xff0c;它会发出一个信号[clicked()]&#xff0c;然后与该对象连接的槽函数将被自动调用。 若某个信号与多…

图像分割之SAM(Segment Anything Model)

论文&#xff1a;Segment Anything Github&#xff1a;https://github.com/facebookresearch/segment-anything 论文从zero-shot主干网络的基础出发&#xff0c;提出了SAM&#xff08;Segment Anything Model&#xff09;模型。该模型有别于传统的分割模型。传统分割模型只能输…

正则表达式的一些元符号

正则表达式 正则表达式—通常用于判断语句中&#xff0c;用来检查某一字符串是否满足某一格式 正则表达式是由普通字符与元字符组成 普通字符包括大小写字母、数字、标点符号及一些其他符号元字符是指在正则表达式中具有特殊意义的专用字符&#xff0c;可以用来规定其前导字…