免密码登陆SSH(基于expect,支持堡垒机)

#!/bin/bash

AUTO SSH - Auto Login SSH Server (expect-based)

@category Main

@package AutoSSH

@author Feei wufeifei@wufeifei.com

@license Copyright (C) 2015 Feei. All Rights Reserved

@link http://github.com/wufeifei/autossh

@install

$ git clone https://github.com/wufeifei/autossh.git

$ sudo cp autossh/autossh /usr/local/bin/

$ 'server name|192.168.1.1|root|password|22|0' > ~/.autosshrc

@usage

$ autossh // List Server

$ autossh 1 // Login Num n Server

AUTO_SSH_CONFIG=cat ~/.autosshrc BORDER_LINE="\033[1;31m############################################################ \033[0m" echo -e $BORDER_LINE echo -e "\033[1;31m# [AUTO SSH] # \033[0m" echo -e "\033[1;31m# # \033[0m" echo -e "\033[1;31m# # \033[0m" i=0;

if [ "$AUTO_SSH_CONFIG" == "" ]; then echo -e "\033[1;31m# Config(~/.autosshrc) Not Found # \033[0m"; echo -e "\033[1;31m# # \033[0m" echo -e "\033[1;31m# # \033[0m" echo -e $BORDER_LINE else for server in $AUTO_SSH_CONFIG; do i=expr $i + 1 SERVER=echo $server | awk -F\| '{ print $1 }' IP=echo $server | awk -F\| '{ print $2 }' NAME=echo $server | awk -F\| '{ print $3 }' LINE="\033[1;31m#"\ [$i]\ $SERVER\ -\ $IP':'$NAME MAX_LINE_LENGTH=expr ${#BORDER_LINE} CURRENT_LINE_LENGTH=expr "${#LINE}" DIS_LINE_LENGTH=expr $MAX_LINE_LENGTH - $CURRENT_LINE_LENGTH - 9 echo -e $LINE"\c" for n in $(seq $DIS_LINE_LENGTH); do echo -e " \c" done echo -e "# \033[0m" done echo -e "\033[1;31m# # \033[0m" echo -e "\033[1;31m# # \033[0m" echo -e $BORDER_LINE

# GET INPUT CHOSEN OR GET PARAM
if [ "$1" != "" ]; then
    no=$1
else
    no=0
    until [ $no -gt 0 -a $no -le $i ] 2>/dev/null
    do
        echo -e 'Server Number:\c'
        read no
    done
fi

fi

i=0 for server in $AUTO_SSH_CONFIG; do i=expr $i + 1 if [ $i -eq $no ] ; then IP=echo $server | awk -F\| '{ print $2 }' NAME=echo $server | awk -F\| '{ print $3 }' PASS=echo $server | awk -F\| '{ print $4 }' PORT=echo $server | awk -F\| '{ print $5 }' ISBASTION=echo $server | awk -F\| '{ print $6 }' FILE='/tmp/.login.sh' if [ "$PORT" == "" ]; then PORT=10022 fi echo '#!/usr/bin/expect -f' > $FILE echo 'set timeout 30' >> $FILE echo "spawn ssh -o "StrictHostKeyChecking no" -p$PORT -l "$NAME $IP >> $FILE if [ "$PASS" != "" ]; then echo 'expect "password:"' >> $FILE echo 'send '$PASS"\r" >> $FILE if [ "$ISBASTION" == 1 ] && [ "$2" != "" ]; then echo 'expect "IP>:"' >> $FILE echo 'send '$2"\r" >> $FILE echo 'expect "password:"' >> $FILE echo 'send '$PASS"\r" >> $FILE if [ "$3" == 'sudo' ]; then echo 'expect "@"' >> $FILE echo 'send "sudo su\r"' >> $FILE echo 'expect "password for"' >> $FILE echo 'send '$PASS"\r" >> $FILE fi fi fi echo 'interact' >> $FILE chmod a+x $FILE $FILE echo '' > $FILE break; fi done

autossh Auto Login SSH Server (expect-based)

Install $ git clone https://github.com/wufeifei/autossh.git $ sudo cp autossh/autossh /usr/local/bin/ Config $ cat ~/.autosshrc sername|192.168.1.110|root|password|port|is_bastion wufeifei|wufeifei.com|root|password|22|1 Usage $ autossh ############################################################

[AUTO SSH]

[1] 192.168.1.110:feei

[2] 10.11.2.103:root

[3] 103.21.140.84:root

############################################################ Server Number:(Input Server Num) OR

$ autossh 1 OR Bastion Host

$ autossh 1 10.12.0.123 Auto SUDO

$ autossh 1 10.11.0.123 sudo

转载于:https://my.oschina.net/jsycwangwei/blog/3008162

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值