#题目:有10 台被监控主机、一台监控机,在监控机上编写脚本,一旦某台被监控机器/ 分区适用率大于80%, 就发邮件报警放到crontab 里面, 每10 分钟检查一次

#测试机器:虚拟机Linux as 4

#1.首先建立服务器间的信任关系。拿两台机器做测试

  1. //本机ip:192.168.1.6
  2. [root@codfei ~]# ssh-keygen -t rsa
  3. Generating public/private rsa key pair.
  4. Enter file in which to save the key (/root/.ssh/id_rsa):
  5. /root/.ssh/id_rsa already exists.
  6. Overwrite (y/n)? y //以为我是第2 次建立关系所以此处覆盖原来的文件)
  7. Enter passphrase (empty for no passphrase): //直接回车无须输入密钥)
  8. Enter same passphrase again:
  9. Your identification has been saved in /root/.ssh/id_rsa.
  10. Your public key has been saved in /root/.ssh/id_rsa.pub.
  11. The key fingerprint is:
  12. 04:37:13:2a:4b:10:af:c1:2b:03:3f:6b:27:ce:b9:62 root@codfei
  13. [root@codfei ~]# cd .ssh/
  14. [root@codfei .ssh]# ll
  15. -rw------- 1 root root 883 Apr 25 17:51 id_rsa
  16. -rw-r--r-- 1 root root 221 Apr 25 17:51 id_rsa.pub
  17. -rw-r--r-- 1 root root 442 Apr 25 17:37 known_hosts

id_rsa 是密钥文件,id_rsa.pub 是公钥文件。

  1. [root@codfei .ssh]# scp id_rsa.pub192.168.1.4:/root/.ssh/192.168.1.6
  2. root@192.168.1.4's password:
  3. id_rsa.pub 100% 221 0.2KB/s 00:00

这里把公钥文件取名为本机的ip 地址就是为了以后和更多的机器建立信任关系不发生混淆。
现在登陆到192.168.1.4 机器

  1. [root@codfei ~]# cd .ssh/
  2. [root@codfei .ssh]# cat 192.168.1.6 >> authorized_keys

然后回到192.168.1.6 机器直接

  1. [root@codfei .ssh]# ssh 192.168.1.4
  2. Last login: Wed Aug 8 12:14:42 2007 from 192.168.1.6

这样就可以了,里面偶尔涉及到权限问题。一般./ssh 文件夹是755 authorized_keys 为600 或者644

  1. ####脚本如下#######################
  2. #!/bin/bash
  3. #SCRIPT:df_check.sh
  4. #Writeen by codfei Mon Sep 3 07:25:28 CST 2007
  5. #PURPOSE:This script is used to monitor for full filesystems.
  6. #######################Begining####################
  7. ####################
  8. FSMAX="80"
  9. remote_user='root' #####完全可以不用root
  10. remote_ip=(192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9
  11. 192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 ) ---->
  12. # 这里填写你要监控的主机ip
  13. ip_num='0'
  14. while [ "$ip_num" -le "$(expr ${#remote_ip[@]} - 1)" ]
  15. do
  16. read_num='1'
  17. ssh "$remote_user"@"${remote_ip[$ip_num]}" df -h > /tmp/diskcheck_tmp
  18. grep '^/dev/*' /tmp/diskcheck_tmp|awk '{print $5}'|sed 's//%//g' >
  19. /tmp/diskcheck_num_tmp
  20. while [ "$read_num" -le $(wc -l < /tmp/diskcheck_num_tmp) ]
  21. do
  22. size=$(sed -n "$read_num"'p' /tmp/diskcheck_num_tmp)
  23. if [ "$size" -gt "$FSMAX" ]
  24. then
  25. $(grep '^/dev/*' /tmp/diskcheck_tmp|sed -n $read_num'p' >
  26. /tmp/disk_check_mail)
  27. $(echo ${remote_ip[$ip_num]} >> /tmp/disk_check_mail)
  28. $(mail -s "diskcheck_alert" admin < /tmp/disk_check_mail)
  29. fi
  30. read_num=$(expr $read_num + 1)
  31. done
  32. ip_num=$(expr $ip_num + 1)
  33. done
  34. #############over################################
  35. ################让脚本每十分钟执行一次#############
  36. cron 表中加入
  37. 0/10 * * * * /home/codfei/diskcheck.sh 2>&1
  38. ################################################
  39. ##########################
  40. 比如, ext2 文件系统, 如果异常死机,开机如何修复文件系统?
  41. 如果异常关机,比如断电,通知机房的人开机之后,
  42. 我们需要远程修复、检查文件系统
  43. 除了/分区之外, 其他的分区:
  44. umount /home
  45. fsck -y /home
  46. /*
  47. / 分区需要开机之后, 由机房的人来扫描
  48. 随后我们再登录并扫描/home 等其他分区
  49. 如何查看一个进程所使用的文件句柄?
  50. 看这里面 /proc/进程号/fd/的个数就行了
  51. */
  1. #简单的比如如何查看apache 进程数
  2. [root@localhost fd]# ps -ef|grep httpd|wc -l
  3. 1

