升腾、实达终端绑定辅助脚本程序
?
升騰、實達終端綁定輔助腳本程序
——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 userstty -echo #關閉屏幕回顯echo "密碼:/c";read paswdstty echo #開啟屏幕回顯##############################################################關閉回顯后,讀入用戶的回車符號不會導致屏幕換行,因此后面加上'/n'來換行。#############################################################echo "/n確定(Y)?/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]then########################### 存放文件的目錄不存在時##########################if [ ! -d "$1" ]thenmkdir "$1"ficd "$1"echo "open $2" > ftp.cmdecho "user $user $paswd" >> ftp.cmdecho "cd etc" >> ftp.cmdecho "get $3" >> ftp.cmdecho "quit" >> ftp.cmdftp -v -n < ftp.cmd rm "ftp.cmd" #清除臨時文件tmp=$(setBindConfigFile "$3")if [ -z "$tmp" ]thenecho "從遠程服務器下載文件失敗!"read pauseelse################################################ 功能:iconv把下載的文件轉換為與本地系統相同的編碼格式。# 本地系統:Ubuntu10.10# 中文字符編碼:UTF-8# 遠程服務器:ScoOperServer5.0.6# 中文字符編碼:GB2312###############################################iconv -f gb2312 -t utf-8 "$tmp" > "$tmp.iconv"mv "$tmp.iconv" "$tmp"ficd ..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 0fiecho ""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" ]thenecho "$file$extension"return 0fiecho ""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" ]doclearif [ "$too" -eq 0 ]thensed 's/^#.*//' "$1" | sed '/^$/d' | cat -n | sed -n $perviously,"$screen"ptoo=$screenperviously=$screenelsesed 's/^#.*//' "$1" | sed '/^$/d' | cat -n | sed -n $perviously,"$too"pperviously=$toofitput 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 choicecase "$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;;esacdone } ################################################ # 函數: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 7echo "是否更改(Y):/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]thenecho "請輸入新的虛擬設備名稱:/c";read newName######################### 去掉字符串中的空格、制表符########################newName=$(echo "$newName" | sed 's/[ /t]//g')if [ -n "$newName" ]thenecho "確定將原虛擬設備名/c";tput setf 6;echo "[$ttyName]/c";tput setf 4;echo "更改為[$newName]";tput setf 7echo "確定(Y):/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]thencd $1fileName=$(getBindConfigFile $2)if [ -e "$fileName" ]thensed "s/$ttyName/$newName/g" "$fileName" > "${fileName}.tmp"mv "${fileName}.tmp" "$fileName"echo "更改虛擬設備名成功!"read pauseficd ..fififi } ################################################ # 函數: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 7echo "是否重置(Y):/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]thenecho "請輸入新的設備起始號:/c";read newNumber############### 去掉非數字字符##############newNumber=$(echo "$newNumber" | sed 's/[^0-9]//g')if [ -z "$newNumber" ]thenecho "[$newNumber]非法!"read pauseelif [ "$newNumber" -lt 0 ]thenecho "[$newNumber]非法!"read pauseelseecho "確定將原設備起始號/c";tput setf 6;echo "[$ttyNumber]/c";tput setf 7;echo "重置為/c";tput setf 4;echo "[$newNumber]";tput setf 7echo "確定(Y):/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]thencd $1fileName=$(getBindConfigFile "$2")if [ -z "$fileName" ]thenecho "未找到終端配置文件!"read pauseelserecord=$(sed 's/^#.*//' "$fileName" | sed '/^$/d' | wc -l)perviously=1 #上次訪問記錄的位置while [ "$perviously" -le "$record" ]doif [ "$perviously" -eq 1 ]thensed 's/^[0-9].*$//g' "$fileName" | sed '/^$/d' > "$fileName.tmp"fised 's/^#.*//' "$fileName" | sed '/^$/d' | sed -n $perviously,"$perviously"p | sed "s/$ttyName[0-9]*/$ttyName$newNumber/" >> "$fileName.tmp"perviously=$(($perviously + 1))newNumber=$(($newNumber + 1))donemv "$fileName.tmp" "$fileName"echo "重置完畢,按任意鍵退出!"read pauseficd ..fififi } ################################################ # 函數:modify() # 參數:$1 服務器名稱;$2 終端綁定配置文件(原始名稱); # $3 本地終端綁定配置文件名 # 說明: # 作者:半點閑 # 開始時間:2011-1-20 17:07 星期四 # 修改時間: ################################################ modify() {while trueSTART_FILE="stelnetd.conf"docleartput 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 choicecase "$choice"in[aA]) modifyIP "$1" "$2" "$3";;[bB]) ;;[qQ]) break;;* ) echo "錯誤的選項!";read pause;;esacdone } ################################################ # 函數:modifyIP() # 參數:$1 服務器名稱;$2 終端綁定配置文件(原始名稱); # $3 本地終端綁定配置文件名 # 說明:更改終端IP。 # 作者:半點閑 # 開始時間:2011-1-21 15:03 星期五 晴 # 修改時間: ################################################ modifyIP() {echo "原終端IP:/c";read originalIPecho "新終端IP:/c";read newIPif [ ! $(echo "$originalIP" | grep -E "$REGEX_IP") ]thenecho "原終端IP:[$originalIP]非合法IP格式,請重新輸入!"read pause;returnelif [ ! $(echo "$newIP" | grep -E "$REGEX_IP") ]thenecho "新終端IP:[$newIP]非合法IP格式,請重新輸入!"read pause;returnfifind=$(grep "/<$newIP/>" "$3")if [ -n "$find" ]thenecho "IP/c";tput setf 4;echo "[$newIP]/c";tput setf 7;echo "已存在,按任意鍵返回!"read pause;returnfifind=$(grep "/<$originalIP/>" "$3")if [ -z "$find" ]thenecho "在配置文件中未找到與/c";tput setf 6;echo "[$originalIP]/c";tput setf 7;echo "相匹配的記錄!"read pause;returnelseecho "IP/c";tput setf 6;echo "[$originalIP]/c";tput setf 7;echo "相對應的記錄:"tput setf 4 echo "$find"tput setf 7echo "更改后如下所示:"tput setf 6echo "$(sed "s//<$originalIP/>/$newIP/g" "$3" | grep "/<$newIP/>" )"tput setf 7echo "確定(Y):/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]thencd $1fileName=$(getBindConfigFile $2)sed "s//<$originalIP/>/$newIP/g" "$fileName" > "$fileName.tmp"mv "$fileName.tmp" "$fileName"cd .. fifi } ############################################################### # 函數:addBind() # 參數:$1 服務器名稱;$2 擴展名為當前系統日期的終端綁定配置文件(全路徑); # $3 終端類型 # 說明:添加新的綁定到配置文件 # 作者:半點閑 # 開始時間:2011-1-17 7:06 星期一 # 修改時間:2011-1-25 11:02 星期二 ############################################################### addBind() {echo "添加綁定"echo "終端IP:/c";read ipecho "起始窗口[0-9]:1(默認)"echo "中止窗口[0-9]:2(默認)"echo "確定(Y):/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]thenif [ ! $(echo "$ip" | grep -E "$REGEX_IP") ]thenecho "終端IP:[$ip]非合法IP格式,請重新輸入!"read pause;returnfi############### 獲取文件記錄數##############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" ]thenecho "$ip/t1/t$ttyName$(($ttyNumber + 1))"echo "$ip/t2/t$ttyName$(($ttyNumber + 2))"CT_FILE=$CENTERM_FILEelif [ "$3" = "S" ]thenecho "$ip.1/t$ttyName$(($ttyNumber + 1))/t0/t0/t0/t1"echo "$ip.2/t$ttyName$(($ttyNumber + 2))/t0/t0/t0/t1"CT_FILE=$START_FILEelseecho "未知終端類型!"read pause;returnfitput setf 7 #前景色:白色echo "確定(Y):/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]thencd $1fileName=$(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")fiif [ -n "$find" ]thenecho "當前配置存在重名IP綁定:"tput setf 4echo "$find"tput setf 7echo "按任意鍵退出......"read pauseelseif [ "$3" = "C" ]thenecho "$ip/t1/t$ttyName$(($ttyNumber + 1))" >> "$fileName"echo "$ip/t2/t$ttyName$(($ttyNumber + 2))" >> "$fileName"elif [ "$3" = "S" ]thenecho "$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 pauseficd ..fifi } ############################################### # 函數:delBind() # 參數:$1 服務器名稱;$2 終端綁定配置文件名(原始名稱) # $3 終端類型 # 說明:刪除配置文件中的綁定。 # 作者:半點閑 # 開始時間:2011-1-19 11:07 星期三 # 修改時間:2011-1-25 13:59 星期二 ############################################### delBind() {echo "刪除綁定"echo "終端IP:/c";read ipecho "確定(Y):/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]thenif [ ! $(echo "$ip" | grep -E "$REGEX_IP") ]thenecho "終端IP:[$ip]非合法IP格式,請重新輸入!"read pause;returnficd $1fileName=$(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")fiif [ -z "$find" ]thenecho "在配置文件中未找到與[$ip]相匹配的記錄!"read pauseelseecho "刪除以下綁定:"tput setf 4echo "$find"tput setf 7echo "確定(Y):/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]thensed "/^$ip.*$/d" "$fileName" > "${fileName}.tmp"mv "${fileName}.tmp" "$fileName"echo "綁定刪除成功,按任意鍵返回."read pausefificd ..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" ] thendownloadTerminalBindConfigFile "$1" "$2" "$CT_FILE"CONFIG_FILENAME=$(getBindConfigFile "$1/$CT_FILE") fiif [ ! -e "$CONFIG_FILENAME" ] thenreturn fiwhile true docleartput 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 choicecase "$choice"in1) 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?
總結
以上是生活随笔為你收集整理的升腾、实达终端绑定辅助脚本程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wow宏教程
- 下一篇: simulink中mpc模块怎么使用_s