脚本检查 CentOS 系统信息

2023-11-01

脚本信息

#!/bin/bash
# auth:lsr_zds
# func:sys info check
# version:v1.0
# sys:centos6.x/7.x

[ $(id -u) -gt 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"

# 获取系统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)
cat <<EOF | column -t 
CPU信息:

物理CPU个数: $Physical_CPUs
逻辑CPU个数: $Virt_CPUs
每CPU核心数: $CPU_Kernels
CPU型号: $CPU_Type
CPU架构: $CPU_Arch
EOF
}

# 获取系统内存信息
function get_mem_info() {
    check_mem=$(free -m)
    # KB
    MemTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')  
    # KB
    MemFree=$(grep MemFree /proc/meminfo | awk '{print $2}')    
    let MemUsed=MemTotal-MemFree
    MemPercent=$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")
    # 内存总容量(MB)
    report_MemTotal="$((MemTotal/1024))""MB"        
    # 内存剩余(MB)
    report_MemFree="$((MemFree/1024))""MB"          
    report_MemUsedPercent="$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")""%"   #内存使用率%

cat <<EOF
内存信息:

${check_mem}
EOF
}

# 获取系统网络信息
function get_net_info() {
    pri_ipadd=$(ip a show dev eth0 | grep -w inet | awk '{print $2}' | awk -F '/' '{print $1}')
    pub_ipadd=$(curl ifconfig.me -s)
    gateway=$(ip route | grep default | awk '{print $3}')
    mac_info=$(ip link | egrep -v "lo" | grep link | awk '{print $2}')
    dns_config=$(egrep -v "^$|^#" /etc/resolv.conf)
    route_info=$(route -n)
cat <<EOF | column -t 
IP信息:

系统公网地址: ${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"{print}')

cat <<EOF
磁盘信息:

${disk_info}
${line}
磁盘使用:

${disk_use}
${line}
inode信息:

${disk_inode}
EOF


}

# 获取系统信息
function get_systatus_info() {
    sys_os=$(uname -o)
    sys_release=$(cat /etc/redhat-release)
    sys_kernel=$(uname -r)
    sys_hostname=$(hostname)
    sys_selinux=$(getenforce)
    sys_lang=$(echo $LANG)
    sys_lastreboot=$(who -b | awk '{print $3,$4}')
    sys_runtime=$(uptime | awk '{print  $3,$4}' | cut -d, -f1)
    sys_time=$(date)
    sys_load=$(uptime | cut -d: -f5)

cat <<EOF | column -t 
系统信息:

系统: ${sys_os}
发行版本:   ${sys_release}
系统内核:   ${sys_kernel}
主机名:    ${sys_hostname}
selinux状态:  ${sys_selinux}
系统语言:   ${sys_lang}
系统当前时间: ${sys_time}
系统最后重启时间:   ${sys_lastreboot}
系统运行时间: ${sys_runtime}
系统负载:   ${sys_load}
EOF
}

# 获取服务信息
function get_service_info() {
    port_listen=$(netstat -lntup | grep -v "Active Internet")
    kernel_config=$(sysctl -p 2>/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|:启用" | column -t)
        run_service=$(/sbin/service --status-all | grep -E "running")
    fi
cat <<EOF
服务启动配置:

${service_config}
${line}
运行的服务:

${run_service}
${line}
监听端口:

${port_listen}
${line}
内核参考配置:

${kernel_config}
EOF
}

# 获取 sys && user 信息
function get_sys_user() {
    login_user=$(awk -F: '{if ($NF=="/bin/bash") print $0}' /etc/passwd)
    ssh_config=$(egrep -v "^#|^$" /etc/ssh/sshd_config)
    sudo_config=$(egrep -v "^#|^$" /etc/sudoers | grep -v "^Defaults")
    host_config=$(egrep -v "^#|^$" /etc/hosts)
    crond_config=$(for cronuser in /var/spool/cron/*; do ls ${cronuser} 2>/dev/null | cut -d/ -f5; egrep -v "^$|^#" ${cronuser} 2>/dev/null; echo "" ;done)
cat <<EOF
系统登录用户:

${login_user}
${line}
ssh 配置信息:

${ssh_config}
${line}
sudo 配置用户:

${sudo_config}
${line}
定时任务配置:

${crond_config}
${line}
hosts 信息:

${host_config}
EOF
}

# 获取进程信息
function process_top_info() {

    top_title=$(top -b -n1 | head -n7 | tail -n1)
    cpu_top10=$(top -b -n1 | head -n17 | tail -n10)
    mem_top10=$(top -b -n1 | head -n17 | tail -n10 | sort -k10 -r)

cat <<EOF
CPU占用top10:

${top_title}
${cpu_top10}

内存占用top10:

${top_title}
${mem_top10}
EOF
}

function sys_check() {
    get_cpu_info
    echo ${line}
    get_mem_info
    echo ${line}
    get_net_info
    echo ${line}
    get_disk_info
    echo ${line}
    get_systatus_info
    echo ${line}
    get_service_info
    echo ${line}
    get_sys_user
    echo ${line}
    process_top_info
}


sys_check > ${sys_check_file}

执行结果

[root@demo ~]# cat logs/10.10.200.108-20200923.txt 
CPU信息:
物理CPU个数:  1
逻辑CPU个数:  2
每CPU核心数:  1
CPU型号:      Intel(R)  Core(TM)  i5-8250U  CPU  @  1.60GHz
CPU架构:      x86_64
-------------------------------------------------
内存信息:

              total        used        free      shared  buff/cache   available
Mem:           3790        3062         291           8         435         463
Swap:          8191           0        8191
-------------------------------------------------
IP信息:
系统公网地址:  182.50.120.71
系统私网地址:  10.10.200.108
网关地址:      10.10.200.1
MAC地址:       00:15:5d:88:6a:00
路由信息:
Kernel         IP                 routing        table
Destination    Gateway            Genmask        Flags  Metric  Ref  Use  Iface
0.0.0.0        10.10.200.1        0.0.0.0        UG     100     0    0    eth0
10.10.200.0    0.0.0.0            255.255.255.0  U      100     0    0    eth0
DNS            信息:
nameserver     202.96.199.133
-------------------------------------------------
磁盘信息:

Disk /dev/sda: 32.2 GB
Disk /dev/mapper/centos-root: 23.4 GB
Disk /dev/mapper/centos-swap: 8589 MB
-------------------------------------------------
磁盘使用:

Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        22G  1.7G   21G   8% /
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
/dev/sda2               xfs       194M  150M   44M  78% /boot
-------------------------------------------------
inode信息:

Filesystem              Inodes IUsed IFree IUse% Mounted on
/dev/mapper/centos-root    11M   59K   11M    1% /
devtmpfs                  471K   358  471K    1% /dev
/dev/sda2                  89K   333   89K    1% /boot
-------------------------------------------------
系统信息:
系统:              GNU/Linux
发行版本:          CentOS                 Linux  release  7.5.1804  (Core)
系统内核:          3.10.0-862.el7.x86_64
主机名:            demo
selinux状态:       Enforcing
系统语言:          en_US.UTF-8
系统当前时间:      Wed                    Sep    23       17:22:47  CST     2020
系统最后重启时间:  2020-09-16             22:51
系统运行时间:      1                      day
系统负载:          0.00,                  0.01,  0.05
-------------------------------------------------
服务启动配置:

auditd.service                              enabled
autovt@.service                             enabled
crond.service                               enabled
dbus-org.fedoraproject.FirewallD1.service   enabled
dbus-org.freedesktop.NetworkManager.service enabled
dbus-org.freedesktop.nm-dispatcher.service  enabled
firewalld.service                           enabled
getty@.service                              enabled
irqbalance.service                          enabled
kdump.service                               enabled
lvm2-monitor.service                        enabled
microcode.service                           enabled
NetworkManager-dispatcher.service           enabled
NetworkManager-wait-online.service          enabled
NetworkManager.service                      enabled
postfix.service                             enabled
rhel-autorelabel.service                    enabled
rhel-configure.service                      enabled
rhel-dmesg.service                          enabled
rhel-domainname.service                     enabled
rhel-import-state.service                   enabled
rhel-loadmodules.service                    enabled
rhel-readonly.service                       enabled
rsyslog.service                             enabled
sshd.service                                enabled
sysstat.service                             enabled
systemd-readahead-collect.service           enabled
systemd-readahead-drop.service              enabled
systemd-readahead-replay.service            enabled
tuned.service                               enabled
-------------------------------------------------
运行的服务:

auditd.service           loaded active running Security Auditing Service
crond.service            loaded active running Command Scheduler
dbus.service             loaded active running D-Bus System Message Bus
firewalld.service        loaded active running firewalld - dynamic firewall daemon
getty@tty1.service       loaded active running Getty on tty1
hypervkvpd.service       loaded active running Hyper-V KVP daemon
hypervvssd.service       loaded active running Hyper-V VSS daemon
irqbalance.service       loaded active running irqbalance daemon
lvm2-lvmetad.service     loaded active running LVM2 metadata daemon
NetworkManager.service   loaded active running Network Manager
polkit.service           loaded active running Authorization Manager
postfix.service          loaded active running Postfix Mail Transport Agent
rsyslog.service          loaded active running System Logging Service
sshd.service             loaded active running OpenSSH server daemon
systemd-journald.service loaded active running Journal Service
systemd-logind.service   loaded active running Login Service
systemd-udevd.service    loaded active running udev Kernel Device Manager
tuned.service            loaded active running Dynamic System Tuning Daemon
-------------------------------------------------
监听端口:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      955/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1273/master         
tcp6       0      0 :::22                   :::*                    LISTEN      955/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1273/master         
-------------------------------------------------
内核参考配置:


-------------------------------------------------
系统登录用户:

root:x:0:0:root:/root:/bin/bash
-------------------------------------------------
ssh 配置信息:

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
AuthorizedKeysFile	.ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem	sftp	/usr/libexec/openssh/sftp-server
-------------------------------------------------
sudo 配置用户:

root	ALL=(ALL) 	ALL
%wheel	ALL=(ALL)	ALL
-------------------------------------------------
定时任务配置:


-------------------------------------------------
hosts 信息:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
-------------------------------------------------
CPU占用top10:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0   46108   6404   3944 S   0.0  0.2   0:05.15 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.06 kthreadd
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.46 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    6 root      20   0       0      0      0 S   0.0  0.0   1:45.76 kworker/u4:0
    7 root      rt   0       0      0      0 S   0.0  0.0   0:01.43 migration/0
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S   0.0  0.0   0:13.61 rcu_sched
   10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain
   11 root      rt   0       0      0      0 S   0.0  0.0   0:00.61 watchdog/0

内存占用top10:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0   46108   6404   3944 S   0.0  0.2   0:05.15 systemd
    6 root      20   0       0      0      0 S   0.0  0.0   1:45.76 kworker/u4:0
    9 root      20   0       0      0      0 S   0.0  0.0   0:13.61 rcu_sched
    7 root      rt   0       0      0      0 S   0.0  0.0   0:01.43 migration/0
   11 root      rt   0       0      0      0 S   0.0  0.0   0:00.61 watchdog/0
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.46 ksoftirqd/0
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.06 kthreadd
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
   10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

脚本检查 CentOS 系统信息 的相关文章

随机推荐

  • kvm qemu内幕介绍

    kvm qemu内幕介绍 标签 虚拟化io数据结构linux内核优化磁盘 2012 09 14 11 10 6923人阅读 评论 4 收藏 举报 分类 linux 56 版权声明 本文为博主原创文章 未经博主允许不得转载 目录 1 硬件虚拟
  • Kaldi中文语音识别-----手把手教你kaldi的安装编译

    写在前面 本人目前读研中 小白一枚 主要研究方向 语音识别及语音歌曲合成 在这里记录一下自己学习软件的过程 还望大神们口下留情 kaldi是什么 kaldi是一个用C 写的语音识别工具包 kaldi旨在供语音识别研究员使用 当然 kaldi
  • RGB TFT-LCD彩条显示实验

    实验任务 本节的实验任务是使用正点原子ZYNQ开发板上的RGB TFT LCD接口 驱动RGB LCD液晶屏 支持目前推出的所有RGB LCD屏 并显示出彩条 模块示意图 RGBTFT LCD输入时序包含三个要素 像素时钟 同步信号 以及图
  • 也谈分离JavaScript和HTML

    不知道能不能将JavaScript和HTML的分离也归结为 你必将业务逻辑由显示中分离 thou shalt separate business logic from display 1 的问题 但有HTML和CSS的分离在前面对照 它们的
  • java mysql 项目_mysql数据库如何实现与Java项目连接

    mysql数据库如何实现与Java项目连接 发布时间 2020 11 09 16 47 40 来源 亿速云 阅读 68 作者 Leah mysql数据库如何实现与Java项目连接 很多新手对此不是很清楚 为了帮助大家解决这个难题 下面小编将
  • Python发送邮件

    Python3 SMTP 发送邮件 在现代社会 邮件已经成为了人们重要的沟通方式之一 Python3 提供了 SMTP 库 使得发送邮件变得非常容易 本文将介绍如何使用 Python3 中的 SMTP 库来发送邮件 SMTP 简介 SMTP
  • 虚拟机VMwar报错:您没有查看“hgfs“的内容所需的权限解决

    取消挂载 sudo umount mnt hgfs 再指定用户和组挂载 sudo vmhgfs fuse host mnt hgfs o allow other o uid 1000 o gid 1000 o umask 022
  • 深入理解Solidity——Using for

    指令using A for B 用来附着库里定义的函数 从库A 到任意类型B 这些函数将会默认接收调用函数对象的实例作为第一个参数 语法类似 python中的self变量一样 using A for 的效果是 库A中的函数被附着在做任意的类
  • 线性模型

    本文为自己学习 西瓜书 时做的一些笔记 方便知识点的梳理复习 线性模型 定义 学的一个通过属性的线性组合来进行预测的函数 形式 函数 向量 优点 模型简单 已于建模 蕴含着机器学习中一些基本思想 一些强大的非线性模型可以通过引入层级结构或高
  • 虚拟服务器修改教程,飘渺雪域商业一键虚拟端+修改元宝教程【无标题亲测

    1 解压服务端到硬盘 2 安装VM9虚拟机 有说明 VM8的IP 192 168 200 0 虚拟机 VM8 模式 为 NAT 3 VM9 gt 打开虚拟机 gt 找到服务端镜像 gt 打开 gt 打开此虚拟机电源 gt 移动 第一次 gt
  • CNN图片分类(Pytorch)

    这篇文章主要讲述用 pytorch 完成简单 CNN 图片分类任务 如果想对 CNN 的理论知识进行了解 可以看我的这篇文章 深度学习 一 CNN卷积神经网络 图片分类 我们以美食图片分类为例 有testing training valid
  • Ubuntu搭建开发openchannelssd的qemu的虚拟机

    1 安装带有NVMe支持的qemu QEMU Installation QEMU support for Open Channel SSDs is based on top of Keith Busch s qemu nvme branch
  • Selenium

    第一章 Selenium 概述 1 1 Selenium 发展史 Selenium是一系列基于Web的自动化工具 提供一套测试函数 用于支持Web自动化测试 函数非常灵活 能够完成界面元素定位 窗口跳转 结果比较 具有如下特点 多浏览器支持
  • 区块链笔记分享:

    区块链笔记分享 技术和数学基础 1 高位的hash的逆向过程除了穷举 没有更有效的办法 这个过程在目前的计算能力下必然费时费力 2 不对称的加密 公钥和私钥的签名机制 PoW 1 记帐中调整once 得到符合规则的所花费的工作 2 谁计算得
  • brew install下载资源网络总是中断怎么办

    问题 在mac系统下用brew install命令安装软件的时候 下载资源总是下到一半就中断了 导致一直安装不上 解决思路 先手动下载安装资源 再执行brew install安装 具体流程 1 下载对应资源 brew下载资源失败的时候会提示
  • 【Python开发】一文详解Flask-Login

    一文详解Flask Login Flask Login 为 Flask 提供用户会话管理 它处理登录 注销和长时间记住用户会话等常见任务 Flask Login 不绑定到任何特定的数据库系统或权限模型 唯一的要求是您的 用户对象实现一些方法
  • JUC并发编程(超详细)

    随着对Java的深入学习 越发觉得JVM和JUC这些底层原理的重要性 在看完黑马程序员的JVM后 也对JUC产生了浓厚的兴趣 在学习JUC的过程中 通过老师的视频做笔记 在遇到一些不懂的或者想更深入了解的知识时 自己也去搜索了很多资料 再把
  • MySQL数据库-更新表中的数据详解

    更新书记记录是数据操作中常见的操作 可以更新表中已经存在数据记录中的值 在MySQL中可以通过UPDATE语句来实现更新数据记录 该SQL语句可以通过如下几种方式使用 更新特定数据记录 更新所有数据记录 更新特定数据记录 在MySQL中更新
  • java数组初始化

    package equality public class demo5 public static void main String args int a1 1 2 3 4 5 int a2 a2 a1 将a1的数组赋给a2两者指向同一个数
  • 脚本检查 CentOS 系统信息

    脚本信息 bin bash auth lsr zds func sys info check version v1 0 sys centos6 x 7 x id u gt 0 echo 请用root用户执行此脚本 exit 1 sysver