#题目:有10 台被监控主机、一台监控机,在监控机上编写脚本,一旦某台被监控机器/ 分区适用率大于80%, 就发邮件报警放到crontab 里面, 每10 分钟检查一次的更多相关文章

  1. 自学Zabbix3.10.1.5-事件通知Notifications upon events-媒介类型自定义脚本

    自学Zabbix3.10.1.5-事件通知Notifications upon events-媒介类型自定义脚本

  2. 【转】shell脚本实现多台服务器自动巡检--可参考学习

    shell脚本实现多台服务器自动巡检   摘要:           运维服务一个项目二十多台(或者多台)服务器,每天要做服务器的性能巡检工作是查看服务器的CPU.内存.磁盘空间是否在正常值范围内.像 ...

  3. shell脚本实现多台服务器自动巡检

    shell脚本实现多台服务器自动巡检 摘要:         运维服务一个项目二十多台(或者多台)服务器,每天要做服务器的性能巡检工作是查看服务器的CPU.内存.磁盘空间是否在正常值范围内.像这样每天 ...

  4. php利用crontab执行 5分钟发邮件给用户 (包含每分钟发一次)

    php利用crontab执行 5分钟发邮件给用户 一开始设想用shell_exec执行sh 运行 crontab但发现并不可取 因为没办法传变量 (因为要传963529987@qq.com)所以决定采 ...

  5. 【mysql经典题目】科目成绩都大于80分\每个科目的第一名\总成绩排名

    参考:http://blog.csdn.net/lifushan123/article/details/44948135 1.查询出科目成绩都大于80分的学生的名字? drop table if EX ...

  6. zabbix:以主动模式添加一台受监控主机 (zabbix5.0)

    一,zabbix被动模式和主动模式的区别? zabbix-agent默认的模式是被动模式, zabbix agent被动地接受zabbix server发来的指令, 获取数据后再返回给zabbix s ...

  7. linux crontab & 每隔10秒执行一次

    linux下定时执行任务的方法  在LINUX中你应该先输入crontab -e,然后就会有个vi编辑界面,再输入0 3 * * 1 /clearigame2内容到里面 :wq 保存退出. 在LINU ...

  8. 通过python脚本读取多台虚机硬件信息

    主要通过fabric模块实现 import fabric ''' hosts = [] ,): host = "192.168.75." + str(i) hosts.append ...

  9. 如何在同一台电脑上部署多个tomcat实现多个tomcat在同一台电脑上同时启动

    有时候我们在开发的过程中难免会遇到需要在同一台电脑部署多个tomcat,且还要他们能够都单独同时启动不会对其他的tomcat造成影响 本文就简单记录一下,如何来实现这个骚操作 1. 下载tomcat的 ...

随机推荐

  1. (一)Quartz2.2.1 简单例子

    转载至http://blog.csdn.net/a4307515/article/details/46985533 1.关键接口 Scheduler,任务调度的API:它可以用来启动或者终止任务等. ...

  2. SVN跨服务器自动更新--实现文件分发

    目标:SVN版本库提交,服务器中的工作拷贝能自动update. 实现方法:subversion, curl,php脚本实现,并且入mysql库来进行管理.改hosts文件来进行访问!提交触发钩子脚本时 ...

  3. vijos 小三学算术

    描述 小三的三分球总是很准的,但对于数学问题就完全没有想法了,他希望你来帮他解决下面的这个问题:对于给定的n,从1!.2!.3!.…….n!中至少删去几个数,才可以使剩下的数的乘积为完全平方数? 格式 ...

  4. 只出现一次的数字 [ LeetCode ]

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [ ...

  5. Install Terraform on Windows, Linux and Mac OS

    Step-by-step tutorial of how to download and install Terraform on Windows, Linux and Mac OS. Terrafo ...

  6. 怎样在hibernate的HQL语句中使用mysql 的自定义函数?

    问题:怎样在hibernate中使用mysql的函数? 1.hibernate支持原生态的sql语句查询,使用session.createSQLQuery()创建查询对象: 2.怎样在hql中使用my ...

  7. 深入浅出CSS(二):关于雪碧图、background-position与steps函数的三角恋情

    [测试代码] HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  8. 5 Techniques To Understand Machine Learning Algorithms Without the Background in Mathematics

    5 Techniques To Understand Machine Learning Algorithms Without the Background in Mathematics Where d ...

  9. Anagrams by Stack(深度优先搜索)

    ZOJ Problem Set - 1004 Anagrams by Stack Time Limit: 2 Seconds      Memory Limit: 65536 KB How can a ...

  10. jieba文本分词,去除停用词,添加用户词

    import jieba from collections import Counter from wordcloud import WordCloud import matplotlib.pyplo ...