一、系统指标巡检脚本

  1. #!/bin/bash
  2. menu(){
  3. cat <<EOF
  4. +---------------------------------------------+
  5. | 日常巡检脚本 |
  6. | 1.查看磁盘使用率 |
  7. | 2.查看内存使用率 |
  8. | 3.查看系统负载 |
  9. | 4.统计系统连接数 |
  10. | 5.统计系统进程数 |
  11. | 6.统计当前磁盘分区信息 |
  12. | 7.q退出 |
  13. | 8.h帮助 |
  14. +---------------------------------------------+
  15. EOF
  16. }
  17. menu
  18. while true
  19. do
  20. echo -en "\033[34m请输入你要查看的内容:\033[0m"
  21. read action
  22. if [ "$action" == "q" ];then
  23. echo "quiting...."
  24. break
  25. fi
  26. if [ "$action" == "h" ];then
  27. menu
  28. fi
  29. case $action in
  30. 1)
  31. df -h ;;
  32. 2)
  33. free -h ;;
  34. 3)
  35. uptime ;;
  36. 4)
  37. ss -tan | grep -i "estab" | wc -l ;;
  38. 5)
  39. ps aux | grep -v "grep" | wc -l ;;
  40. 6)
  41. fdisk -l ;;
  42. *)
  43. echo "Usage: $0 {1|2|3|4|5|6|q|h}"
  44. esac
  45. done

二、自动创建用户脚本

  1. #!/bin/bash
  2. user (){
  3. printf "
  4. +----------------------------------------------------------------------------+
  5. | 自动创建用户小程序 |
  6. | 1.请在如下的提示中输入用户名前缀,用户密码,用户数量。例如:ren 123 5 |
  7. | 2.按q退出 |
  8. | 3.按h提供帮助信息 |
  9. | 制作者:wolf_coder |
  10. +----------------------------------------------------------------------------+
  11. "
  12. }
  13. clear
  14. user
  15. while true
  16. do
  17. echo -en "\033[34m请输入用户前缀、密码及数量: \033[0m"
  18. read name pass num
  19. if [ "$name" == "q" ];then
  20. break
  21. user
  22. elif [ "$name" == "h" ];then
  23. user
  24. continue
  25. elif [ -z "$name" -o -z "$pass" -o -z "$num" ];then
  26. echo -en "\033[35m请输入q退出,h帮助,或输入正确格式!\033[0m\n"
  27. continue
  28. else
  29. echo -en "\033[35m请输入q退出,h帮助,或输入正确格式!\033[0m\n"
  30. continue
  31. fi
  32. for i in `seq -w $num`
  33. do
  34. useradd $name$i &>/dev/null
  35. if [ $? -eq 0 ];then
  36. echo "$name$i is created."
  37. else
  38. echo "useradd: user $name$i already exists"
  39. fi
  40. echo $pass | passwd --stdin $name$i &>/dev/null
  41. done
  42. done

三、搭建跳板机脚本

  1. #!/bin/bash
  2. trap "" HUP INT QUIT
  3. web1=192.168.64.6
  4. web2=192.168.64.7
  5. mysql=192.168.64.10
  6. menu () {
  7. printf "
  8. +------------------------------------------------------------+
  9. | `echo -en "\033[33m请输入你要登录管理的主机\033[0m"` |
  10. | 1.web1 |
  11. | 2.web2 |
  12. | 3.mysql
  13. | 4.管理员入口 |
  14. | `echo -en "\033[36m1904班研发跳板机应用程序\033[0m"` |
  15. +------------------------------------------------------------+
  16. "
  17. }
  18. while true
  19. do
  20. clear
  21. menu
  22. echo -en "\033[31m请输入你要登录主机编号:\033[0m"
  23. read num
  24. case $num in
  25. 1)
  26. ssh $web1;;
  27. 2)
  28. ssh $web2;;
  29. 3)
  30. ssh $mysql;;
  31. 4)
  32. read -s -p "请输入操作密码:" pass
  33. pre_pass=`cat /root/.pass`
  34. if [ $pass -eq $pre_pass ];then
  35. break
  36. fi
  37. ;;
  38. *)
  39. echo "请输入正确编号!"
  40. esac
  41. done

