Linux系统检查脚本
⼀、背景
对登录⼀个系统,快速查看其系统信息,检查系统各项指标及参数,编写系统快速检查脚本,输出系统信息到脚本运⾏的logs⽬录下。⼆、脚本
#!/bin/bash
# auth:kaliarch
# 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)
MemTotal=$(grep MemTotal /proc/meminfo| awk '{print $2}')  #KB
MemFree=$(grep MemFree /proc/meminfo| awk '{print $2}')    #KB
let MemUsed=MemTotal-MemFree
MemPercent=$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")
report_MemTotal="$((MemTotal/1024))""MB"        #内存总容量(MB)
report_MemFree="$((MemFree/1024))""MB"          #内存剩余(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=$( -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 "^$|^#" /f)
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}
磁盘使⽤:
${disk_use}
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}
系统负载:  ${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
}
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() {
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 -b n1|head -17|tail -10|sort -k10 -r)
cat <<EOF
CPU占⽤top10:
${top_title}
${cpu_top10}
内存占⽤top10:
linux系统登录${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}
三、测试
检查的信息如下
CPU信息:
物理CPU个数:  1
逻辑CPU个数:  2
每CPU核⼼数:  2
CPU型号:      QEMU    Virtual  CPU  version  2.3.0
CPU架构:      x86_64
-------------------------------------------------
内存信息:
total        used        free      shared  buff/cache  available Mem:          1839        117        1292          8        428        1526 Swap:          2047          0        2047
-------------------------------------------------
IP信息:
系统公⽹地址:  103.21.119.220
系统公⽹地址:  103.21.119.220
系统私⽹地址:  10.234.1.160
⽹关地址:      10.234.1.254
MAC地址:      fa:de:19:ea:54:00
路由信息:
Kernel        IP                routing        table
Destination    Gateway            Genmask        Flags  Metric  Ref  Use  Iface 0.0.0.0        10.234.1.254      0.0.0.0        UG    100    0    0    eth0
10.234.1.0    0.0.0.0            255.255.255.0  U      100    0    0    eth0 DNS            信息:
nameserver    114.114.114.114
-------------------------------------------------
磁盘信息:
Disk /dev/vda: 21.5 GB
Disk /dev/mapper/cl-root: 18.2 GB
Disk /dev/mapper/cl-swap: 2147 MB
磁盘使⽤:
Filesystem          Type      Size  Used Avail Use% Mounted on
/dev/mapper/cl-root xfs        17G  1.2G  16G  7% /
devtmpfs            devtmpfs  910M    0  910M  0% /dev
/dev/vda1          xfs      1014M  138M  877M  14% /boot
inode信息:
Filesystem          Inodes IUsed IFree IUse% Mounted on
/dev/mapper/cl-root  8.5M  32K  8.5M    1% /
devtmpfs              228K  403  227K    1% /dev
/dev/vda1            512K  330  512K    1% /boot
-------------------------------------------------
系统信息:
系统:              GNU/Linux
发⾏版本:          CentOS                Linux  release  7.3.1611  (Core)
系统内核:          3.10.0-514.el7.x86_64
主机名:            10-234-1-160
selinux状态:      Permissive
系统语⾔:          en_US.UTF-8
系统当前时间:      Wed                    Oct    24      10:30:59  CST    2018
系统最后重启时间:  2018-10-23            12:07
系统运⾏时间:      22:23
系统负载:          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
-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.service                      enabled
postfix.service                            enabled
qemu-guest-agent.service                    enabled
rsyslog.service                            enabled
sshd.service                                enabled
systemd-readahead-collect.service          enabled
systemd-readahead-drop.service              enabled
systemd-readahead-replay.service            enabled
tuned.service                              enabled

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。