Bash下实现的一个ssh快速连接菜单的脚本

Bash下实现的一个GUI ssh快速连接菜单的脚本
代码:

#!/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

配置文件

ip1 #注释1
ip2 #注释2
Leave a comment

0 Comments.

Leave a Reply


[ Ctrl + Enter ]