运维常用shell脚本一(系统指标巡检、自动创建用户、跳板机)
一、系统指标巡检脚本
- #!/bin/bash
- menu(){
- cat <<EOF
- +---------------------------------------------+
- | 日常巡检脚本 |
- | 1.查看磁盘使用率 |
- | 2.查看内存使用率 |
- | 3.查看系统负载 |
- | 4.统计系统连接数 |
- | 5.统计系统进程数 |
- | 6.统计当前磁盘分区信息 |
- | 7.按q退出 |
- | 8.按h帮助 |
- +---------------------------------------------+
- EOF
- }
- menu
- while true
- do
- echo -en "\033[34m请输入你要查看的内容:\033[0m"
- read action
- if [ "$action" == "q" ];then
- echo "quiting...."
- break
- fi
- if [ "$action" == "h" ];then
- menu
- fi
- case $action in
- 1)
- df -h ;;
- 2)
- free -h ;;
- 3)
- uptime ;;
- 4)
- ss -tan | grep -i "estab" | wc -l ;;
- 5)
- ps aux | grep -v "grep" | wc -l ;;
- 6)
- fdisk -l ;;
- *)
- echo "Usage: $0 {1|2|3|4|5|6|q|h}"
- esac
- done
二、自动创建用户脚本
- #!/bin/bash
- user (){
- printf "
- +----------------------------------------------------------------------------+
- | 自动创建用户小程序 |
- | 1.请在如下的提示中输入用户名前缀,用户密码,用户数量。例如:ren 123 5 |
- | 2.按q退出 |
- | 3.按h提供帮助信息 |
- | 制作者:wolf_coder |
- +----------------------------------------------------------------------------+
- "
- }
- clear
- user
- while true
- do
- echo -en "\033[34m请输入用户前缀、密码及数量: \033[0m"
- read name pass num
- if [ "$name" == "q" ];then
- break
- user
- elif [ "$name" == "h" ];then
- user
- continue
- elif [ -z "$name" -o -z "$pass" -o -z "$num" ];then
- echo -en "\033[35m请输入q退出,h帮助,或输入正确格式!\033[0m\n"
- continue
- else
- echo -en "\033[35m请输入q退出,h帮助,或输入正确格式!\033[0m\n"
- continue
- fi
- for i in `seq -w $num`
- do
- useradd $name$i &>/dev/null
- if [ $? -eq 0 ];then
- echo "$name$i is created."
- else
- echo "useradd: user $name$i already exists"
- fi
- echo $pass | passwd --stdin $name$i &>/dev/null
- done
- done
三、搭建跳板机脚本
- #!/bin/bash
- trap "" HUP INT QUIT
- web1=192.168.64.6
- web2=192.168.64.7
- mysql=192.168.64.10
- menu () {
- printf "
- +------------------------------------------------------------+
- | `echo -en "\033[33m请输入你要登录管理的主机\033[0m"` |
- | 1.web1 |
- | 2.web2 |
- | 3.mysql
- | 4.管理员入口 |
- | `echo -en "\033[36m1904班研发跳板机应用程序\033[0m"` |
- +------------------------------------------------------------+
- "
- }
- while true
- do
- clear
- menu
- echo -en "\033[31m请输入你要登录主机编号:\033[0m"
- read num
- case $num in
- 1)
- ssh $web1;;
- 2)
- ssh $web2;;
- 3)
- ssh $mysql;;
- 4)
- read -s -p "请输入操作密码:" pass
- pre_pass=`cat /root/.pass`
- if [ $pass -eq $pre_pass ];then
- break
- fi
- ;;
- *)
- echo "请输入正确编号!"
- esac
- 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 可以列出系统的信号名称
- [root@s2 ~]# kill -l
- 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
- 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
- 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
- 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
- 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
- 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
- 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
- 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
- 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
- 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
- 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
- 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
- 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可以列出中断信号与键盘的对应:
- [root@controller ~]# stty -a
- speed 38400 baud; rows 27; columns 74; line = 0;
- intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
- eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;
- rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
- -parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
- -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon
- -ixoff -iuclc -ixany -imaxbel -iutf8
- opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
- ff0
- isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
- echoctl echoke
tail -f /etc/passwd, 然后尝试用键盘中断,试试两种情况(默认和忽略)
信号说明:
- 信 号 说 明
- HUP(1) 挂起,通常因终端掉线或用 户退出而引发
- INT(2) 中断,通常因按下 Ctrl+C组合键而引发
QUIT(3) 退出,通常因按下 Ctrl+\组合键而引发- ABRT(6) 中止,通常因某些严重的执 行错误而引发
- ALRM(14) 报警,通常用来处理超时
- TERM(15) 终止,通常在系统关机时发 送
运维常用shell脚本一(系统指标巡检、自动创建用户、跳板机)的更多相关文章
- 运维常用shell脚本之日志清理
1.创建一个日志清理脚本 #/bin/bash for i in `find /root/.pm2/logs -name "*.log"` do cat /dev/null > ...
- 运维常用shell脚本二(压缩文件、过滤不需要的文件、检测进程)
一.压缩指定目录下的文件并删除原文件 #!/bin/bashZIP_DAY=7 function zip { local dir=$1 if [ -d $dir ];then local file_n ...
- CentOS 下运维自动化 Shell 脚本之 expect
CentOS 下运维自动化 Shell脚本之expect 一.预备知识: 1.在 Terminal 中反斜杠,即 "" 代表转义符,或称逃脱符.("echo -e与pri ...
- linux运维自动化shell脚本小工具
linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...
- 转 如何不耍流氓的做运维之——SHELL脚本
家都是文明人,尤其是做运维的,那叫一个斯文啊.怎么能耍流氓呢?赶紧看看,编写 SHELL 脚本如何能够不耍流氓. 下面的案例,我们以 MySQL 数据库备份 SHELL 脚本的案例来进行阐述. 不记录 ...
- Linux运维之shell脚本进阶篇
一.if语句的使用 1)语法规则 if [条件] then 指令 fi 或 if [条件];then 指令 fi 提示:分号相当于命令换行,上面两种语法等同特殊写法:if[ -f"$file ...
- Linux运维之shell脚本
一.bash漏洞 1)bash漏洞 bash漏洞是控制Linux计算机命令提示符的软件中存在的漏洞. bash是一个为GNU计划编写的Unix shell.它的名字是一系列缩写:Bourne-Agai ...
- 如何不耍流氓的做运维之-SHELL脚本
前言 大家都是文明人,尤其是做运维的,那叫一个斯文啊.怎么能耍流氓呢?赶紧看看,编写SHELL脚本如何能够不耍流氓. 下面的案例,我们以MySQL数据库备份SHELL脚本的案例来进行阐述: 不记录日志 ...
- Linux运维之shell脚本基础知识
1.bash中的算术运算 let运算符 [root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#echo $i [root@:vg_adn_tidbCkhs ...
随机推荐
- Java 在Excel中添加水印(单一水印、平铺水印)
在Excel中没有直接添加水印的功能,但依旧可以通过一定方式来实现类似水印效果.本文通过Java程序代码介绍具体实现方法.可添加单一水印效果,即水印是以单个文本字样来呈现:也可添加多个平铺水印效果,即 ...
- 诸葛亮的锦囊妙计竟然是大名鼎鼎的Java设计模式:策略模式
目录 应用场景 简单实现例子 改进代码 策略模式 定义 意图 主要解决问题 何时使用 优缺点 诸葛亮的锦囊妙计 应用场景 京东.天猫双十一,情人节商品大促销,各种商品有不同的促销活动 满减:满200减 ...
- JAVAEE_Servlet_23_路径编写总结和url_pattern的编写方式
路径编写总结和url_pattern的编写方式 路径的编写 超链接 form表单的action属性 重定向 response.sendRedirect("/项目名/资源路径"): ...
- 1.4.19- HTML标签之注释标签
有的时候我们输入的代码,让你别人看,别人不知道你的思路,可能就看不懂,或者或一段时间自己就看不懂了,这个时候我们需要对代码进行注释,解释我们的代码什么意思: <!DOCTYPE html> ...
- phpstorm2017 激活方法
1.license server 在线激活方式 不是很推荐,自己有服务器的话可以考虑搭建 以下地址可以用一下,不保证长期有效 http://idea.goxz.gq http://v2mc.net:1 ...
- 关于Spring Data JPA 多表查询 返回自定义Vo的问题记录
这两天开了一个新项目,使用SpringBoot+SpringData, 刚做了一个小功能,都是一张表的操作没什么问题,今天设计到了两张表联查,两张表各取了几个字段,组合成了一个vo, 当我用原生sq ...
- 播放视频插件swfobject.js与Video Html5
播放视频的方法: 方法一. 使用HTML5播放 <video src="./files/Clip_480_5sec_6mbps_h264.mp4" width="1 ...
- hdu4771 水搜索(状态压缩+bfs)
题意: 给你一个n*m的地图,问你从起点出发,吧所有的宝藏都捡完用的最少时间. 思路:k <= 4,水题,直接开一个数组mark[now][x][y];now代表的是当前检宝藏的二进制 ...
- 从苏宁电器到卡巴斯基第25篇:难忘的三年硕士时光 III
阴差阳错,走上了讲师的道路 时间已经来到了2015年的1月,我的找工作之路也是屡败屡战,屡战屡败.金山.百度以及腾讯不约而同地不要我,使得我对于自己的未来充满了迷茫.尽管才研二而已,可是对于我这种没有 ...
- 路由器逆向分析------Running Debian MIPS Linux in QEMU
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/70176583 下面的文章内容主要参考英文博客<Running Debian ...