用shell开发跳板机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用shell开发跳板机相关的知识,希望对你有一定的参考价值。

信号列表:

    在linux中和信号相关的常见命令为kill及trap命令,下来如何利用trap控制跳板机脚本来使用命令:

    命令:kill  -l 和 trap  -l

技术分享图片

企业实战中linux系统的重要信号及说明

HUP(1)         挂起

INT(2)           中断

OUIT(3)        退出

ABRT(6)        中止

ALRM(14)     报警

TERM(15)     终止

TSTP(20)       停止进程的运行,但该信号可能被处理或忽略


17.2使用trap控制信号

trap命令用户指定在接收到信号后采取行动,trap常见的一种用途是在脚本程序被中断时完成清理工作,或者屏蔽用户非法使用某些信号,在使用信号名时需要省略SIC前缀。

#trap '命令;命令'  信号编号

或者

#trap   '命令'  信号名

测试:

此处的信号名为2(INT),在使用crtl+c时就是出现echo后面的结果

技术分享图片

命令处如果使用 ' ' 表示屏蔽ctrl+c功能,':' 表示开启功能

技术分享图片

范例17:同时处理多个信号    这里所有的屏蔽0-60的所有数字信号,没看懂这里

技术分享图片

下来时trap生产应用案例

大体意思时在脚本中放入trap命令。执行循环,然后按ctrl+c执行find那条删除命令

#!/bin/bash
#author:huipenggang
#mail:[email protected]


trap "find /tmp/xpg  -type f -name "hui_*" | xargs rm -f && exit" 2
while true
do
  touch /tmp/xpg/hui_"`date +%F-%T`"
  sleep 4
  ls -l /tmp/xpg
done
#ls /tmp/xpg

执行结果:

技术分享图片

开发跳板机脚本:

前提是要在两台上面做免密认证:

#!/bin/bash
aa() {
cat << EOF
1. root 192.168.116.135
2. root 192.168.116.136
*. exit
EOF
}
fu() {
for ((i=1;i<4;i++))
do
  echo -n "."
  sleep 1
done
#echo -ne "\n"------mashang------" "
}
bb() {
  trap " " INT EXIT TSTP
  aa
  echo "---------mashang-----------"
  fu
  read -p "your choices:" num
  case $num in
  1)
    ssh 192.168.116.135
    ;;
  2)
    ssh 192.168.116.136
    ;;
  3)
    echo "this is bad"
esac
}
bb


以上是关于用shell开发跳板机的主要内容,如果未能解决你的问题,请参考以下文章

利用Shell开发跳板机功能脚本案例

Linux下trap+shell三层目录专业规范跳板机脚本

shell脚本实现企业级简易跳板机案例

实现简单跳板机脚本

shell 写登录跳板机

CentOS shell-图形化跳板机