-
Shell脚本应用示例
-
每周五17:30清理FTP服务器的公共共享目录,检查 /var/ftp/pub/ 目录,将其中所有子目录及文件的详细列表、当时的时间信息追加保存到 /var/log/pubdir.log 日志文件中,然后清空该目录
-
-
#!/bin/bash
-
date >> /var/log/pubdir.log
-
ls -lR >> /var/log/puddir.logrm -rf /var/ftp/pub/*
-
-
crontab -e
-
-
30 17 * * 5 /ftp.shell
-
-
数据库服务器需要每隔3天对数据库目录做一次完整备份,统计/var/lib/mysql目录占用的空间大小,查看当前的日期,并记录到临时文件/tmp/dbinfo.txt中;将/tmp/dbinfo.txt文件,/var/lib/mysql目录进行压缩归档,备份到/opt/dbbak/目录中,备份后的包文件名中要包含当天的日期信息,最后删除临时文件/tmp/dbinfo.txt。
-
vim dbbak.sh
-
-
#!/bin/bash
-
DAY=`date +%Y%m%d`
-
SIZE='du -sh /var/lib/mysql'
-
echo "Date: $DAY" >> /tmp/dbinfo.txt
-
echo "Data Size: $SIZE" >> /tmp/dbinfo.txt
-
cd /opt/dbbak/
-
tar cvfP mysqlbak-${DAY}.tar.gz /tmp/dbinfo.txt /var/lib/mysql
-
rm -rf /tmp/dbinfo.txt
-
-
定义权限
-
chmod u+x dbbak.sh
-
以及crond
-
-
59 23 */3 * * /dbbak.sh
-
-
脚本3:
-
为了持续观察服务器每天的基本运行状况,提供方便易读的集中的日志记录数据,需要结合shell脚本和计划任务设置,定期记录不同时间段服务器的cpu负载,内存和交换内存,磁盘使用率等各种信息。
-
每隔15分钟记录一次cpu,内存,交换空间,磁盘,最近的用户登录情况等,连同当时的时间信息,以YYYY-mm-dd HH:MM的格式输出追加保存到日志文件/var/log/runrec/running.today中。
-
每天晚上23:55时将/var/log/runrec/running.today文件压缩备份,保存到/var/log/runrec目录中,文件名running.record-YYYYmmdd.tar.bz2的格式,备份完毕后删除当天的记录文件running.today。
-
-
[root@localhost /]# cat monitor.sh
-
#!/bin/bash
-
DATE=`date "+%y%m%d %H%M"`
-
DATEBAK=`date "+%Y%m%d"`
-
CPU=`uptime`
-
MEM=`free -m | grep "Mem"`
-
SWAP=`free -m | grep "Swap"`
-
DISK=`df -hT`
-
echo $DATE >> /var/log/runrec/running.today
-
echo $CPU >> /var/log/runrec/running.today
-
echo $MEM >> /var/log/runrec/running.today
-
echo $SWAP >> /var/log/runrec/running.today
-
echo $DISK >> /var/log/runrec/running.today
-
-
-
root@localhost /]# crontab -l
-
*/15 * * * * /monitor.sh
-
55 23 * * * /bin/tar cjvf /var/log/runrec/running.record-`date "+%Y%m%d"`.tar.bz2 /var/log/runrec/running.today --remove-files
-
-
脚本四
-
编写防火墙脚本。
-
建立防火墙规则脚本文件,允许从192.168.2.0网络到192.168.1.10网站服务器的访问。允许192.168.2.10的管理员计算机到192.168.1.10服务器的SSHD远程控制。
-
-
vim /iptables.sh
-
#!/bin/bash
-
SERVER_IP=“192.168.1.10”,定义网站服务器的IP地址
-
LAN_IP=“192.168.2.0/24”,定义内网网段的IP地址
-
ADMIN_IP=“192.168.2.10”,定义管理员PC的IP地址
-
echo 1 > /proc/sys/net/ipv4/ip_forward
-
iptables -F
-
iptables -P FORWARD DROP
-
iptables -A FORWARD -p tcp -s $LAN_IP -d $SERVER_IP --dport 80 -j ACCEPT
-
iptables -A FORWARD -p tcp -s $SERVER_IP -d $LAN_IP --sport 80 -j ACCEPT
-
iptables -A FORWARD -p tcp -s $ADMIN_IP -d $SERVER_IP --dport 22 -j ACCEPT
-
iptables -A FORWARD -p tcp -s $SERVER_IP -d $ADMIN_IP --sport 22 -j ACCEPT
-
-
chmod u+x /iptables.sh
-
-
有10台被监控主机、一台监控机,在监控机上编写脚本,一旦某台被监控机器/分区使用率大于80%, 就发邮件报警
-
脚本每10分钟执行检查一次
-
#/bin/bash
-
FSMAX=80
-
remote_user=root
-
remote_ip=(192.168.88.112)
-
ip_num=0
-
while [ "$ip_num" -lt "${#remote_ip[@]}" ]
-
do
-
ssh $remote_user@${remote_ip[$ip_num]} df -h > /tmp/disk_tmp
-
disksize=`df -P ${2} | tail -3 | awk '{print $5 }' | cut -d'%' -f1|head -1`
-
if [ $disksize -gt $FSMAX ]
-
then
-
grep '\/$' /tmp/disk_tmp > /tmp/maildisk
-
echo ${remote_ip[$ip_num]} >> /tmp/maildisk
-
mail -s "diskcheck_alert" 18565616506@163 < /tmp/maildisk
-
fi
-
ip_num=`expr $ip_num + 1`
-
done
-
-
(4)添加任务计划 crontab -e
-
*/10 * * * * /fuwuqi.sh
检测服务端口脚本
#!/bin/bash
#Date: zsq,March 12 2016
#Monitor JavaServer script
#check root user
if [ $(id -u) != "0" ]; then
echo " Not the root user! Try using sudo Command ! "
exit 1
fi
netstat -nl|grep -q "8089"
if [ $? -ne 1 ];then
exit
fi
echo $(date +%T%n%F)" Restart java Services " >> /var/log/java.log
#restart java
ps -ef | grep 'tomcat' | grep -v grep| awk '{print $2}' | xargs kill -9
/usr/tomcat7.0.54/bin/startup.sh
30秒检测是否可以上外网,或者eth0是否没有获取IP ,两者有任何一样不成立就重启网卡自动获取IP
#!/bin/sh
while true
do
ipaddr=`/sbin/ifconfig eth0|grep 'inet addr'|sed s/^.*addr://g|awk '{print $1}'|wc -l`
ping=`ping -c 2 &>/dev/null || echo $?`
if [ $ipaddr -eq 0 -o -n "$ping" ];then
/etc/init.d/network restart
fi
sleep 30
done