Linux系統檢查腳本
阿新 • • 發佈:2018-10-24
ssi pass then telephone file 啟用 ada fix exec 一、背景
對登錄一個系統,快速查看其系統信息,檢查系統各項指標及參數,編寫系統快速檢查腳本,輸出系統信息到腳本運行的logs目錄下。
二、腳本
git地址
#!/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=$(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} 磁盤使用: ${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} 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() { 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: ${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 系統私網地址: 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 [email protected] 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 [email protected] 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 ------------------------------------------------- 運行的服務: 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 [email protected] loaded active running Getty on tty1 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 qemu-guest-agent.service loaded active running QEMU Guest 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 1217/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1998/master tcp6 0 0 :::22 :::* LISTEN 1217/sshd tcp6 0 0 ::1:25 :::* LISTEN 1998/master udp 0 0 0.0.0.0:8900 0.0.0.0:* 739/dhclient udp 0 0 0.0.0.0:68 0.0.0.0:* 739/dhclient udp6 0 0 :::60097 :::* 739/dhclient ------------------------------------------------- 內核參考配置: kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.ip_local_port_range = 1024 65535 net.ipv6.conf.all.disable_ipv6 = 1 ------------------------------------------------- 系統登錄用戶: 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 UsePrivilegeSeparation sandbox # Default for new installations. 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 ------------------------------------------------- 定時任務配置: root 1 1 * * * /bin/bash /usr/scripts/IP_iptables.sh 1 1 * * 0 /usr/sbin/ntpdate time1.aliyun.com 30 8 * * 1 /bin/bash /data/blsexcle/rds_bak.sh ------------------------------------------------- hosts 信息: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.234.1.150 10-234-1-150 ------------------------------------------------- CPU占用top10: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 128092 6644 3888 S 0.0 0.4 0:05.30 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0 6 root 20 0 0 0 0 S 0.0 0.0 0:00.37 kworker/u4:0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.02 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:01.97 rcu_sched 10 root rt 0 0 0 0 S 0.0 0.0 0:00.57 watchdog/0 11 root rt 0 0 0 0 S 0.0 0.0 0:00.45 watchdog/1 12 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/1 內存占用top10: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 128092 6644 3888 S 0.0 0.4 0:05.30 systemd 9 root 20 0 0 0 0 S 0.0 0.0 0:01.97 rcu_sched 10 root rt 0 0 0 0 S 0.0 0.0 0:00.57 watchdog/0 11 root rt 0 0 0 0 S 0.0 0.0 0:00.45 watchdog/1 6 root 20 0 0 0 0 S 0.0 0.0 0:00.37 kworker/u4:0 2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd 12 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/1 7 root rt 0 0 0 0 S 0.0 0.0 0:00.02 migration/0 3 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
Linux系統檢查腳本