zoukankan      html  css  js  c++  java
  • 运维常用shell脚本一(系统指标巡检、自动创建用户、跳板机)

    一、系统指标巡检脚本

    #!/bin/bash
    menu(){
    cat <<EOF
    +---------------------------------------------+
    |        日常巡检脚本                  |
    |        1.查看磁盘使用率              |    
    |        2.查看内存使用率              |
    |        3.查看系统负载                |
    |        4.统计系统连接数              |
    |        5.统计系统进程数              |
    |        6.统计当前磁盘分区信息        |
    |        7.按q退出                     |
    |        8.按h帮助                     |
    +---------------------------------------------+
    EOF
    }
    menu
    while true
    do
    echo -en "33[34m请输入你要查看的内容:33[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 "33[34m请输入用户前缀、密码及数量: 33[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 "33[35m请输入q退出,h帮助,或输入正确格式!33[0m
    "
            continue
        else
            echo -en "33[35m请输入q退出,h帮助,或输入正确格式!33[0m
    "
            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 "33[33m请输入你要登录管理的主机33[0m"`                             |
    |        1.web1                                         |
    |        2.web2                         |
    |        3.mysql
    |        4.管理员入口                     |
    |    `echo -en "33[36m1904班研发跳板机应用程序33[0m"`                             |
    +------------------------------------------------------------+
    "
    }
    while true
    do
    clear
    menu
    echo -en "33[31m请输入你要登录主机编号:33[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 24trap 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)      终止,通常在系统关机时发 送
  • 相关阅读:
    Leetcode-Minimum Depth of Binary Tree
    Leetcode-Path Sum II
    Leetcode-Path Sum
    Leetcode-Flatten Binary Tree to Linked List
    Leetcode-Populating Next Right Pointer in Binary Tree II
    Leetcode-Pascal's Triangle II
    Leetcode-Pascal's Triangle
    Leetcode-Triangle
    第10月第20天 afnetwork like MKNetworkEngine http post
    第10月第13天 xcode ipa
  • 原文地址:https://www.cnblogs.com/renyz/p/11853594.html
Copyright © 2011-2022 走看看