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=$(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
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.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
getty@tty1.service 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 系統健康巡檢指令碼Linux指令碼
- 系統巡檢指令碼指令碼
- 快速檢視LINUX 系統硬體的指令碼Linux指令碼
- RAC指令碼檢查指令碼
- 檢查Linux系統日誌error和mysql錯誤日誌的指令碼薦LinuxErrorMySql指令碼
- linux系統優化指令碼Linux優化指令碼
- 記憶體檢查指令碼記憶體指令碼
- CentOS 6 系統優化檢測指令碼CentOS優化指令碼
- linux系統for迴圈小指令碼Linux指令碼
- Solaris linux 系統監控指令碼Linux指令碼
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- 結構損壞檢查指令碼指令碼
- process不釋放,檢查指令碼指令碼
- oracle 檢測指令碼on linuxOracle指令碼Linux
- 檢查系統版本
- Linux系統效能測試指令碼(unixbenchnmon)Linux指令碼
- 初始化linux系統指令碼薦Linux指令碼
- 外來鍵缺索引檢查指令碼索引指令碼
- dataguard 手動切換,檢查指令碼指令碼
- 檢查備份情況的指令碼指令碼
- 檢視當前系統程式指令碼ps.sh指令碼
- AIX系統日常檢查AI
- HP系統配置檢查
- linux系統軟體啟動sh指令碼Linux指令碼
- Linux系統指令碼分析之rc.sysinitLinux指令碼
- Bash 指令碼實現每次登入到 Shell 時可以檢視 Linux 系統資訊指令碼Linux
- 資料庫的常規檢查指令碼資料庫指令碼
- 巧用shell生成資料庫檢查指令碼資料庫指令碼
- 資料庫的檢查步驟指令碼資料庫指令碼
- oracle 資料庫效能健康檢查指令碼Oracle資料庫指令碼
- 每天檢查正式Server的一個指令碼Server指令碼
- Oracle效能問題檢查 - 常用查詢指令碼(final)Oracle指令碼
- Linux系統中,要檢查CUDA是否安裝成功Linux
- Linux下XWindow系統啟動指令碼分析(轉)Linux指令碼
- unix系統環境檢查
- 使用MD5的檢測方法,shell指令碼實現linux系統檔案完整性檢測指令碼Linux
- <Linux系統isosize指令用法>Linux
- <Linux系統stat指令用法>Linux