Linux巡检脚本

#!/bin/bash
sys:centos6.x/7.x
[ $(id -u) -ne 0 ] && echo "请用root用户执行此脚本!" && exit 1
sysversion=$(rpm -q centos-release|cut -d- -f3)
line="-------------------------------------------------"
[ -d logs ] || mkdir logs
#sys_check_file="logs/$(ip a show dev eth0|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}')-date +%Y%m%d.txt"
sys_check_file="logs/$(ifconfig |awk 'NR==2{print $2}')-date +%Y%m%d.txt"
获取系统cpu信息
function get_cpu_info() {
    Physical_CPUs=$(grep "physical id" /proc/cpuinfo| sort | uniq | wc -l)
    Virt_CPUs=$(grep "processor" /proc/cpuinfo | wc -l)
    CPU_Kernels=$(grep "cores" /proc/cpuinfo|uniq| awk -F ': ' '{print $2}')
    CPU_Type=$(grep "model name" /proc/cpuinfo | awk -F ': ' '{print $2}' | sort | uniq)
    CPU_Arch=$(uname -m)
#echo -e '\033[32m CPU信息:\033[0m'
echo -e '\033[05;32m CPU信息:\033[0m'
cat <<eof 2 | column -t 物理cpu个数: $physical_cpus 逻辑cpu个数: $virt_cpus 每cpu核心数: $cpu_kernels cpu型号: $cpu_type cpu架构: $cpu_arch eof } # 获取系统内存信息 function get_mem_info() { total="$(free" -m sed -n '2p' awk '{print $2"m"}') used="$(free" $3"m"}') rate="$(free" '{print""($3 $2)*100"%"}') echo -e '\033[05;31m 内存信息:\033[0m' cat <<eof 内存总容量:$total 内存已使用:$used 内存使用率:$rate 获取系统网络信息 get_net_info() pri_ipadd="$(ifconfig" |awk 'nr="=2{print" $2}') #pub_ipadd="$(curl" ip.sb>&1)
    pub_ipadd=$(curl -s http://ddns.oray.com/checkip | awk -F ":"  '{print $2}' | awk -F "<" 2 '{print $1}'|awk $1}') gateway="$(ip" route | grep default awk $3}') mac_info="$(ip" link| egrep -v "lo"|grep link|awk $2}') dns_config="$(egrep" 'nameserver' etc resolv.conf) route_info="$(route" -n) echo -e '\033[05;33m ip信息:\033[0m' cat <<eof column -t 系统公网地址: ${pub_ipadd} 系统私网地址: ${pri_ipadd} 网关地址: ${gateway} mac地址: ${mac_info} 路由信息: ${route_info} dns 信息: ${dns_config} eof } # 获取系统磁盘信息 function get_disk_info() { disk_info="$(fdisk" -l|grep "disk dev"|cut -d, -f1) disk_use="$(df" -htp|awk '$2!="tmpfs" {print}') disk_inode="$(df" -hip|awk '$1!="tmpfs" '\033[05;34m 磁盘信息:\033[0m' ${disk_info} 磁盘使用: ${disk_use} inode信息: ${disk_inode} 获取系统信息 get_systatus_info() sys_os="$(uname" -o) sys_release="$(cat" redhat-release) sys_kernel="$(uname" -r) sys_hostname="$(hostname)" sys_selinux="$(getenforce)" sys_lang="$(echo" $lang) sys_lastreboot="$(who" -b $3,$4}') sys_runtime="$(uptime" |awk $3,$4}'|cut sys_time="$(date)" sys_load="$(uptime" |cut -d: -f5) '\033[05;35m 系统信息:\033[0m' 系统: ${sys_os} 发行版本: ${sys_release} 系统内核: ${sys_kernel} 主机名: ${sys_hostname} selinux状态: ${sys_selinux} 系统语言: ${sys_lang} 系统当前时间: ${sys_time} 系统最后重启时间: ${sys_lastreboot} 系统运行时间: ${sys_runtime} 系统负载: ${sys_load} 获取服务信息 get_service_info() port_listen="$(netstat" -lntup|grep "active internet") kernel_config="$(sysctl" -p>/dev/null)
    if [ ${sysversion} -gt 6 ];then
        service_config=$(systemctl list-unit-files --type=service --state=enabled|grep "enabled")
        run_service=$(systemctl list-units --type=service --state=running |grep ".service")
    else
        service_config=$(/sbin/chkconfig | grep -E ":on|:&#x542F;&#x7528;" |column -t)
        run_service=$(/sbin/service --status-all|grep -E "running")
    fi
echo -e '\033[05;36m &#x670D;&#x52A1;&#x542F;&#x52A8;&#x914D;&#x7F6E;&#xFF1A;\033[0m'
cat <<eof 2 ${service_config} ${line} 运行的服务: ${run_service} 监听端口: ${port_listen} 内核参考配置: ${kernel_config} eof } function get_sys_user() { login_user="$(awk" -f: '{if ($nf="="/bin/bash")" print $0}' etc passwd) ssh_config="$(egrep" -v "^#|^$" ssh sshd_config) sudo_config="$(egrep" sudoers |grep "^defaults") host_config="$(egrep" hosts) crond_config="$(for" cronuser in var spool cron * ;do ls ${cronuser}>/dev/null|cut -d/ -f5;egrep -v "^$|^#" ${cronuser} 2>/dev/null;echo "";done)
echo -e '\033[05;37m &#x7CFB;&#x7EDF;&#x767B;&#x5F55;&#x7528;&#x6237;&#xFF1A;\033[0m'
cat <<eof ${login_user} ${line} ssh 配置信息: ${ssh_config} sudo 配置用户: ${sudo_config} 定时任务配置: ${crond_config} hosts 信息: ${host_config} eof } function process_top_info() { top_title="$(top" -b n1|head -7|tail -1) cpu_top10="$(top" b -n1 | head -17 tail -10) mem_top10="$(top" -17|tail -10|sort -k10 -r) echo -e '\033[05;38m cpu占用top10:\033[0m' cat <<eof ${top_title} ${cpu_top10} '\033[05;39m 内存占用top10:\033[0m' ${mem_top10} sys_check() get_cpu_info get_mem_info get_net_info get_disk_info get_systatus_info get_service_info get_sys_user process_top_info sys_check> ${sys_check_file}</eof></eof></"></eof>

