升騰、實達終端綁定輔助腳本程序
——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