一、系统指标巡检脚本

#!/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脚本一(系统指标巡检、自动创建用户、跳板机)的更多相关文章

  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. 【pytest系列】- assert断言的使用

    unittest断言方式是用过框架自己实现的,即self.assertEqual()等,当我们使用pytest框架后,这种断言方式是不可用的,因为测试类不会再继承unittest.TestCase类, ...

  2. SQL Server如何将查询的内容保存到新的sql 表中

    我是采用语句将 查询后的数据保存到一个新表中 1)采用into table 语句,需要保存到的这个新表不需要提前创建 select *into NewTable from Table --插入新表的语 ...

  3. 【NCRE】三级网络技术 选择题易错点记录(1)

    部分易错点 连接到一个集线器的多个节点不能同时发送数据帧 嵌入式安装插座用来连接双绞线 异步串行端口 PPP 同步串行端口 PPP/HPLC 对于频繁改变位置并使用DHCP获取IP地址的DNS客户端, ...

  4. Tony老师带你来看Java设计模式:代理模式

    目录 定义 作用 意图 主要解决问题 优缺点 与装饰者模式的区别 结构 从Tony老师来看实现方式 静态代理 动态代理 JDK动态代理的实现 cglib动态代理的实现 定义 为其他对象提供一种代理来控 ...

  5. C++ new和delete运算符得简单使用

    NEW C++ 中的new运算符用来分配内存,和c语言中得malloc有相似得功能. 使用new为当个元素开辟内存空间,并返回地址 typeName *pointer_name =new typeNa ...

  6. Unix ls UVA - 400

      The computer company you work for is introducing a brand new computer line and is developing a new ...

  7. JAVAEE_Servlet_09_Adapter适配器GenericServlet

    适配器 GenericServlet * 适配器 (Adapter) - 适配器的作用? 1.我们目前所有的Servlet类都直接实现了javax.servlet.Servlet接口,但是该接口中有些 ...

  8. 按照自己的思路去研究Spring AOP源码【1】

    目录 一个例子 Spring AOP 原理 从@EnableAspectJAutoProxy注解入手 什么时候会创建代理对象? 方法执行时怎么实现拦截的? 总结 问题 参考 一个例子 // 定义一个切 ...

  9. Jsoup-基于Java实现网络爬虫-爬取笔趣阁小说

    注意!仅供学习交流使用,请勿用在歪门邪道的地方!技术只是工具!关键在于用途! 今天接触了一款有意思的框架,作用是网络爬虫,他可以像操作JS一样对网页内容进行提取 初体验Jsoup <!-- Ma ...

  10. Linux内核软中断

    1 软中断概述 软中断是实现中断下半部的一种手段,与2.5以前版本的下半段机制不同.软中断可以同时运行在不同的CPU上. 1.1 软中断的表示 内核中用结构体softirq_action表示一个软中断 ...