Chinaunix首页 | 论坛 | 博客
  • 博客访问: 370167
  • 博文数量: 114
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1219
  • 用 户 组: 普通用户
  • 注册时间: 2015-02-07 21:23
文章分类

全部博文(114)

文章存档

2018年(1)

2017年(5)

2016年(87)

2015年(21)

我的朋友

分类: 系统运维

2016-08-01 10:48:16


  1. Shell脚本应用示例
  2. 每周五17:30清理FTP服务器的公共共享目录,检查 /var/ftp/pub/ 目录,将其中所有子目录及文件的详细列表、当时的时间信息追加保存到 /var/log/pubdir.log 日志文件中,然后清空该目录

  3.     #!/bin/bash
  4.     date >> /var/log/pubdir.log
  5.     ls -lR >> /var/log/puddir.logrm -rf /var/ftp/pub/*

  6. crontab -e

  7.     30 17 * * 5 /ftp.shell

  8. 数据库服务器需要每隔3天对数据库目录做一次完整备份,统计/var/lib/mysql目录占用的空间大小,查看当前的日期,并记录到临时文件/tmp/dbinfo.txt中;将/tmp/dbinfo.txt文件,/var/lib/mysql目录进行压缩归档,备份到/opt/dbbak/目录中,备份后的包文件名中要包含当天的日期信息,最后删除临时文件/tmp/dbinfo.txt。
  9. vim dbbak.sh

  10.     #!/bin/bash
  11.     DAY=`date +%Y%m%d`
  12.     SIZE='du -sh /var/lib/mysql'
  13.     echo "Date: $DAY" >> /tmp/dbinfo.txt
  14.     echo "Data Size: $SIZE" >> /tmp/dbinfo.txt
  15.     cd /opt/dbbak/
  16.     tar cvfP mysqlbak-${DAY}.tar.gz /tmp/dbinfo.txt /var/lib/mysql
  17.     rm -rf /tmp/dbinfo.txt

  18. 定义权限
  19. chmod u+x dbbak.sh
  20. 以及crond

  21.     59 23 */3 * * /dbbak.sh

  22. 脚本3:
  23. 为了持续观察服务器每天的基本运行状况,提供方便易读的集中的日志记录数据,需要结合shell脚本和计划任务设置,定期记录不同时间段服务器的cpu负载,内存和交换内存,磁盘使用率等各种信息。
  24. 每隔15分钟记录一次cpu,内存,交换空间,磁盘,最近的用户登录情况等,连同当时的时间信息,以YYYY-mm-dd HH:MM的格式输出追加保存到日志文件/var/log/runrec/running.today中。
  25. 每天晚上23:55时将/var/log/runrec/running.today文件压缩备份,保存到/var/log/runrec目录中,文件名running.record-YYYYmmdd.tar.bz2的格式,备份完毕后删除当天的记录文件running.today。

  26.     [root@localhost /]# cat monitor.sh
  27.     #!/bin/bash
  28.     DATE=`date "+%y%m%d %H%M"`
  29.     DATEBAK=`date "+%Y%m%d"`
  30.     CPU=`uptime`
  31.     MEM=`free -m | grep "Mem"`
  32.     SWAP=`free -m | grep "Swap"`
  33.     DISK=`df -hT`
  34.     echo $DATE >> /var/log/runrec/running.today
  35.     echo $CPU >> /var/log/runrec/running.today
  36.     echo $MEM >> /var/log/runrec/running.today
  37.     echo $SWAP >> /var/log/runrec/running.today
  38.     echo $DISK >> /var/log/runrec/running.today


  39.     root@localhost /]# crontab -l
  40.     */15 * * * * /monitor.sh
  41.     55 23 * * * /bin/tar cjvf /var/log/runrec/running.record-`date "+%Y%m%d"`.tar.bz2 /var/log/runrec/running.today --remove-files

  42. 脚本四
  43. 编写防火墙脚本。
  44. 建立防火墙规则脚本文件,允许从192.168.2.0网络到192.168.1.10网站服务器的访问。允许192.168.2.10的管理员计算机到192.168.1.10服务器的SSHD远程控制。

  45.     vim /iptables.sh
  46.     #!/bin/bash
  47.     SERVER_IP=“192.168.1.10”,定义网站服务器的IP地址
  48.     LAN_IP=“192.168.2.0/24”,定义内网网段的IP地址
  49.     ADMIN_IP=“192.168.2.10”,定义管理员PC的IP地址
  50.     echo 1 > /proc/sys/net/ipv4/ip_forward
  51.     iptables -F
  52.     iptables -P FORWARD DROP
  53.     iptables -A FORWARD -p tcp -s $LAN_IP -d $SERVER_IP --dport 80 -j ACCEPT
  54.     iptables -A FORWARD -p tcp -s $SERVER_IP -d $LAN_IP --sport 80 -j ACCEPT
  55.     iptables -A FORWARD -p tcp -s $ADMIN_IP -d $SERVER_IP --dport 22 -j ACCEPT
  56.     iptables -A FORWARD -p tcp -s $SERVER_IP -d $ADMIN_IP --sport 22 -j ACCEPT

  57. chmod u+x /iptables.sh

  58. 有10台被监控主机、一台监控机,在监控机上编写脚本,一旦某台被监控机器/分区使用率大于80%, 就发邮件报警
  59. 脚本每10分钟执行检查一次
  60. #/bin/bash
  61. FSMAX=80
  62. remote_user=root
  63. remote_ip=(192.168.88.112)
  64. ip_num=0
  65. while [ "$ip_num" -lt "${#remote_ip[@]}" ]
  66. do
  67.       ssh $remote_user@${remote_ip[$ip_num]} df -h > /tmp/disk_tmp
  68.       disksize=`df -P ${2} | tail -3 | awk '{print $5 }' | cut -d'%' -f1|head -1`
  69.       if [ $disksize -gt $FSMAX ]
  70.       then
  71.       grep '\/$' /tmp/disk_tmp > /tmp/maildisk
  72.       echo ${remote_ip[$ip_num]} >> /tmp/maildisk
  73.       mail -s "diskcheck_alert" 18565616506@163 < /tmp/maildisk
  74.       fi
  75.       ip_num=`expr $ip_num + 1`
  76. done

  77. (4)添加任务计划 crontab -e
  78. */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




阅读(2320) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~