trap用法:

  脚本程序是从上到下的顺序解释执行的,所以必须在你想保护的那部分代码以前指定tarp命令。

一、tarp捕捉到信号之后,可以有三种反应方式:

  1)执行一段程序来处理这一信号;

  2)接受信号的默认操作;

  3)忽视这一信号。

二、tarp对上面三种方式提供了三种基本形式:

  tarp命令的参数分为两部分,前一部分时接收到指定信号时将要采取的行动,后一部分是要处理的信号名。tarpcommand signal

  1)第一种形式的tarp命令在shell接收到signal list清单中数值相同的信号时,将执行双引号中的命令串。

    trap 'commands' signal-list

    tarp "commands" signal-list

  2)tarp不指定任何命令,接受信号的默认操作,默认操作是结束进程的运行。

    tarp signal-list

  3)trap命令指定一个空命令串,允许忽视信号,我们用到的就是这一种。

    trap " " signal-list

三、kill -l 可以列出系统的信号名称

  1. [root@s2 ~]# kill -l
  2. 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
  3. 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
  4. 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
  5. 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
  6. 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
  7. 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
  8. 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
  9. 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
  10. 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
  11. 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
  12. 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
  13. 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
  14. 63) SIGRTMAX-1 64) SIGRTMAX

  通常我们需要忽略的信号有四个,即:HUP, INT, QUIT, TSTP,也就是信号1, 2, 3, 24

  使用这样的语句可以使这些中断信号被忽略:

  trap "" 1 2 3 24 或 trap "" HUP INT QUIT TSTP

  用 trap 1 2 3 24 或 trap HUP INT QUIT TSTP使其回复默认值。

  用stty -a可以列出中断信号与键盘的对应:

  1. [root@controller ~]# stty -a
  2. speed 38400 baud; rows 27; columns 74; line = 0;
  3. intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
  4. eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;
  5. rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
  6. -parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
  7. -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon
  8. -ixoff -iuclc -ixany -imaxbel -iutf8
  9. opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
  10. ff0
  11. isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
  12. echoctl echoke

  tail -f /etc/passwd, 然后尝试用键盘中断,试试两种情况(默认和忽略)

信号说明:

  1. 号      说
  2. HUP(1)       挂起,通常因终端掉线或用 户退出而引发
  3. INT(2)       中断,通常因按下 Ctrl+C组合键而引发
    QUIT(3)       退出,通常因按下 Ctrl+\组合键而引发
  4. ABRT(6)       中止,通常因某些严重的执 行错误而引发
  5. ALRM(14)      报警,通常用来处理超时
  6. TERM(15)      终止,通常在系统关机时发

