一、系统指标巡检脚本

#!/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. 算法很美,听我讲完这些Java经典算法包你爱上她

    大家好,我是小羽. 对于编程来说的话,只有掌握了算法才是了解了编程的灵魂,算法对于新手来说的话,属实有点难度,但是以后想有更好的发展,得到更好的进阶的话,对算法进行系统的学习是重中之重的. 对于 Ja ...

  2. 报错:Method definition shorthands are not supported by current JavaScript version

    当你在html中使用调用js中的方法时,会出现这行报错: method definition shorthands are not supported by current JavaScript ve ...

  3. linux系统调用号查询(pwn)

    做pwn题时遇到程序使用了64位系统调用号:59和15,这里做一下记录 在线查询链接:https://syscalls.w3challs.com/ 分为32位和64位,链接中还有arm.mips等架构 ...

  4. 【笔记】《Redis设计与实现》chapter22 二进制位数组 chapter23 慢查询日志 chapter24 监视器

    chapter22 二进制位数组 22.4 BITCOUNT命令的实现 遍历算法 查表算法 variable-precision SWAP算法 chapter23 慢查询日志 Redis的慢查询日志功 ...

  5. 网络编程Netty入门:ByteBuf分析

    目录 Netty中的ByteBuf优势 NIO使用的ByteBuffer有哪些缺点 ByteBuf的优势和做了哪些增强 ByteBuf操作示例 ByteBuf操作 简单的Demo示例 堆内和堆外内存 ...

  6. Day06_30_抽象类(Abstract)

    抽象类 Abstract 什么是抽象类? 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就 ...

  7. 修正js跳转

    var urls = new Array();urls["pc"] = "./hp"; //pcurls["sj"] = "./h ...

  8. 【Navicat】获取表结构的DDL语句以及获取更新表字段的操作的DDL

    1.获取表结构的DDL语句 2.获取修改表结构某一字段的DDL语句  设计表-修改表字段(记住不要保存)-SQL预览

  9. LA3644简单并查集判环

    题意:       有n个化合物,每个化合物是两种元素组成,现在要装车,但是一旦车上的化合物中的某几个化合物组成这样一组关系,有n个化合物正好用了n中元素,那么就会爆炸,输入的顺序是装车的顺序,对于每 ...

  10. Intel汇编程序设计-高级过程(上)

    第八章 高级过程 8.1 简介 本章主要讲: 堆栈框架 变量作用域和生存期 对战参数的类型 通过传递值或者传递引用来传递参数 在堆栈上创建和初始化局部变量 递归 编写多模块程序 内存模型和语言关键字 ...