升腾、实达终端绑定辅助脚本程序
——Unix Shell编程笔记
作者:半点闲
博客:blog.csdn.net/cg_i
时间:2011-1-27 13:54 星期四
开发环境:Ubuntu10.10
运行环境:Ubuntu10.10
适用范围:ScoOperServer5.0.6上装有实达终端卫士(Start SteInetd Serve ver 5.11)、升腾固定终端程序(Centerm Telnet Server ver1.0)。
说一说:
2010年9月,工作上的变动使我有机会接触到Unix系统,也使我有机会可以深入学习这个系统。之前虽也接触过非微软的Windows系统,那时只是为了应付任务的需要并没有深入研究。我算得上是这个系统的门外汉“君子不隐其短,不懂则问,不能则学。”书籍就是我最好的朋友,在快速适应新的工作环境和调整好状态后,抽出时间用一周左右粗浅读完《Unix Shell编程(第三版)》、《精通正则表达式(第三版)》(还在读),被Unix强劲和其广泛的程序集(随标准操作系统发布的有200多条基本命令),这些命令(也称工具)可以完成从计算文件行到发送电子邮件,甚至显示任何一年的月历等任何事情。不仅如此这些命令组合起来,优雅而简便地完成更复杂的功能。而“正则表达式”绝对具有伟大技术发明的一切特点,它简单,优美,功能强大,妙用无穷。初次看到它时其密码般的形象很难接受,但当你理解后,能够将一些正则表达式组合应用,达到超乎相像的效果它更像是一门艺术。
这个“脚本”程序:
再说说我这个程序吧,它用了我二周的时间(不要笑我噢^_^!)。这个程序算得上是我在Unix系统中第一个编码最长的“脚本”程序了(之前的程序或是“玩具”或只处理一些极其简单的任务)。
当然,通过别的编程语言也能实现这个应用,这里我通过Shell来完成它,我个人认为像目前这种应用,也只有Shell可以以最简单、高效、优雅的方式来完成它。也更是我读了上述一本半书最好的课后作业。不仅巩固了书中所学,更如痴如醉地享受到了学习所带来的乐趣,这就是创造的力量。
求拍砖:
刚刚接触Unix系统对Shell编程的了解也很肤浅,代码和处理算法难免让各位“大侠”不忍目睹,欢迎各界来电来信拍砖,谢谢!
由来:
我的日常工作中管理着数十台Unix服务器,其中每台服务器又各连接着数百台终端(实达或升腾),将这些终端进行规范管理的确是个苦力活。
以前的作法:
1、 Telnet到服务器;
2、 进入配置文件所在的目录(一般为/etc);
3、 用编辑程序打开“终端绑定”配置文件(一般用vi);
4、 添加或修改绑定(这其中还涉及):
1)、查找从小到大可用的“虚拟设备”;
2)、IP、“虚拟设备”是否和目前将要操作的记录重复。
问题:通过Telnet到服务器进入/etc目录下修改“终端绑定”配置文件,一般会用到root或管理员极别的用户,这些用户权限比较大,它们的一举一动都会对服务器产生影响,一般不易指定多人(缺乏灵活性)。如果配置文件经常频繁改动(或者有多人维护)记录中就会出现“冗余”或“空洞”记录。
现在的作法:
1、 执行TerminalBindConfig.sh “服务器名称” “服务器IP” “终端类型”(如果你也有多台服务器,可以通过另外一个脚本做一个界面根据用户选择执行上述命令。我就是这样做的因为其中涉及一些敏感信息这里就不提供了);
2、 根据菜单选项进行操作(操作界面见图1);
3、 将更新后的配置文件上传至服务器。
好处:不需要登录到服务器上,多人操作使用统一界面,操作更透明所有处理记录相关的问题由程序来处理,安全、规范。
运行原理:
每天第一次启用这个程序时,会从服务器中下载当前“终端绑定”配置文件(以保持最新)。接下来所有的配置操作都在本地完成,当确定无误后再将修改后的配置文件上传至远程服务器(服务器原配置文件会被更改为当前系统时间的扩展名后备份)。
(图1:终端绑定辅助程序运行主界面)
(图2:查找记录界面)
#!/bin/sh
trap "" 2
stty erase ^H
###############################################################
# 文件:TerminalBindConfig.sh
# 参数:$1 服务器名称;$2 服务器IP;$3 终端类型(升腾"C",实达"S")
# 说明:终端绑定配置程序,目前只支持“升腾"和"实达"终端
# 版本:ver 1.0
# 作者:半点闲
# 博客:blog.csdn.net/cg_i
# 开发平台:Ubuntu10.10
# 字符集:UTF-8
# 开始时间:2011-1-12 星期三
# 修改时间:
###############################################################
CONFIG_FILENAME="" #扩展名为当前系统日期的终端绑定配置文件(全路径)
WINDOW_X=`tput lines` #获取屏幕信息
WINDOW_Y=`tput cols`
#IP规则正则表达式
REGEX_IP="(2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[1-9]?[0-9])(/.(2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[1-9]?[0-9])){3}"
#终端
CENTERM_NAME="升腾终端"
CENTERM_FILE="ctelnetd.conf"
START_NAME="实达终端"
START_FILE="stelnetd.conf"
CT_FILE=""
CT_NAME=""
###############################################
# 函数:downloadTerminalBindConfigFile()
# 参数:$1 服务器名称;$2 服务器IP;$3 终端绑定配置文件
# 返回:
# 说明:从远程服务器中下载终端绑定配置文件
# 作者:半点闲
# 开始时间:2011-1-13 7:09 星期四
# 修改时间:2011-1-20 9:36 星期四
###############################################
downloadTerminalBindConfigFile()
{
echo "下载/c";tput setf 6;echo "[$1]/c";tput setf 7;echo "绑定配置文件"
echo "登录用户:/c";read user
stty -echo #关闭屏幕回显
echo "密码:/c";read paswd
stty echo #开启屏幕回显
#############################################################
#关闭回显后,读入用户的回车符号不会导致屏幕换行,因此后面加上'/n'来换行。
#############################################################
echo "/n确定(Y)?/c";read choice
if [ "$choice" = "Y" -o "$choice" = 'y' ]
then
##########################
# 存放文件的目录不存在时
##########################
if [ ! -d "$1" ]
then
mkdir "$1"
fi
cd "$1"
echo "open $2" > ftp.cmd
echo "user $user $paswd" >> ftp.cmd
echo "cd etc" >> ftp.cmd
echo "get $3" >> ftp.cmd
echo "quit" >> ftp.cmd
ftp -v -n < ftp.cmd
rm "ftp.cmd" #清除临时文件
tmp=$(setBindConfigFile "$3")
if [ -z "$tmp" ]
then
echo "从远程服务器下载文件失败!"
read pause
else
###############################################
# 功能:iconv把下载的文件转换为与本地系统相同的编码格式。
# 本地系统:Ubuntu10.10
# 中文字符编码:UTF-8
# 远程服务器:ScoOperServer5.0.6
# 中文字符编码:GB2312
###############################################
iconv -f gb2312 -t utf-8 "$tmp" > "$tmp.iconv"
mv "$tmp.iconv" "$tmp"
fi
cd ..
fi
}
#############################################################
# 函数:setBindConfigFile()
# 参数:$1 终端绑定配置文件名(原始名称)。
# 返回:0 成功。副作用:返回更改后的文件名;
# 1 失败。副作用:返回""(空)字符串.
# 说明:将终端绑定配置文件更改为本地名,更名后格式为:"xxxx.当前年月日"。
# 注意:
# shell函数只能返回整数值,要想获取"字符串"值得通过下面方式。
# 如:
# value=setBindConfigFile "文件名" 获取的是函数返回的整数值.
# value=$(setBindConfigFile "文件名") 将函数当作命令来执行,
# 可获取函数中用echo命令输出的字符串信息,达到获取“字符串”值。
#
# 作者:半点闲
# 开始时间:2011-1-13 21:35 星期四 不旱了,写完这个我就去睡觉。
# 修改时间:2011-1-20 9:55 星期四 下雪了
#############################################################
setBindConfigFile()
{
if [ -e "$1" ]
then
##########################################################
# 语句:sed 's//..*$//'
# 说明:用sed命令把第一个"."符号(标志着文件扩展名)到行尾的所字符删掉。
##########################################################
file=$(echo | echo "$1" | sed 's//..*$//')
extension=$(echo ".`date +%Y%m%d`")
mv "$1" "$file$extension"
echo "$file$extension"
return 0
fi
echo ""
return 1
}
############################################################
# 函数:getBindConfigFile()
# 参数:$1 终端绑定配置文件名(原始名称)。
# 返回:0 成功。副作用:副作用:返本地配置文件名;
# 1 失败。副作用:返回""(空)字符串.
# 说明:返回本地终端绑定配置文名,格式:"xxxx.当前系统年月日"。
# 注:返回值更详细解释详看setBindConfigFIle()函数说明。
# 作者:半点闲
# 开始时间:2011-1-13 17:02 星期四
# 修改时间:2011-1-20 10:40 星期四
############################################################
getBindConfigFile()
{
##########################################################
# 语句:sed 's//..*$//'
# 说明:用sed命令把第一个"."符号(标志着文件扩展名)到行尾的所字符删掉。
##########################################################
file=$(echo "$1" | sed 's//..*$//')
extension=$(echo ".`date +%Y%m%d`")
if [ -e "$file$extension" ]
then
echo "$file$extension"
return 0
fi
echo ""
return 1
}
#################################################
# 函数:display()
# 参数:$1 扩展名为当前系统日期的终端绑定配置文件名(全路径)
# 说明:
# 作者:半点闲
# 开始时间:2011-1-13 3:06 星期四
# 修改时间:
#################################################
display()
{
###############################
# 功能:获取文件记录数
# 命令:sed 's/^#.*//'
# 说明:删除'#'开头的行,所有的字符。
# 命令:sed '/^$/d'
# 说明:删除所有空行。
###############################
record=$(sed 's/^#.*//' "$1" | sed '/^$/d' | wc -l)
perviously=1 #上次访问记录的位置
too=0 #已阅记录条数
screen=$(($WINDOW_X - 4)) #一屏最多能显示的记录条数(为底部菜单预留4个像素高)
while [ "$too" -le "$record" ]
do
clear
if [ "$too" -eq 0 ]
then
sed 's/^#.*//' "$1" | sed '/^$/d' | cat -n | sed -n $perviously,"$screen"p
too=$screen
perviously=$screen
else
sed 's/^#.*//' "$1" | sed '/^$/d' | cat -n | sed -n $perviously,"$too"p
perviously=$too
fi
tput setf 6 #前景色:黄色
tput cup $(($WINDOW_X - 2)) 1;echo "________________________________________________________/c"
tput cup $WINDOW_X 1;echo " N:下一行 | P:下一页 | F:查找指定记录 | Q:退出 | 输入:/c"
tput setf 7 #前景色:白色
read choice
case "$choice"
in
[nN]) $((too += 1));;
[pP])
#####################################
# 说明:记录不够一屏显示时,显示余下的记录。
# 时间:2011.1.17 星期一 6:00
#####################################
if [ "$(($record - $too))" -lt "$screen" ]
then
$((too += $record - $too))
else
$((too += $screen))
fi
;;
[qQ]) break;;
esac
done
}
################################################
# 函数:modifyTTY()
# 参数:$1 服务器名称;$2 终端绑定配置文件(原始名称);
# $3 本地终端绑定配置文件名
# 说明:修改“虚拟设备名称”
# 作者:半点闲
# 开始时间:2011-1-19 14:54 星期三
# 修改时间:2011-1-24 14:30 星期一
################################################
modifyTTY()
{
ttyName=$(sed 's/^#.*//' "$3" | sed '/^$/d' | sed -n 1,1p | sed 's/[^a-zA-Z]//g')
echo "当前虚拟设备名称:/c";tput setf 6;echo "[$ttyName]";tput setf 7
echo "是否更改(Y):/c";read choice
if [ "$choice" = "Y" -o "$choice" = 'y' ]
then
echo "请输入新的虚拟设备名称:/c";read newName
########################
# 去掉字符串中的空格、制表符
########################
newName=$(echo "$newName" | sed 's/[ /t]//g')
if [ -n "$newName" ]
then
echo "确定将原虚拟设备名/c";tput setf 6;echo "[$ttyName]/c";tput setf 4;echo "更改为[$newName]";tput setf 7
echo "确定(Y):/c";read choice
if [ "$choice" = "Y" -o "$choice" = 'y' ]
then
cd $1
fileName=$(getBindConfigFile $2)
if [ -e "$fileName" ]
then
sed "s/$ttyName/$newName/g" "$fileName" > "${fileName}.tmp"
mv "${fileName}.tmp" "$fileName"
echo "更改虚拟设备名成功!"
read pause
fi
cd ..
fi
fi
fi
}
################################################
# 函数:resetStartTtyNum()
# 参数:$1 服务器名称;$2 终端绑定配置文件(原始名称);
# $3 本地终端绑定配置文件名
# 说明:重置“虚拟设备”起始号。
# 作者:半点闲
# 开始时间:2011-1-20 13:20 星期四
# 修改时间:
################################################
resetStartTtyNum()
{
###############################
# ttyName:提取"虚拟设备"名
# ttyNumber:提取"虚拟设备"起始号
# 1.提取格式为"设备名+设备号"
# 2.提取"设备号"
###############################
ttyName=$(sed 's/^#.*//' "$3" | sed '/^$/d' | sed -n 1,1p | sed 's/[^a-zA-Z]//g')
ttyNumber=$(sed 's/^#.*//' "$3" | sed '/^$/d' | grep -o "$ttyName[0-9]*" | sort -n | sed -n 1,1p)
ttyNumber=$(echo "$ttyNumber" | sed 's/[^0-9]//g')
echo "当前虚拟设备起始号:/c";tput setf 6;echo "[$ttyNumber]";tput setf 7
echo "是否重置(Y):/c";read choice
if [ "$choice" = "Y" -o "$choice" = 'y' ]
then
echo "请输入新的设备起始号:/c";read newNumber
##############
# 去掉非数字字符
##############
newNumber=$(echo "$newNumber" | sed 's/[^0-9]//g')
if [ -z "$newNumber" ]
then
echo "[$newNumber]非法!"
read pause
elif [ "$newNumber" -lt 0 ]
then
echo "[$newNumber]非法!"
read pause
else
echo "确定将原设备起始号/c";tput setf 6;echo "[$ttyNumber]/c";tput setf 7;echo "重置为/c";tput setf 4;echo "[$newNumber]";tput setf 7
echo "确定(Y):/c";read choice
if [ "$choice" = "Y" -o "$choice" = 'y' ]
then
cd $1
fileName=$(getBindConfigFile "$2")
if [ -z "$fileName" ]
then
echo "未找到终端配置文件!"
read pause
else
record=$(sed 's/^#.*//' "$fileName" | sed '/^$/d' | wc -l)
perviously=1 #上次访问记录的位置
while [ "$perviously" -le "$record" ]
do
if [ "$perviously" -eq 1 ]
then
sed 's/^[0-9].*$//g' "$fileName" | sed '/^$/d' > "$fileName.tmp"
fi
sed 's/^#.*//' "$fileName" | sed '/^$/d' | sed -n $perviously,"$perviously"p | sed "s/$ttyName[0-9]*/$ttyName$newNumber/" >> "$fileName.tmp"
perviously=$(($perviously + 1))
newNumber=$(($newNumber + 1))
done
mv "$fileName.tmp" "$fileName"
echo "重置完毕,按任意键退出!"
read pause
fi
cd ..
fi
fi
fi
}
################################################
# 函数:modify()
# 参数:$1 服务器名称;$2 终端绑定配置文件(原始名称);
# $3 本地终端绑定配置文件名
# 说明:
# 作者:半点闲
# 开始时间:2011-1-20 17:07 星期四
# 修改时间:
################################################
modify()
{
while trueSTART_FILE="stelnetd.conf"
do
clear
tput cup 0 19;echo "修改绑定配置"
tput cup 1 10;echo "------------------------------"
tput cup 2 18;echo "A.修改IP;"
tput cup 3 18;echo "B.修改虚拟设备号;"
tput cup 4 10;echo "------------------------------"
tput cup 5 18;echo "请选择(Q键退出):/c";read choice
case "$choice"
in
[aA]) modifyIP "$1" "$2" "$3";;
[bB]) ;;
[qQ]) break;;
* ) echo "错误的选项!";read pause;;
esac
done
}
################################################
# 函数:modifyIP()
# 参数:$1 服务器名称;$2 终端绑定配置文件(原始名称);
# $3 本地终端绑定配置文件名
# 说明:更改终端IP。
# 作者:半点闲
# 开始时间:2011-1-21 15:03 星期五 晴
# 修改时间:
################################################
modifyIP()
{
echo "原终端IP:/c";read originalIP
echo "新终端IP:/c";read newIP
if [ ! $(echo "$originalIP" | grep -E "$REGEX_IP") ]
then
echo "原终端IP:[$originalIP]非合法IP格式,请重新输入!"
read pause;return
elif [ ! $(echo "$newIP" | grep -E "$REGEX_IP") ]
then
echo "新终端IP:[$newIP]非合法IP格式,请重新输入!"
read pause;return
fi
find=$(grep "/<$newIP/>" "$3")
if [ -n "$find" ]
then
echo "IP/c";tput setf 4;echo "[$newIP]/c";tput setf 7;echo "已存在,按任意键返回!"
read pause;return
fi
find=$(grep "/<$originalIP/>" "$3")
if [ -z "$find" ]
then
echo "在配置文件中未找到与/c";tput setf 6;echo "[$originalIP]/c";tput setf 7;echo "相匹配的记录!"
read pause;return
else
echo "IP/c";tput setf 6;echo "[$originalIP]/c";tput setf 7;echo "相对应的记录:"
tput setf 4
echo "$find"
tput setf 7
echo "更改后如下所示:"
tput setf 6
echo "$(sed "s//<$originalIP/>/$newIP/g" "$3" | grep "/<$newIP/>" )"
tput setf 7
echo "确定(Y):/c";read choice
if [ "$choice" = "Y" -o "$choice" = 'y' ]
then
cd $1
fileName=$(getBindConfigFile $2)
sed "s//<$originalIP/>/$newIP/g" "$fileName" > "$fileName.tmp"
mv "$fileName.tmp" "$fileName"
cd ..
fi
fi
}
###############################################################
# 函数:addBind()
# 参数:$1 服务器名称;$2 扩展名为当前系统日期的终端绑定配置文件(全路径);
# $3 终端类型
# 说明:添加新的绑定到配置文件
# 作者:半点闲
# 开始时间:2011-1-17 7:06 星期一
# 修改时间:2011-1-25 11:02 星期二
###############################################################
addBind()
{
echo "添加绑定"
echo "终端IP:/c";read ip
echo "起始窗口[0-9]:1(默认)"
echo "中止窗口[0-9]:2(默认)"
echo "确定(Y):/c";read choice
if [ "$choice" = "Y" -o "$choice" = 'y' ]
then
if [ ! $(echo "$ip" | grep -E "$REGEX_IP") ]
then
echo "终端IP:[$ip]非合法IP格式,请重新输入!"
read pause;return
fi
##############
# 获取文件记录数
##############
record=$(sed 's/^#.*//' "$2" | sed '/^$/d' | wc -l)
##############
# 提取虚拟设备
##############
ttyName=$(sed 's/^#.*//' "$2" | sed '/^$/d' | sed -n 1,1p | sed 's/[^a-zA-Z]//g')
ttyNumber=$(sed 's/^#.*//' "$2" | sed '/^$/d' | grep -o "$ttyName[0-9]*" | sed 's/[^0-9]//g' | sort -n | sed -n $record,"$record"p)
echo "将新增以下两条绑定到配置文件:"
tput setf 6 #前景色:红色。
newRecord=""
if [ "$3" = "C" ]
then
echo "$ip/t1/t$ttyName$(($ttyNumber + 1))"
echo "$ip/t2/t$ttyName$(($ttyNumber + 2))"
CT_FILE=$CENTERM_FILE
elif [ "$3" = "S" ]
then
echo "$ip.1/t$ttyName$(($ttyNumber + 1))/t0/t0/t0/t1"
echo "$ip.2/t$ttyName$(($ttyNumber + 2))/t0/t0/t0/t1"
CT_FILE=$START_FILE
else
echo "未知终端类型!"
read pause;return
fi
tput setf 7 #前景色:白色
echo "确定(Y):/c";read choice
if [ "$choice" = "Y" -o "$choice" = 'y' ]
then
cd $1
fileName=$(getBindConfigFile $CT_FILE)
find=""
if [ "$3" = "C" ]
then
##################################
# 升腾记录格式:"IP 窗口号 虚拟设备名称"
##################################
find=$(grep "/<$ip/>" "$fileName" | grep "[^1-9A-Za-z.]1[^1-9A-Za-z.]")
find=$find$(grep "/<$ip/>" "$fileName" | grep "[^1-9A-Za-z.]2[^1-9A-Za-z.]")
elif [ "$3" = "S" ]
then
##########################################
# 实达记录格式:"IP.窗口号 虚拟设备名称 0 0 0 1"
##########################################
find=$(grep "/<$ip.1/>" "$fileName")
find=$find$(grep "/<$ip.2/>" "$fileName")
fi
if [ -n "$find" ]
then
echo "当前配置存在重名IP绑定:"
tput setf 4
echo "$find"
tput setf 7
echo "按任意键退出......"
read pause
else
if [ "$3" = "C" ]
then
echo "$ip/t1/t$ttyName$(($ttyNumber + 1))" >> "$fileName"
echo "$ip/t2/t$ttyName$(($ttyNumber + 2))" >> "$fileName"
elif [ "$3" = "S" ]
then
echo "$ip.1/t$ttyName$(($ttyNumber + 1))/t0/t0/t0/t1" >> "$fileName"
echo "$ip.2/t$ttyName$(($ttyNumber + 2))/t0/t0/t0/t1" >> "$fileName"
fi
echo "添加记录到配置文件成功,按任意键返回。"
read pause
fi
cd ..
fi
fi
}
###############################################
# 函数:delBind()
# 参数:$1 服务器名称;$2 终端绑定配置文件名(原始名称)
# $3 终端类型
# 说明:删除配置文件中的绑定。
# 作者:半点闲
# 开始时间:2011-1-19 11:07 星期三
# 修改时间:2011-1-25 13:59 星期二
###############################################
delBind()
{
echo "删除绑定"
echo "终端IP:/c";read ip
echo "确定(Y):/c";read choice
if [ "$choice" = "Y" -o "$choice" = 'y' ]
then
if [ ! $(echo "$ip" | grep -E "$REGEX_IP") ]
then
echo "终端IP:[$ip]非合法IP格式,请重新输入!"
read pause;return
fi
cd $1
fileName=$(getBindConfigFile $2)
find=""
if [ "$3" = "C" ]
then
##################################
# 升腾记录格式:"IP 窗口号 虚拟设备名称"
##################################
find=$(grep "/<$ip/>" "$fileName" | grep "[^1-9A-Za-z.]1[^1-9A-Za-z.]")
find=$find$(grep "/<$ip/>" "$fileName" | grep "[^1-9A-Za-z.]2[^1-9A-Za-z.]")
elif [ "$3" = "S" ]
then
##########################################
# 实达记录格式:"IP.窗口号 虚拟设备名称 0 0 0 1"
##########################################
find=$(grep "/<$ip.1/>" "$fileName")
find=$find$(grep "/<$ip.2/>" "$fileName")
fi
if [ -z "$find" ]
then
echo "在配置文件中未找到与[$ip]相匹配的记录!"
read pause
else
echo "删除以下绑定:"
tput setf 4
echo "$find"
tput setf 7
echo "确定(Y):/c";read choice
if [ "$choice" = "Y" -o "$choice" = 'y' ]
then
sed "/^$ip.*$/d" "$fileName" > "${fileName}.tmp"
mv "${fileName}.tmp" "$fileName"
echo "绑定删除成功,按任意键返回."
read pause
fi
fi
cd ..
fi
}
###############
# 程序开始
###############
###############
# 获取"终端类型"
###############
case "$3"
in
[Cc]) CT_NAME=$CENTERM_NAME;CT_FILE=$CENTERM_FILE;;
[Ss]) CT_NAME=$START_NAME;CT_FILE=$START_FILE;;
* ) echo "终端类型错误!";read pause;return
esac
################################
# 配置文件不存在时,从远程服务器中下载
################################
CONFIG_FILENAME=$(getBindConfigFile "$1/$CT_FILE")
if [ -z "$CONFIG_FILENAME" ]
then
downloadTerminalBindConfigFile "$1" "$2" "$CT_FILE"
CONFIG_FILENAME=$(getBindConfigFile "$1/$CT_FILE")
fi
if [ ! -e "$CONFIG_FILENAME" ]
then
return
fi
while true
do
clear
tput cup 0 22;echo "终端绑定配置程序"
echo "--------------------------------------------------------------------"
tput setf 4 #前景色:红色。
echo "机构名称:/c"
tput setf 7 #前景色:白色。
echo "$1 /c"
tput setf 4 #前景色:红色。
echo "终端类型:/c"
tput setf 7 #前景色:白色。
echo "$CT_NAME /c"
tput setf 4 #前景色:红色。
echo "文件名称:/c"
tput setf 7 #前景色:白色。
echo "$CT_FILE"
echo "--------------------------------------------------------------------"
tput cup 4 23;echo "1.查看绑定配置文件信息;"
tput cup 5 23;echo "2.添加绑定;"
tput cup 6 23;echo "3.删除绑定;"
tput cup 7 23;echo "4.修改绑定;"
tput cup 8 23;echo "5.修改虚拟设备名称;"
tput cup 9 23;echo "6.重置虚拟设备起始号;"
tput cup 10 23;echo "7.更新配置到服务器。"
echo "--------------------------------------------------------------------"
tput cup 12 24;echo "请选择(Q键退出):/c";read choice
case "$choice"
in
1) display "$CONFIG_FILENAME";;
2) addBind "$1" "$CONFIG_FILENAME" "$3";;
3) delBind "$1" "$CT_FILE" "$3";;
4) modify "$1" "$CT_FILE" "$CONFIG_FILENAME";;
5) modifyTTY "$1" "$CT_FILE" "$CONFIG_FILENAME";;
6) resetStartTtyNum "$1" "$CT_FILE" "$CONFIG_FILENAME";;
7) ;;
[qQ]) break;;
* ) echo "错误的选项!";read pause;;
esac
done