运维常用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 ...
随机推荐
- 《RT-Thread Studio开发STM32》第一章~第一节《配置STM32H743XIH6点亮LED灯》
安装RT-Thread Studio后添加相关芯片库文件,打开软件 打开SDK管理界面,安装相关的库文件,本次采用STM32H743XIH6芯片,野火开发板. 新建工程并设置相关的参数 先编译下下载到 ...
- 案例 | 荔枝微课基于 kubernetes 搭建分布式压测系统
王诚强,荔枝微课基础架构负责人.热衷于基础技术研发推广,致力于提供稳定高效的基础架构,推进了荔枝微课集群化从0到1的发展,云原生架构持续演进的实践者. 本文根据2021年4月10日深圳站举办的[腾讯云 ...
- Semaphore自白:限流器用我就对了!
大家好,我是 Semaphore,我的中文名字叫"信号量",我来自 JUC(java.util.concurrent)家族. 我们家族有很多优秀的成员,比如:CountDownLa ...
- NDEBUG与assert
当宏NDEBUG定义在assert的头文件之前,会使assert.trace这类调试函数失效, 需要注意的是#define NDEBUG必须放在这些函数的头文件之前,放在它们的 头文件后面的话就相当于 ...
- ForkJoinPool的工作原理和使用
场景:当任务很多,成千上万个,或者单个任务很大,执行起来很耗时间,这时,就可以把任务进行拆分,拆分成多个小任务去执行,然后小任务执行完毕后再把每个小任务执行的结果合并起来,这样就可以节省时间. For ...
- Civil3d中 如何用管轴线的变坡点桩号控制其他纵断面数据的显示?
如何用管轴线的变坡点桩号控制其他纵断面数据的显示?如下图所示: 主要进行两步操作,下面以地面高程为例. 第1步: 右键纵断面图,打开纵断面图特性对话框,选择"标注栏"选项卡,分别设 ...
- Salesforce学习之路(三)利用VS Code结合Git开发Salesforce
在前面说了一些有关Admin的知识,但实际开发运用中,仅凭Admin的配置很难满足项目的定制化需求,因此基于CRM的二次开发则应运而生. 由于国内资料相对较少,所以很多入门新手无处下手,那这里就简单介 ...
- Ubuntu 20.04 简述环境配置&美化
不敢说是最好的,基本上是最全面的了~ 修改系统软件源 一开始是国外的源比较慢,建议换成国内的源,常用的有清华源.阿里源等. 清华源地址 Ubuntu 的软件源配置文件是 /etc/apt/source ...
- PostMessage xss学习和挖掘
PostMessage xss很有趣,在国外出现了很多次,国内src/众测从没遇到过,挖到过.可能境界还不够,有机会再去试试.好几年前记得心血来潮学过一次,都是半知半解,后来因为重要性不高,不了了之了 ...
- G - G ZOJ - 2723 (素数打表+set)
Prime Number Definition An integer greater than one is called a prime number if its only positive di ...