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
0 Comments.