系统相关
首页 > 系统相关> > 很有用的shell脚本

很有用的shell脚本

作者:互联网

批量登录远程Linux服务器

包括4个文件:batch.sh(批量管理expect登录脚本)color.sh(颜色脚本)、sshLogin.exp(expect登录脚本)、iplist(用于登录的IP、用户名和用户密码)

batch.sh(批量管理expect登录脚本)

#!/usr/bin/bash

source ./color.sh

callSSH() {
    # $$:pid $1:filename $2:username $3:ip $4:password
    echo -e "$GREEN Param init(pid: $$): $1 $2 $3 $4 $CLOSE_ALL"
    expect $1 $2 $3 $4
    return $?
}

sshManage() {
    i=1
    for ip in `awk 'NR>2 {print $1}' iplist`
    do
        user=$(awk -v IP=$ip '{if(IP==$1) print $2}' iplist)
        password=`awk -v IP=$ip '{if(IP==$1) print $3}' iplist`

        if [ $i -le 9 ]
        then
            i="0$i"
        else
            i="$i"
        fi

        echo -e "$BLUE<<--------------    Login $ip($i) begin   -------------->>$CLOSE_ALL"
        callSSH sshLogin.exp $user $ip $password
        echo -e "${BLUE}return_value = $? $CLOSE_ALL"
        echo -e "$BLUE<<--------------    Login $ip($i) end-------------->>$CLOSE_ALL"
        let "i++"
    done
}

echo -e "$RED<<<<<<<<<<<<<<<<<<<<<< sshManage begin >>>>>>>>>>>>>>>>>>>>>>$CLOSE_ALL"
sshManage
echo -e "$RED<<<<<<<<<<<<<<<<<<<<<<  sshManage end  >>>>>>>>>>>>>>>>>>>>>>$CLOSE_ALL"
batch.sh

color.sh(颜色脚本)

#!/usr/bin/bash

# Example:
#       echo -e "\033[字背景颜色;文字颜色m          字符串          \033[0m"
#       echo -e "\033[41;36m                   something here       \033[0m"
#       echo -e "$RED                   something here       $CLOSE_ALL"

# font color: 30-37
BLACK="\033[30m"                            # 黑色
RED="\033[31m"                              # 红色
GREEN="\033[32m"                            # 绿色
YELLOW="\033[33m"                           # 黄色
BLUE="\033[34m"                             # 蓝色
PURPLE="\033[35m"                           # 紫色
SKY_BLUE="\033[36m"                         # 天蓝色
WHITE="\033[37m"                            # 白色

# blackground color: 40-47
BLACK_WHITE="\033[40;37m"                   # 黑底白字
RED_WHITE="\033[41;37m"                     # 红底白字
GREEN_WHITE="\033[42;37m"                   # 绿底白字
YELLOW_WHITE="\033[43;37m"                  # 黄底白字
BLUE_WHITE="\033[44;37m"                    # 蓝底白字
PURPLE_WHITE="\033[45;37m"                  # 紫底白字
SKY_BLUE_WHITE="\033[46;37m"                # 天蓝底白字
WHITE_BLACK="\033[47;30m"                   # 白底黑字

# Control options
CLOSE_ALL="\033[0m"                          # 关闭所有属性
HIGH_BRIGHTNESS="\33[1m"                   # 设置高亮度
UNDERLINE="\33[4m"                         # 下划线
FLICKER="\33[5m"                           # 闪烁
REVERSE_DISPLAY="\33[7m"                   # 反显
SET_FOREGROUND="\33[30m — \33[37m"          # 设置前景色
SET_BACKGROUND="\33[40m — \33[47m"          # 设置背景色
SET_CURSOR_POS="\33[y;xH"                   # 设置光标位置
N_CURSOR_UP="\33[nA"                       # 光标上移n行
N_CURSOR_DOWN="\33[nB"                     # 光标下移n行
N_CURSOR_RIGHT="\33[nC"                    # 光标右移n行
N_CURSOR_LEFT="\33[nD"                     # 光标左移n行
CURSOR_POS_SAVE="\33[s"                    # 保存光标位置
CURSOR_POS_RECOVER="\33[u"                 # 恢复光标位置
CURSOR_HIDE="\33[?25l"                     # 隐藏光标
CURSOR_DISPLAY="\33[?25h"                  # 显示光标
CLEAR_SCREEN="\33[2J"                      # 清屏
CLEAR_CONTENT="\33[K"                      # 清除从光标到行尾的内容
color.sh

sshLogin.exp(expect登录脚本)

#!/usr/bin/expect

if { $argc != 3 } {
    send -- "Usage: expect sshLogin.exp username ip password\n"
    exit 1
}

#Param
set userName [lindex $argv 0]
set IP [lindex $argv 1]
set password [lindex $argv 2]
set timeout 30

spawn ssh -P22 $userName@$IP
expect {
    eof { exit 0 }
    timeout { exit 1 }
    "*password*" { send -- "$password\n" }
    "*(yes/no)?*" { send -- "yes\n";exp_continue }
}

expect {
    eof { exit 0 }
    timeout { exit 1 }
    "*#*" { send -- "find /etc -names \"*.txt\"  >list 2>&1\n" }
}

expect {
    eof { exit 0 }
    timeout { exit 1 }
    "*#*" { send -- "cat list\n" }
}

set timeout 5
expect {
    eof { exit 0 }
    timeout { exit 1 }
    "*#*" { send -- "\n" }
}

expect {
    eof { exit 0 }
    timeout { exit 1 }
    "*#*" { send -- "exit\n" }
}
expect eof
exit
sshLogin.sh

iplist(用于登录的IP、用户名和用户密码)

#ip username password

10.10.3.128 root ******
10.10.1.21  root ******
iplist

结果截图

 

标签:脚本,shell,37m,33,有用,exit,expect,033,光标
来源: https://www.cnblogs.com/yusq77/p/10913427.html