执行成功之后会在当前目录下创建一个logs/目录,进入目录查看文件信息

Linux巡检脚本

Original: https://www.cnblogs.com/Jqazc/p/16669269.html
Author: 我真的兔了
Title: Linux巡检脚本

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611770/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 04-MySQL锁

    数据库锁 1、SQL语言包括那几个部分 SQL语言包括 数据定义(DDL)、数据操纵(DML)、数据控制(DCL)和数据查询(DQL)四个部分 2、每部分都有哪些操作关键词 数据定…

    数据库 2023年6月16日
    081
  • Js前端-路由管理器函数

    buildUrl:function( path ,params ){ let url = "" + path; let _paramUrl = "&q…

    数据库 2023年6月9日
    080
  • 用户管理

    介绍Linux用户组的概念和对用户添加,删除和指定密码的基本操作 用户管理 Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一…

    数据库 2023年6月16日
    0126
  • 那些技术实战中的架构设计方法

    上个月我写的一篇文章《关于技术能力的思考和总结》引起了大家的关注,好多读者的评论”以写代想、以想促真、以讲验真”,大家的感受很深刻,基于上次的文章,这篇文章…

    数据库 2023年6月14日
    081
  • 【海量数据算法】如何判断一个数是否在40亿个整数中

    如何判断一个数是否在40亿个整数中 2.1《编程珠玑》给出的方案 我们把40亿个数中的每一个用32位的二进制来表示,假设这40亿个数开始放在一个文件中。 然后将这40亿个数分成两类…

    数据库 2023年6月11日
    088
  • Vue(十三)—过滤器filter,filters

    官网:https://cn.vuejs.org/v2/api/#filters https://cn.vuejs.org/v2/api/#Vue-filter 分为全局过滤器和局部…

    数据库 2023年6月16日
    088
  • 有趣的BUG之Stack Overflow

    今天遇到一个很有意思的bug,当程序开发完成后打包到服务器运行,总是会出现栈溢出异常,经过排查发现,问题出现在一个接口上,但这个接口逻辑并不复杂,除了几局逻辑代码外和打印语句之外也…

    数据库 2023年6月6日
    089
  • Qt 的事件监听和事件过滤

    Qt 产品级的开发项目中经常会用到一些自定义控件,从而达到一些可定制化的效果,这时候往往需要重写它的监听事件,满足产品的需求。这里用一个简单的例子记录一下思路: 新建一个DiyLa…

    数据库 2023年6月16日
    090
  • 记一次部署系列:Mysql高可用之MHA

    参考:《Mysql高可用实践》——清华大学出版社2020年6月 环境:CentOS Linux release 7.7.1908 (Core) Mysql:…

    数据库 2023年5月24日
    090
  • MySQL45讲之优化器选错索引

    前言 本文简要介绍了优化器选择索引的依据,以及如何人为地引导优化器选择较好的执行方案。 [En] This paper briefly introduces the basis f…

    数据库 2023年5月24日
    0120
  • MySQL–创建计算字段

    存储在数据库表中的数据一般不是应用程序所需要的格式。下面举几个例子。  如果想在一个字段中既显示公司名,又显示公司的地址,但这两个信息一般包含在不同的表列中。  城市、州和邮政…

    数据库 2023年6月16日
    089
  • Java中的锁——锁的分类

    Java中有各种各样的锁,例如公平锁、乐观锁等等,这篇文章主要介绍一下各种锁的分类。 *公平锁/非公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁。 非公平锁是指多个线程获取锁的…

    数据库 2023年6月9日
    077
  • leetcode 572. Subtree of Another Tree 另一棵树的子树 (简单)

    一、题目大意 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 fa…

    数据库 2023年6月16日
    0108
  • jdbc-处理查询结果集

    package com.cqust; import java.sql.Connection;import java.sql.DriverManager;import java.sq…

    数据库 2023年5月24日
    073
  • 安装多个Jdk

    安装 官方下载地址 目录结构: 配置 PATH 修改 注意:此处的操作可能会有其他未知的问题,最好还是理解window的命令查找机制,然后还是需要根据具体问题具体分析解决。 测试 …

    数据库 2023年6月11日
    097
  • [Mysql]如何查看初次安装后的默认密码

    mysql初次安装时,会设置一个临时密码,不允许用空密码直接登录: ubuntu系统上这个密码的存放位置是 /etc/mysql/debian.cnf Original: http…

    数据库 2023年6月16日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球