前段时间看到一篇用脚本一键检查服务器的优秀博文,写的真棒,美中不足的是在实际应用中发现一个小问题:他的脚本好是好,但是由于环境和服务不一样,会检查没有的服务项,要去掉这些检查,还要一行行注释掉,很是麻烦,于是就优化脚本内容,把所有的检查项都定义为一个个的函数,最后在定义主函数的时候,可以自主的选择要使用的函数,不想使用的函数可以用#注释掉,比原来省时省事不少;完成脚本优化后,联想到系统优化,自己也按这种思路进行自主选择,下面的脚本内容和大家一块分享:
脚本1为初始优化系统:
#!/bin/bash
##################################################
#Name: centos6.8_init.sh #
#Version: v1.0 #
#Function: initialization system #
#Author: Andy #
#organization: https://blog.51cto.com/13162375 #
#Create Date: 2018-06-08 #
#Description: initialization #
##################################################
####### make dir ########
function packages(){
/bin/mkdir -p /application/packages
}
###### SELINUX status ######
function SELINUX(){
/bin/sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config
}
###### iptables status ######
function iptables(){
/sbin/service iptables stop
/sbin/chkconfig iptables off
}
###### yum is aliyun ########
function yum(){
/bin/mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
/usr/bin/wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
}
###### epel is aliyun #######
function epel(){
/usr/bin/wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
}
########## base rpm ##########
function baserpm(){
/usr/bin/yum install lrzsz nmap tree dos2unix nc -y
}
######## del issue and release ######
function delissue(){
/bin/cp /etc/issue /etc/issue.backup
/bin/cp /etc/issue.net /etc/issue.net.backup
/bin/cp /etc/redhat-release /etc/redhat-release.back
>/etc/issue
>/etc/issue.net
>/etc/redhat-release
}
####### ntp server ##########
function ntp(){
/usr/bin/yum install -y ntp
/sbin/service ntpd start
/sbin/chkconfig ntpd on
/sbin/chkconfig ntpdate on
}
######### crontab date ########
function crontabdate(){
/bin/echo '#### ntp server ###' >>/var/spool/cron/root
/bin/echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root
}
####### chrony server ##########
function chrony(){
/usr/bin/yum install -y chrony
/bin/echo 'server ntp1.aliyun.com iburst' >>/etc/chrony.conf
/sbin/service chronyd start
/sbin/chkconfig chronyd on
}
main(){
packages
SELINUX
iptables
yum
epel
baserpm
delissue
#ntp ##由于已经安装ntpd,所有就注释掉了
crontabdate
#chrony ##有ntpd,就不需要chrony了,也注释掉
}
main $*
脚本2可以检查系统(由于检查项较多,可以把不需要的检查注释掉):
#!/bin/bash
##################################################
# Name: centos6.8_check.sh #
# Version: v1.0 #
# Function: checking system #
# Author: Andy #
# organization: https://blog.51cto.com/13162375 #
# Create Date: 2018-06-09 #
# Description: checking system items #
##################################################
yd=`date -d "1 day ago" +%Y%m%d`
Ip=`ifconfig eth1|grep "inet addr:"|awk -F '[: ]+' '{print $4}'`
echo -e "\033[35;32m Subject:$Ip \033[0m"
iplist(){
echo -e "\033[35;34m###################\033[0m"
echo 'show ip'
/sbin/ifconfig
}
crontablist(){
echo '##############'
echo 'crontab list'
/usr/bin/crontab -l
echo ''
}
cpulist(){
echo '##############'
echo 'status of CPU'
/usr/bin/top -b -n 1 |head -n 15
}
cputop10(){
echo '##############'
echo 'cpu-top10'
/bin/ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
}
memory(){
echo '##############'
echo 'status of memory'
/usr/bin/free -mh
}
memorytop10(){
echo '##############'
echo 'mem-top10'
/bin/ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
}
showdisk(){
echo '##############'
echo 'status of disk'
/bin/df -hT
}
port(){
echo '##############'
echo 'the port of service'
/bin/netstat -lntup
}
datetime(){
echo '##############'
echo 'system time'
/bin/date
}
pingnet(){
echo '##############'
echo 'ping wwwbaidu.com'
/bin/ping -c 4 www.baidu.com
}
tcpstatus(){
echo '##############'
echo '80port tcp status'
/bin/netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'
}
last5user(){
echo '##############'
echo 'last 5 users'
/usr/bin/tail -n 5 /etc/passwd
}
last5login(){
echo '##############'
echo 'last 5 tty login'
/usr/bin/last -5
}
log(){
echo '##############'
echo 'ydIPshu'
/bin/grep -v HEAD /opt/logs/*${yd}.log | awk '{print $1}' |sort | uniq -c |wc -l
}
messageslog(){
echo '##############'
echo 'message log'
/usr/bin/tail -n 20 /var/log/messages
}
nginx-error(){
echo '##############'
echo 'nginx-error'
/usr/bin/tail -n 10 /opt/logs/error.log
}
php-error(){
echo '##############'
echo 'php-error'
/usr/bin/tail -n 5 /var/log/php-fpm/error.log
}
inotify-log(){
echo '##############'
echo 'inotify-log size'
/bin/ls -l /opt/inotify.log
}
inotifytail(){
echo '##############'
echo 'inotify-tailf-10'
/usr/bin/tail -n 10 /opt/inotify.log
}
showdata(){
echo '##############'
echo 'show databases'
mysql -uroot -pmima -e 'show databases'
}
mysql-max-connection(){
echo '##############'
echo 'mysql-max-connection'
mysql -uroot -pmima -e "show global status like 'Max_used_connections';"
}
myqlslave(){
echo '##############'
echo 'mysql-master-slave'
mysql -uroot -pmima -e 'show slave status\G;'
}
mysqlslow(){
echo '##############'
echo 'mysql-slowlog'
/usr/bin/tail -n 20 /usr/local/mysql/logs/mysqlslow.log
}
main(){
iplist
crontablist
cpulist
cputop10
memory
memorytop10
showdisk
port
datetime
pingnet
tcpstatus
last5user
last5login
#log
#messageslog
#nginx-error
#php-error
#inotify-log
#inotifytail
#showdata
#mysql-max-connection
#myqlslave
#mysqlslow
}
main $*
注:不管能否解决你遇到的问题,欢迎相互交流,共同提高!
转载于:https://blog.51cto.com/13162375/2126822