发布我的运维日常脚本,不需要每天登陆服务器了

大家好
出个血本,把毕生功力浓缩进一个运维脚本中
每天定时执行脚本发送邮件到邮箱
配合报警机制,基本不需要登陆服务器就可以了如指掌

好了,废话不多说,直接贴脚本,里面@是注解,别急,最后会告诉大家如何删除

vi xunjian.sh

@指定使用的sh
#!/bin/bash
@指定变量,yd缩写yesterday,哈昨天
yd=`date -d "1 day ago" +%Y%m%d`
@输出标题,我这边写的是IP
echo 'Subject:11.2.1.1'
@输出分隔符,下面很多,为了美观,最后会贴图,大家可以看看
echo '############################################################################################################'
@输出自己能看懂的意思就可以了,推荐英文以及汉语拼音,因为中文偶尔很走鸡
echo 'ip'
@linux命令,目的查看IP及网卡流量
ifconfig
@输出空行,也是为了美观,后面一样
echo ''
echo ''
echo '####################################################################################'
echo 'crontab'
@输出计划任务,目的万一有人更改,及时可以发现
crontab -l
echo ''
echo ''
echo '####################################################################################'
echo 'cpu'
@输出CPU信息,直接用TOP不行的
top -b -n 1 |head -n 15
echo ''
echo ''
echo '####################################################################################'
echo 'cpu-top10'
@CPU占用前十的进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
echo ''
echo ''
echo '####################################################################################'
echo 'mem'
@内存状态,看看剩余,虽然我也有报警装置,但每天看看放心
free -m
echo ''
echo ''
echo '####################################################################################'
echo 'mem-top10'
@内存占用前十进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
echo ''
echo ''
echo '####################################################################################'
echo 'fdisk'
@硬盘状态,剩余量
df -h
echo ''
echo ''
echo '###################################
```#########################################################################'
echo 'service'
@目前开启的都有哪些服务
netstat -tunpl
echo ''
echo ''
echo '####################################################################################'
echo 'time'
@时间看看,是不是准确,这里输出时间是你crontab中设定的时间为准
date
echo ''
echo ''
echo '####################################################################################'
echo 'ping'
@试试网络如何,虽然百度也有挂的时候,但总体稳定
ping -c 5 www.baidu.com
echo ''
echo ''
echo '####################################################################################'
echo '80port'
@输出80端口,各状态的数量,比如wait,正在连接什么的
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'
echo ''
echo ''
echo '############################################################################################################'
echo 'ydIPshu'
@这里引用最开始的YD变量,查看昨天一天所有访问日志中来访的IP数量,叫PV还是什么的,其实也不准确,尤其国内都是大局域网
grep -v HEAD /opt/logs/*${yd}.log | awk '{print $1}' |sort | uniq -c |wc -l
echo ''
echo ''
echo '############################################################################################################'
echo 'message'
@查看系统日志,有报错没有
tail -n 10 /var/log/messages
echo ''
echo ''
echo '############################################################################################################'
echo 'nginx-error'
@查看nginx错误日志,一般都是一堆404,大牛黑客搜后台整的
tail -n 10 /opt/logs/error.log
echo ''
echo ''
echo '############################################################################################################'
echo 'php-error'
@查看PHP错误日志
tail -n 5 /var/log/php-fpm/error.log
echo ''
echo ''
echo '############################################################################################################'
echo 'inotify-log size'
@查看同步软件的日志文件大小,有设置每天清空,要不太大,装unsion+inotify来同步上传目录,双机热备
ls -l /opt/inotify.log
echo ''
echo ''
echo '############################################################################################################'
echo 'inotify-tailf-10'
@查看同步的情况,从这能看出软件是否正常运行
tail -n 10 /opt/inotify.log
echo ''
echo ''
echo '############################################################################################################'
echo 'last'
@查看服务器登录用户,最近时间五个,别让人登录了都不知道
last -5
echo ''
echo ''
echo '############################################################################################################'
echo 'log-ip-top10'
@查看某网站,昨天一天的来访IP前十,目的是如果某IP数量巨大,你就要查查看是不是攻击或者什么的
awk '{print $1}' /opt/logs/sssss.access.${yd}.log| sort | uniq -c | sort -n -k 1 -r | head -n 10
echo ''
echo ''
echo '############################################################################################################'
echo 'log-200-top10'
@查看昨天一天,各状态码前十数量,前十足够了,200 404 403啥的
awk '{print $9}' /opt/logs/sssss.access.${yd}.log | sort | uniq -c | sort -rn
echo ''
echo ''
echo '############################################################################################################'
echo 'back'
@查看昨天备份网站成功了吗,我都是直接tar全备
ls -alh /opt/back/*${yd}*
echo ''
echo ''
echo '############################################################################################################'
echo 'log-back'
@查看昨天各种日志的备份
ls -alh /opt/logs/*${yd}*
find /opt/logs/*.log -mtime -1
echo ''
echo ''
echo '############################################################################################################'
echo 'mail'
@查看mail邮件,系统有什么报错,也会向ROOT用户发邮件,要时时关注
ls -al /var/spool/mail/root
echo ''
echo ''
echo '############################################################################################################'
echo 'mysql-error'
@查看数据库错误日志
tail -n 20 /usr/local/mysql/logs/mysqld.log
echo ''
echo ''
echo '############################################################################################################'
echo 'mysql-status'
@数据库状态,我是用来看当前数据库连接数
mysql -uroot -pmima -e 'status'
echo ''
echo ''
echo '############################################################################################################'
echo 'databases'
@查看所有数据库名称
mysql -uroot -pmima -e 'show databases'
echo ''
echo ''
echo '############################################################################################################'
echo 'mysql-max-connection'
@查看数据库启动到现在最大的连接数峰值,嘿,非常逻辑清楚的解释
mysql -uroot -pmima -e "show global status like 'Max_used_connections';"
echo ''
echo ''
echo '############################################################################################################'
echo 'mysql-master-slave'
@我有装mysql主主双机,这里查看双机同步状态
mysql -uroot -pmima -e 'show slave status\G;'
echo ''
echo ''
echo '############################################################################################################'
echo 'mysql-slowlog'
@查看数据库慢日志,我设置1S
tail -n 20 /usr/local/mysql/logs/mysqlslow.log
echo ''
echo ''
echo '############################################################################################################'
echo 'clamd'
@查看杀毒软件今天有没有查到病毒文件,这软件怎么装,在我之前的博文里有
cat  /opt/clamav/bingdu.log
echo ''
echo ''
echo '############################################################################################################'
echo 'users'
@查看新增用户,我之前有用一款国产软件,服了,一升级就给我新增个用户,最逗的是空密码,咋想的开发
tail -n 5 /etc/passwd
echo ''
echo ''
echo '############################################################################################################'


好啦,大家也看完了,:wq保存
这些注解肯定不能留啊
炫个技
sed  -i  '/@/d'  xunjian.sh
执行这个命令,你会发现注解都没有了

crontab -e
添加定时任务,把我的贴出来大家看看,8点准时发送,一上班就吃着早点看看
10 8 * * * /opt/xunjian/xunjian.sh > /opt/xunjian/xunjian  2>&1;sendmail [email protected] < /opt/xunjian/xunjian

当然,这里说了,你要先安装好sendmail,我之前的博文中也有推荐看看

好了,谢谢大家观看,欢迎下方讨论,我叫TAB

猜你喜欢

转载自blog.51cto.com/kevinzhang91/2122058