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

Comments (1)

Blogging To The Bank九月 11th, 2010 at 1:09 下午

Thanks very good for report, I follow your blog

Leave a comment

Your comment