很有用的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 exitsshLogin.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