#!/bin/bash # # # #E'mail:yibin.shen@infowarelab.com # #global variable DATA="/home/debian/shell/login/ssh_host.dat" SSHSCRIPT="/home/debian/shell/login/ssh_login.sh" if [ ! -f "$DATA" ] ; then echo "DATA file doesn't exsit" exit 1 fi if [ ! -x "$SSHSCRIPT" ] ; then echo "you need a expect script" exit 1 fi #print menu 1 MainMenu() { clear echo "-------------------------------------" echo "+ 1:hz-idc +" echo "+ 2:gsb +" echo "+ 3:beta +" echo "+ 4:hzxs +" echo "+ 5:jsbc +" echo "-------------------------------------" echo -e "\n\n\n" echo "-plz input your choice(1|2|3|4|5|)" echo "enter q to quit this menu" read IDC_NUM } #print menu 2 DisplayHosts() { awk ' BEGIN{FS = "\n"; RS = "" }'\ "\$1 ~ /$1/ {print \$0}" ${DATA} | \ awk '{print $1 "\t" $2}' MAX=$(awk '\ BEGIN{FS = "\n"; RS = "" }'\ "\$1 ~ /$1/ {print \$0}" ${DATA} | \ awk '{print $1 "\t" $2}' | tail -1 | awk '{print $1}') echo -e "plz enter your choice \n" echo -e "enter b to go to previous menu\n" echo -e "enter q to quit" read CHOICE case ${CHOICE} in [0-9]*) if [ ${CHOICE} -ge 1 ] && [ ${CHOICE} -le ${MAX} ] then LoginInit $1 ${CHOICE} else echo "error choice" DisplayHosts $1 fi ;; b) MainMenu ;; q) exit 1 ;; *) DisplayHosts $1 ;; esac } #login LoginInit() { #get the host ip,user,pwd,and port #$1 is the IDC value RECORD=$(awk ' BEGIN{FS = "\n"; RS = "" }'\ "\$1 ~ /$1/ {print \$0}" ${DATA} | \ awk '$1 ~ '"/^$2/"'{print $0}') USER=`echo $RECORD | awk '{print $4}'` HOST=`echo $RECORD | awk '{print $2}'` PASSWD=`echo $RECORD | awk '{print $5}'` PORT=`echo $RECORD | awk '{print $4}'` ${SSHSCRIPT} ${USER} ${HOST} ${PASSWD} } #display menu MainMenu case ${IDC_NUM} in 1) DisplayHosts hz ;; 2) DisplayHosts gsb ;; 3) DisplayHosts beta ;; 4) DisplayHosts xs ;; 5) DisplayHosts jsbc ;; q) exit 1 ;; *) echo "please input (1|2|3|4|5)" MainMenu ;; esac #script finished |
hz-IDC 1 192.168.0.80 22 root 123456 2 192.168.0.81 22 root 123456 3 192.168.0.72 22 root 123456 4 192.168.0.46 22 root asdfasdf 5 192.168.0.7 22 root asdf gsb 1 10.10.30.9 22 root xxx 2 10.10.30.35 22 root xxx2 3 10.10.30.34 22 root xd 4 10.10.30.36 22 root sss 5 10.10.30.37 22 root sss 6 10.10.30.38 22 root asdf 7 10.10.30.43 22 root asdf |
spawn ssh -l $USER $HOST set timeout 60 while {1} { expect -re "Are you sure you want to continue connecting (yes/no)?" { # First connect, no public key in ~/.ssh/known_hosts send "yes\r" } -re "assword:" { # Already has public key in ~/.ssh/known_hosts send "$PASSWD\r" } -re " ![]() # Password not correct exit } -re "Connection refused" { exit } timeout { exit } "#" { interact } "losed" { exit } } |
原帖由 lovegqin 于 2007-11-16 18:48 發(fā)表
ssh root@192.168.0.$1
把它放到一個腳本里。
比如/usr/local/bin 下 起名 lg
當(dāng)要登陸到191
只需 lg 191
歡迎光臨 Chinaunix (http://www.72891.cn/) | Powered by Discuz! X3.2 |