运维常用shell脚本一(系统指标巡检、自动创建用户、跳板机)的更多相关文章

  1. 运维常用shell脚本之日志清理

    1.创建一个日志清理脚本 #/bin/bash for i in `find /root/.pm2/logs -name "*.log"` do cat /dev/null > ...

  2. 运维常用shell脚本二(压缩文件、过滤不需要的文件、检测进程)

    一.压缩指定目录下的文件并删除原文件 #!/bin/bashZIP_DAY=7 function zip { local dir=$1 if [ -d $dir ];then local file_n ...

  3. CentOS 下运维自动化 Shell 脚本之 expect

    CentOS 下运维自动化 Shell脚本之expect 一.预备知识: 1.在 Terminal 中反斜杠,即 "" 代表转义符,或称逃脱符.("echo -e与pri ...

  4. linux运维自动化shell脚本小工具

    linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...

  5. 转 如何不耍流氓的做运维之——SHELL脚本

    家都是文明人,尤其是做运维的,那叫一个斯文啊.怎么能耍流氓呢?赶紧看看,编写 SHELL 脚本如何能够不耍流氓. 下面的案例,我们以 MySQL 数据库备份 SHELL 脚本的案例来进行阐述. 不记录 ...

  6. Linux运维之shell脚本进阶篇

    一.if语句的使用 1)语法规则 if [条件] then 指令 fi 或 if [条件];then 指令 fi 提示:分号相当于命令换行,上面两种语法等同特殊写法:if[ -f"$file ...

  7. Linux运维之shell脚本

    一.bash漏洞 1)bash漏洞 bash漏洞是控制Linux计算机命令提示符的软件中存在的漏洞. bash是一个为GNU计划编写的Unix shell.它的名字是一系列缩写:Bourne-Agai ...

  8. 如何不耍流氓的做运维之-SHELL脚本

    前言 大家都是文明人,尤其是做运维的,那叫一个斯文啊.怎么能耍流氓呢?赶紧看看,编写SHELL脚本如何能够不耍流氓. 下面的案例,我们以MySQL数据库备份SHELL脚本的案例来进行阐述: 不记录日志 ...

  9. Linux运维之shell脚本基础知识

    1.bash中的算术运算 let运算符 [root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#echo $i [root@:vg_adn_tidbCkhs ...

随机推荐

  1. Java 在Excel中添加水印(单一水印、平铺水印)

    在Excel中没有直接添加水印的功能,但依旧可以通过一定方式来实现类似水印效果.本文通过Java程序代码介绍具体实现方法.可添加单一水印效果,即水印是以单个文本字样来呈现:也可添加多个平铺水印效果,即 ...

  2. 诸葛亮的锦囊妙计竟然是大名鼎鼎的Java设计模式:策略模式

    目录 应用场景 简单实现例子 改进代码 策略模式 定义 意图 主要解决问题 何时使用 优缺点 诸葛亮的锦囊妙计 应用场景 京东.天猫双十一,情人节商品大促销,各种商品有不同的促销活动 满减:满200减 ...

  3. JAVAEE_Servlet_23_路径编写总结和url_pattern的编写方式

    路径编写总结和url_pattern的编写方式 路径的编写 超链接 form表单的action属性 重定向 response.sendRedirect("/项目名/资源路径"): ...

  4. 1.4.19- HTML标签之注释标签

    有的时候我们输入的代码,让你别人看,别人不知道你的思路,可能就看不懂,或者或一段时间自己就看不懂了,这个时候我们需要对代码进行注释,解释我们的代码什么意思: <!DOCTYPE html> ...

  5. phpstorm2017 激活方法

    1.license server 在线激活方式 不是很推荐,自己有服务器的话可以考虑搭建 以下地址可以用一下,不保证长期有效 http://idea.goxz.gq http://v2mc.net:1 ...

  6. 关于Spring Data JPA 多表查询 返回自定义Vo的问题记录

    这两天开了一个新项目,使用SpringBoot+SpringData,  刚做了一个小功能,都是一张表的操作没什么问题,今天设计到了两张表联查,两张表各取了几个字段,组合成了一个vo, 当我用原生sq ...

  7. 播放视频插件swfobject.js与Video Html5

    播放视频的方法: 方法一. 使用HTML5播放 <video src="./files/Clip_480_5sec_6mbps_h264.mp4" width="1 ...

  8. hdu4771 水搜索(状态压缩+bfs)

    题意:      给你一个n*m的地图,问你从起点出发,吧所有的宝藏都捡完用的最少时间. 思路:k <= 4,水题,直接开一个数组mark[now][x][y];now代表的是当前检宝藏的二进制 ...

  9. 从苏宁电器到卡巴斯基第25篇:难忘的三年硕士时光 III

    阴差阳错,走上了讲师的道路 时间已经来到了2015年的1月,我的找工作之路也是屡败屡战,屡战屡败.金山.百度以及腾讯不约而同地不要我,使得我对于自己的未来充满了迷茫.尽管才研二而已,可是对于我这种没有 ...

  10. 路由器逆向分析------Running Debian MIPS Linux in QEMU

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/70176583 下面的文章内容主要参考英文博客<Running Debian ...