升腾、实达终端绑定辅助脚本程序
?
升騰、實(shí)達(dá)終端綁定輔助腳本程序
——Unix Shell編程筆記
?
作者:半點(diǎn)閑
博客:blog.csdn.net/cg_i
時(shí)間:2011-1-27 13:54 星期四
開(kāi)發(fā)環(huán)境:Ubuntu10.10
運(yùn)行環(huán)境:Ubuntu10.10
適用范圍:ScoOperServer5.0.6上裝有實(shí)達(dá)終端衛(wèi)士(Start SteInetd Serve ver 5.11)、升騰固定終端程序(Centerm Telnet Server ver1.0)。
?
說(shuō)一說(shuō):
???????? 2010年9月,工作上的變動(dòng)使我有機(jī)會(huì)接觸到Unix系統(tǒng),也使我有機(jī)會(huì)可以深入學(xué)習(xí)這個(gè)系統(tǒng)。之前雖也接觸過(guò)非微軟的Windows系統(tǒng),那時(shí)只是為了應(yīng)付任務(wù)的需要并沒(méi)有深入研究。我算得上是這個(gè)系統(tǒng)的門(mén)外漢“君子不隱其短,不懂則問(wèn),不能則學(xué)。”書(shū)籍就是我最好的朋友,在快速適應(yīng)新的工作環(huán)境和調(diào)整好狀態(tài)后,抽出時(shí)間用一周左右粗淺讀完《Unix Shell編程(第三版)》、《精通正則表達(dá)式(第三版)》(還在讀),被Unix強(qiáng)勁和其廣泛的程序集(隨標(biāo)準(zhǔn)操作系統(tǒng)發(fā)布的有200多條基本命令),這些命令(也稱(chēng)工具)可以完成從計(jì)算文件行到發(fā)送電子郵件,甚至顯示任何一年的月歷等任何事情。不僅如此這些命令組合起來(lái),優(yōu)雅而簡(jiǎn)便地完成更復(fù)雜的功能。而“正則表達(dá)式”絕對(duì)具有偉大技術(shù)發(fā)明的一切特點(diǎn),它簡(jiǎn)單,優(yōu)美,功能強(qiáng)大,妙用無(wú)窮。初次看到它時(shí)其密碼般的形象很難接受,但當(dāng)你理解后,能夠?qū)⒁恍┱齽t表達(dá)式組合應(yīng)用,達(dá)到超乎相像的效果它更像是一門(mén)藝術(shù)。
這個(gè)“腳本”程序:
???????? 再說(shuō)說(shuō)我這個(gè)程序吧,它用了我二周的時(shí)間(不要笑我噢^_^!)。這個(gè)程序算得上是我在Unix系統(tǒng)中第一個(gè)編碼最長(zhǎng)的“腳本”程序了(之前的程序或是“玩具”或只處理一些極其簡(jiǎn)單的任務(wù))。
當(dāng)然,通過(guò)別的編程語(yǔ)言也能實(shí)現(xiàn)這個(gè)應(yīng)用,這里我通過(guò)Shell來(lái)完成它,我個(gè)人認(rèn)為像目前這種應(yīng)用,也只有Shell可以以最簡(jiǎn)單、高效、優(yōu)雅的方式來(lái)完成它。也更是我讀了上述一本半書(shū)最好的課后作業(yè)。不僅鞏固了書(shū)中所學(xué),更如癡如醉地享受到了學(xué)習(xí)所帶來(lái)的樂(lè)趣,這就是創(chuàng)造的力量。
?
求拍磚:
???????? 剛剛接觸Unix系統(tǒng)對(duì)Shell編程的了解也很膚淺,代碼和處理算法難免讓各位“大俠”不忍目睹,歡迎各界來(lái)電來(lái)信拍磚,謝謝!
?
由來(lái):
我的日常工作中管理著數(shù)十臺(tái)Unix服務(wù)器,其中每臺(tái)服務(wù)器又各連接著數(shù)百臺(tái)終端(實(shí)達(dá)或升騰),將這些終端進(jìn)行規(guī)范管理的確是個(gè)苦力活。
以前的作法:
1、? Telnet到服務(wù)器;
2、? 進(jìn)入配置文件所在的目錄(一般為/etc);
3、? 用編輯程序打開(kāi)“終端綁定”配置文件(一般用vi);
4、? 添加或修改綁定(這其中還涉及):
1)、查找從小到大可用的“虛擬設(shè)備”;
2)、IP、“虛擬設(shè)備”是否和目前將要操作的記錄重復(fù)。
???????? 問(wèn)題:通過(guò)Telnet到服務(wù)器進(jìn)入/etc目錄下修改“終端綁定”配置文件,一般會(huì)用到root或管理員極別的用戶(hù),這些用戶(hù)權(quán)限比較大,它們的一舉一動(dòng)都會(huì)對(duì)服務(wù)器產(chǎn)生影響,一般不易指定多人(缺乏靈活性)。如果配置文件經(jīng)常頻繁改動(dòng)(或者有多人維護(hù))記錄中就會(huì)出現(xiàn)“冗余”或“空洞”記錄。
???????? 現(xiàn)在的作法:
1、? 執(zhí)行TerminalBindConfig.sh “服務(wù)器名稱(chēng)” “服務(wù)器IP” “終端類(lèi)型”(如果你也有多臺(tái)服務(wù)器,可以通過(guò)另外一個(gè)腳本做一個(gè)界面根據(jù)用戶(hù)選擇執(zhí)行上述命令。我就是這樣做的因?yàn)槠渲猩婕耙恍┟舾行畔⑦@里就不提供了);
2、? 根據(jù)菜單選項(xiàng)進(jìn)行操作(操作界面見(jiàn)圖1);
3、? 將更新后的配置文件上傳至服務(wù)器。
好處:不需要登錄到服務(wù)器上,多人操作使用統(tǒng)一界面,操作更透明所有處理記錄相關(guān)的問(wèn)題由程序來(lái)處理,安全、規(guī)范。
運(yùn)行原理:
每天第一次啟用這個(gè)程序時(shí),會(huì)從服務(wù)器中下載當(dāng)前“終端綁定”配置文件(以保持最新)。接下來(lái)所有的配置操作都在本地完成,當(dāng)確定無(wú)誤后再將修改后的配置文件上傳至遠(yuǎn)程服務(wù)器(服務(wù)器原配置文件會(huì)被更改為當(dāng)前系統(tǒng)時(shí)間的擴(kuò)展名后備份)。
(圖1:終端綁定輔助程序運(yùn)行主界面)
(圖2:查找記錄界面)
#!/bin/sh trap "" 2 stty erase ^H ############################################################### # 文件:TerminalBindConfig.sh # 參數(shù):$1 服務(wù)器名稱(chēng);$2 服務(wù)器IP;$3 終端類(lèi)型(升騰"C",實(shí)達(dá)"S") # 說(shuō)明:終端綁定配置程序,目前只支持“升騰"和"實(shí)達(dá)"終端 # 版本:ver 1.0 # 作者:半點(diǎn)閑 # 博客:blog.csdn.net/cg_i # 開(kāi)發(fā)平臺(tái):Ubuntu10.10 # 字符集:UTF-8 # 開(kāi)始時(shí)間:2011-1-12 星期三 # 修改時(shí)間: ############################################################### CONFIG_FILENAME="" #擴(kuò)展名為當(dāng)前系統(tǒng)日期的終端綁定配置文件(全路徑) WINDOW_X=`tput lines` #獲取屏幕信息 WINDOW_Y=`tput cols` #IP規(guī)則正則表達(dá)式 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="實(shí)達(dá)終端" START_FILE="stelnetd.conf" CT_FILE="" CT_NAME=""############################################### # 函數(shù):downloadTerminalBindConfigFile() # 參數(shù):$1 服務(wù)器名稱(chēng);$2 服務(wù)器IP;$3 終端綁定配置文件 # 返回: # 說(shuō)明:從遠(yuǎn)程服務(wù)器中下載終端綁定配置文件 # 作者:半點(diǎn)閑 # 開(kāi)始時(shí)間:2011-1-13 7:09 星期四 # 修改時(shí)間:2011-1-20 9:36 星期四 ############################################### downloadTerminalBindConfigFile() {echo "下載/c";tput setf 6;echo "[$1]/c";tput setf 7;echo "綁定配置文件"echo "登錄用戶(hù):/c";read userstty -echo #關(guān)閉屏幕回顯echo "密碼:/c";read paswdstty echo #開(kāi)啟屏幕回顯##############################################################關(guān)閉回顯后,讀入用戶(hù)的回車(chē)符號(hào)不會(huì)導(dǎo)致屏幕換行,因此后面加上'/n'來(lái)?yè)Q行。#############################################################echo "/n確定(Y)?/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]then########################### 存放文件的目錄不存在時(shí)##########################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" #清除臨時(shí)文件tmp=$(setBindConfigFile "$3")if [ -z "$tmp" ]thenecho "從遠(yuǎn)程服務(wù)器下載文件失敗!"read pauseelse################################################ 功能:iconv把下載的文件轉(zhuǎn)換為與本地系統(tǒng)相同的編碼格式。# 本地系統(tǒng):Ubuntu10.10# 中文字符編碼:UTF-8# 遠(yuǎn)程服務(wù)器:ScoOperServer5.0.6# 中文字符編碼:GB2312###############################################iconv -f gb2312 -t utf-8 "$tmp" > "$tmp.iconv"mv "$tmp.iconv" "$tmp"ficd ..fi } ############################################################# # 函數(shù):setBindConfigFile() # 參數(shù):$1 終端綁定配置文件名(原始名稱(chēng))。 # 返回:0 成功。副作用:返回更改后的文件名; # 1 失敗。副作用:返回""(空)字符串. # 說(shuō)明:將終端綁定配置文件更改為本地名,更名后格式為:"xxxx.當(dāng)前年月日"。 # 注意: # shell函數(shù)只能返回整數(shù)值,要想獲取"字符串"值得通過(guò)下面方式。 # 如: # value=setBindConfigFile "文件名" 獲取的是函數(shù)返回的整數(shù)值. # value=$(setBindConfigFile "文件名") 將函數(shù)當(dāng)作命令來(lái)執(zhí)行, # 可獲取函數(shù)中用echo命令輸出的字符串信息,達(dá)到獲取“字符串”值。 # # 作者:半點(diǎn)閑 # 開(kāi)始時(shí)間:2011-1-13 21:35 星期四 不旱了,寫(xiě)完這個(gè)我就去睡覺(jué)。 # 修改時(shí)間:2011-1-20 9:55 星期四 下雪了 ############################################################# setBindConfigFile() {if [ -e "$1" ]then########################################################### 語(yǔ)句:sed 's//..*$//'# 說(shuō)明:用sed命令把第一個(gè)"."符號(hào)(標(biāo)志著文件擴(kuò)展名)到行尾的所字符刪掉。##########################################################file=$(echo | echo "$1" | sed 's//..*$//')extension=$(echo ".`date +%Y%m%d`")mv "$1" "$file$extension"echo "$file$extension"return 0fiecho ""return 1 } ############################################################ # 函數(shù):getBindConfigFile() # 參數(shù):$1 終端綁定配置文件名(原始名稱(chēng))。 # 返回:0 成功。副作用:副作用:返本地配置文件名; # 1 失敗。副作用:返回""(空)字符串. # 說(shuō)明:返回本地終端綁定配置文名,格式:"xxxx.當(dāng)前系統(tǒng)年月日"。 # 注:返回值更詳細(xì)解釋詳看setBindConfigFIle()函數(shù)說(shuō)明。 # 作者:半點(diǎn)閑 # 開(kāi)始時(shí)間:2011-1-13 17:02 星期四 # 修改時(shí)間:2011-1-20 10:40 星期四 ############################################################ getBindConfigFile() {########################################################### 語(yǔ)句:sed 's//..*$//'# 說(shuō)明:用sed命令把第一個(gè)"."符號(hào)(標(biāo)志著文件擴(kuò)展名)到行尾的所字符刪掉。##########################################################file=$(echo "$1" | sed 's//..*$//')extension=$(echo ".`date +%Y%m%d`")if [ -e "$file$extension" ]thenecho "$file$extension"return 0fiecho ""return 1 } ################################################# # 函數(shù):display() # 參數(shù):$1 擴(kuò)展名為當(dāng)前系統(tǒng)日期的終端綁定配置文件名(全路徑) # 說(shuō)明: # 作者:半點(diǎn)閑 # 開(kāi)始時(shí)間:2011-1-13 3:06 星期四 # 修改時(shí)間: ################################################# display() {################################ 功能:獲取文件記錄數(shù)# 命令:sed 's/^#.*//'# 說(shuō)明:刪除'#'開(kāi)頭的行,所有的字符。# 命令:sed '/^$/d'# 說(shuō)明:刪除所有空行。###############################record=$(sed 's/^#.*//' "$1" | sed '/^$/d' | wc -l)perviously=1 #上次訪問(wèn)記錄的位置too=0 #已閱記錄條數(shù)screen=$(($WINDOW_X - 4)) #一屏最多能顯示的記錄條數(shù)(為底部菜單預(yù)留4個(gè)像素高)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:下一頁(yè) | F:查找指定記錄 | Q:退出 | 輸入:/c"tput setf 7 #前景色:白色read choicecase "$choice"in[nN]) $((too += 1));;[pP])###################################### 說(shuō)明:記錄不夠一屏顯示時(shí),顯示余下的記錄。# 時(shí)間:2011.1.17 星期一 6:00#####################################if [ "$(($record - $too))" -lt "$screen" ]then$((too += $record - $too))else$((too += $screen))fi;;[qQ]) break;;esacdone } ################################################ # 函數(shù):modifyTTY() # 參數(shù):$1 服務(wù)器名稱(chēng);$2 終端綁定配置文件(原始名稱(chēng)); # $3 本地終端綁定配置文件名 # 說(shuō)明:修改“虛擬設(shè)備名稱(chēng)” # 作者:半點(diǎn)閑 # 開(kāi)始時(shí)間:2011-1-19 14:54 星期三 # 修改時(shí)間:2011-1-24 14:30 星期一 ################################################ modifyTTY() {ttyName=$(sed 's/^#.*//' "$3" | sed '/^$/d' | sed -n 1,1p | sed 's/[^a-zA-Z]//g')echo "當(dāng)前虛擬設(shè)備名稱(chēng):/c";tput setf 6;echo "[$ttyName]";tput setf 7echo "是否更改(Y):/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]thenecho "請(qǐng)輸入新的虛擬設(shè)備名稱(chēng):/c";read newName######################### 去掉字符串中的空格、制表符########################newName=$(echo "$newName" | sed 's/[ /t]//g')if [ -n "$newName" ]thenecho "確定將原虛擬設(shè)備名/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 "更改虛擬設(shè)備名成功!"read pauseficd ..fififi } ################################################ # 函數(shù):resetStartTtyNum() # 參數(shù):$1 服務(wù)器名稱(chēng);$2 終端綁定配置文件(原始名稱(chēng)); # $3 本地終端綁定配置文件名 # 說(shuō)明:重置“虛擬設(shè)備”起始號(hào)。 # 作者:半點(diǎn)閑 # 開(kāi)始時(shí)間:2011-1-20 13:20 星期四 # 修改時(shí)間: ################################################ resetStartTtyNum() {################################ ttyName:提取"虛擬設(shè)備"名# ttyNumber:提取"虛擬設(shè)備"起始號(hào)# 1.提取格式為"設(shè)備名+設(shè)備號(hào)"# 2.提取"設(shè)備號(hào)"###############################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 "當(dāng)前虛擬設(shè)備起始號(hào):/c";tput setf 6;echo "[$ttyNumber]";tput setf 7echo "是否重置(Y):/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]thenecho "請(qǐng)輸入新的設(shè)備起始號(hào):/c";read newNumber############### 去掉非數(shù)字字符##############newNumber=$(echo "$newNumber" | sed 's/[^0-9]//g')if [ -z "$newNumber" ]thenecho "[$newNumber]非法!"read pauseelif [ "$newNumber" -lt 0 ]thenecho "[$newNumber]非法!"read pauseelseecho "確定將原設(shè)備起始號(hào)/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 #上次訪問(wèn)記錄的位置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 } ################################################ # 函數(shù):modify() # 參數(shù):$1 服務(wù)器名稱(chēng);$2 終端綁定配置文件(原始名稱(chēng)); # $3 本地終端綁定配置文件名 # 說(shuō)明: # 作者:半點(diǎn)閑 # 開(kāi)始時(shí)間:2011-1-20 17:07 星期四 # 修改時(shí)間: ################################################ 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.修改虛擬設(shè)備號(hào);"tput cup 4 10;echo "------------------------------"tput cup 5 18;echo "請(qǐng)選擇(Q鍵退出):/c";read choicecase "$choice"in[aA]) modifyIP "$1" "$2" "$3";;[bB]) ;;[qQ]) break;;* ) echo "錯(cuò)誤的選項(xiàng)!";read pause;;esacdone } ################################################ # 函數(shù):modifyIP() # 參數(shù):$1 服務(wù)器名稱(chēng);$2 終端綁定配置文件(原始名稱(chēng)); # $3 本地終端綁定配置文件名 # 說(shuō)明:更改終端IP。 # 作者:半點(diǎn)閑 # 開(kāi)始時(shí)間:2011-1-21 15:03 星期五 晴 # 修改時(shí)間: ################################################ modifyIP() {echo "原終端IP:/c";read originalIPecho "新終端IP:/c";read newIPif [ ! $(echo "$originalIP" | grep -E "$REGEX_IP") ]thenecho "原終端IP:[$originalIP]非合法IP格式,請(qǐng)重新輸入!"read pause;returnelif [ ! $(echo "$newIP" | grep -E "$REGEX_IP") ]thenecho "新終端IP:[$newIP]非合法IP格式,請(qǐng)重新輸入!"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 "相對(duì)應(yīng)的記錄:"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 } ############################################################### # 函數(shù):addBind() # 參數(shù):$1 服務(wù)器名稱(chēng);$2 擴(kuò)展名為當(dāng)前系統(tǒng)日期的終端綁定配置文件(全路徑); # $3 終端類(lèi)型 # 說(shuō)明:添加新的綁定到配置文件 # 作者:半點(diǎn)閑 # 開(kāi)始時(shí)間:2011-1-17 7:06 星期一 # 修改時(shí)間:2011-1-25 11:02 星期二 ############################################################### addBind() {echo "添加綁定"echo "終端IP:/c";read ipecho "起始窗口[0-9]:1(默認(rèn))"echo "中止窗口[0-9]:2(默認(rèn))"echo "確定(Y):/c";read choiceif [ "$choice" = "Y" -o "$choice" = 'y' ]thenif [ ! $(echo "$ip" | grep -E "$REGEX_IP") ]thenecho "終端IP:[$ip]非合法IP格式,請(qǐng)重新輸入!"read pause;returnfi############### 獲取文件記錄數(shù)##############record=$(sed 's/^#.*//' "$2" | sed '/^$/d' | wc -l)############### 提取虛擬設(shè)備##############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 "未知終端類(lèi)型!"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 窗口號(hào) 虛擬設(shè)備名稱(chēng)"##################################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########################################### 實(shí)達(dá)記錄格式:"IP.窗口號(hào) 虛擬設(shè)備名稱(chēng) 0 0 0 1"##########################################find=$(grep "/<$ip.1/>" "$fileName")find=$find$(grep "/<$ip.2/>" "$fileName")fiif [ -n "$find" ]thenecho "當(dāng)前配置存在重名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 } ############################################### # 函數(shù):delBind() # 參數(shù):$1 服務(wù)器名稱(chēng);$2 終端綁定配置文件名(原始名稱(chēng)) # $3 終端類(lèi)型 # 說(shuō)明:刪除配置文件中的綁定。 # 作者:半點(diǎn)閑 # 開(kāi)始時(shí)間:2011-1-19 11:07 星期三 # 修改時(shí)間: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格式,請(qǐng)重新輸入!"read pause;returnficd $1fileName=$(getBindConfigFile $2)find=""if [ "$3" = "C" ]then################################### 升騰記錄格式:"IP 窗口號(hào) 虛擬設(shè)備名稱(chēng)"##################################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########################################### 實(shí)達(dá)記錄格式:"IP.窗口號(hào) 虛擬設(shè)備名稱(chēng) 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 } ############### # 程序開(kāi)始 ############### ############### # 獲取"終端類(lèi)型" ############### case "$3"in[Cc]) CT_NAME=$CENTERM_NAME;CT_FILE=$CENTERM_FILE;;[Ss]) CT_NAME=$START_NAME;CT_FILE=$START_FILE;;* ) echo "終端類(lèi)型錯(cuò)誤!";read pause;return esac ################################ # 配置文件不存在時(shí),從遠(yuǎn)程服務(wù)器中下載 ################################ 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 "機(jī)構(gòu)名稱(chēng):/c"tput setf 7 #前景色:白色。echo "$1 /c"tput setf 4 #前景色:紅色。echo "終端類(lèi)型:/c"tput setf 7 #前景色:白色。echo "$CT_NAME /c"tput setf 4 #前景色:紅色。echo "文件名稱(chēng):/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.修改虛擬設(shè)備名稱(chēng);"tput cup 9 23;echo "6.重置虛擬設(shè)備起始號(hào);"tput cup 10 23;echo "7.更新配置到服務(wù)器。"echo "--------------------------------------------------------------------"tput cup 12 24;echo "請(qǐng)選擇(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 "錯(cuò)誤的選項(xiàng)!";read pause;;esac done?
總結(jié)
以上是生活随笔為你收集整理的升腾、实达终端绑定辅助脚本程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: wow宏教程
- 下一篇: simulink中mpc模块怎么使用_s