Bash下实现的一个ssh快速连接菜单的脚本
Bash下实现的一个GUI ssh快速连接菜单的脚本
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | #!/bin/bash CONF=~/etc/sc.conf load() { cat $CONF | while read LINE do I=`echo $LINE | awk '{print $1}'` C=`echo $LINE | awk '{print $2}'` if [ "$C" == '' ];then C='Unknow' fi K=`echo $I | awk -F. '{print $4}'` echo "K=$K;I=$I;C=$C" done } ip(){ for vars in ${IS[*]};do eval $vars if [ '$K' == '$1' ]; then echo $I fi done } items() { ITEMS= for vars in ${IS[*]};do eval $vars ITEMS='$ITEMS $I $C' done echo $ITEMS } usage() { if [ '$IP' == '' ];then echo -e '\\033[01;31mKEY IP Address COMMENT\\033[00m' L=0 for vars in ${IS[*]};do eval $vars if [ $L == 0 ];then echo -e '\\033[01;32m$K $I $C\\033[00m' L=1 else echo -e '$K $I $C' L=0 fi done fi } run(){ IDX=`echo $1 | awk -F. '{print $2}'` if [ '$IDX' == '' ];then IP=`ip $1` else IP=$1 fi if [ '$IP' == '' ];then usage else if [ '$2' == '' ] || [ '$2' == 'ssh' ] ;then ssh root@$IP else if [ '$2' == 'sftp' ];then sftp root@$IP else $2 $IP fi fi fi } IS=(`load`) if [ '$1' == 'm' ] || [ '$1' == 'x' ];then if [ '$1' == 'm' ];then DIG=dialog else DIG=Xdialog fi ITEMS=`items` temp=`mktemp -t sc.XXXXXX` $DIG --stdout --title 'IP Connection' --menu 'Select IP Address.' 20 80 16 $ITEMS > $temp retval=$? IP=`cat $temp` case $retval in 0) $DIG --stdout --title 'IP Connection' --inputbox 'Input command' 8 60 ssh > $temp retval=$? CMD=`cat $temp` if [ '$retval' == '0' ];then clear run $IP $CMD else clear echo 'Cancel pressed.' fi ;; 1) clear echo 'Cancel pressed.' ;; 255) clear echo 'ESC pressed.' ;; esac else run $1 $2 fi |
配置文件
1 2 | ip1 #注释1 ip2 #注释2 |


Thanks very good for report, I follow your blog