給Linux服務器添加定時巡檢日誌

問題描述:Linux服務器中,想在某個時間定時生成巡檢日誌,如:想看該服務器中哪些用戶登錄了,定時獲取系統網絡信息再或者CPU佔用率,那麼就用到了crontab定時命令了,在命令窗口輸入crontab -l,查看Linux服務器中存在的定時任務,
crontab -e:就是編輯自己的定時任務,點擊i——然後添加自己需要自動執行的巡檢日誌腳本的路徑和定時生成的時間。
添加格式:
* * * * * 腳本的絕對路徑,代表的含義 

分鐘 小時 日期 月份 星期幾 腳本文件
20     12      *       *        *       腳本的絕對路徑  代表每天12點20分執行該腳本一次

巡檢腳本checklinux.sh包含信息:
系統網絡信息/服務信息/運行的服務/監聽腳本/系統登陸用戶/CPU佔用top10/內存佔用top10/用戶的登錄信息/查看最近24小時內所有被修改過的文件/網絡連接信息查看/查看xx開頭的進程等等

例如checklinux.sh:要下載文件可見:https://download.csdn.net/my/uploads/1/1

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

#[ $(id -u) -gt 0 ] && echo "用戶執行此腳本!"  && exit 0
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%H%m%s`.txt"

# 獲取系統網絡信息
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_service_info() {
    port_listen=$(netstat -lntup|grep -v "Active Internet")
    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}
EOF
}

function get_sys_user() {
    login_user=$(awk -F: '{if ($NF=="/bin/bash") print $0}' /etc/passwd)
    
cat <<EOF
系統登錄用戶:

${login_user}
${line}


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 get_check_info() {
	check1=$(cat /etc/passwd)	
    check2=$(find / -name '*.sh' -mtime -1)	
	check21=$(find / -name '*.asp' -mtime -1)	
	check22=$(find / -name '*.php' -mtime -1)	
	check23=$(find / -name '*.aspx' -mtime -1)
	check24=$(find / -name '*.jsp' -mtime -1)		
	check25=$(find / -name '*.html' -mtime -1)
	check26=$(find / -name '*.htm' -mtime -1)	
	check3=$(netstat -antlp | grep "ESTABLISHED" |more)
    check4=$(ps -aef | grep inetd)
    check5=$(ps -aef)
	check7=$(last -20)
	check8=$(ls -al /var/log)
	check9=$(find / -name core -exec ls -l {} \;)
	check9=$(crontab -l)
	check10=$(cat /etc/crontab)
	check11=$(ls -alt /etc/init.d/)
	check12=$(ls -alt /usr/bin | head -10)
	check13=$(ls -alt /tmp/)
	check15=$(last -f /var/log/wtmp)
	check16=$(last -f /var/run/utmp)
cat <<EOF

用戶的登錄信息:

${check1}
${line}

查看所有被修改過的文件返回最近24小時內的
${check2}
${check21}
${check22}
${check23}
${check24}
${check25}
${check26}
${line}

網絡連接信息查看:

${check3}
${line}

查看inetd進程,主要查看inetd -s參數:

${check4}
${line}

查看./xxx開頭的進程:
${check5}
${line}

查詢用戶的歷史記錄(只查詢最近的20條記錄),觀察syslog進程情況:
${check7}
${line}

檢查wtmp utmp,包括messgae等文件:

${check8}
${line}

檢查定時任務:

${check9}
${line}


檢查定時文件的完整性:
${check10}
${line}


開機啓動程序:

${check11}
${line}

查看系統命令是否被替換:

${check12}
${line}

查看敏感目錄的文件分析:

${check13}
${line}

登錄過本系統的用戶的信息:

${check15}
${line}

正在本系統中的用戶的信息:

${check16}
${line}

EOF
}
	
function sys_check() {
    get_check_info
	echo ${line}		
    get_net_info
    echo ${line}
    get_service_info
    echo ${line}
    get_sys_user
    echo ${line}
    process_top_info
	
}

sys_check > ${sys_check_file}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章