一種基于Curses技術實現跨用戶跨主機管理的方法及系統的制作方法
【專利摘要】本發明涉及一種基于Curses技術實現跨用戶跨主機管理的方法及系統,所述方法包括以下步驟:步驟1,配置多臺主機及用于管理所有主機的運維平臺;步驟2,在各臺主機上配置Curses界面管理工具和expect腳本;步驟3,運維平臺遠程登錄各主機,并通過調用expect腳本進行主機切換;步驟4,運維平臺調用切換到的主機的Curses界面管理工具監控該主機。本發明能夠方便開發、測試、維護人員在多臺主機操作時,進行用戶切換,且基于Curses菜單式界面系統管理,為系統的運營維護提供了圖形用戶界面環境,使得操作更加直觀,方便維護人員更加有效快捷地進行運營維護管理。
【專利說明】-種基于Curses技術實現跨用戶跨主機管理的方法及系 統
【技術領域】
[0001] 本發明涉系統圖形界面管理【技術領域】,特別是涉及一種基于Curses技術實現跨 用戶跨主機管理的方法及系統。
【背景技術】
[0002] 到目前為止,基本上所有的linux、unix廠家都提供了圖形用戶界面環境,linux、 unix中可以使用Qt、GTK+等進行X Window開發。但是在實際工作應用中,使用的最多的 還是UNIX的字符終端環境,一方面UNIX的字符終端環境下的資源消耗比⑶I環境少得多, 另一方面則是由于curses技術的出現。curses技術是利用curses圖形管理類庫,為用戶 人機交互提供更方便快捷的工具,既減少了資源消耗,又提供了圖像管理界面。
[0003] 現有業務路由器系統(SR)、增值業務訂購關系管理系統(VS0P)等,都處于各應用 主機登錄各主機,顯得比較繁瑣,又顯得管理比較混亂,安全性也得不到保證。因此,本發明 提出一種基于Curses技術實現跨用戶跨主機圖形界面管理方法及系統,利用curses技術 開發的桌面化操作界面,更容易地進行人機交互。
【發明內容】
[0004] 本發明所要解決的技術問題是提供一種基于Curses技術實現跨用戶跨主機管理 的方法及系統,用于解決各種軟件系統的跨用戶跨主機圖形界面管理問題。
[0005] 本發明解決上述技術問題的技術方案如下:一種基于Curses技術實現跨用戶跨 主機管理的方法,包括以下步驟:
[0006] 步驟1,配置多臺主機及用于管理所有主機的運維平臺;
[0007] 步驟2,在各臺主機上配置Curses界面管理工具和expect腳本;
[0008] 步驟3,運維平臺遠程登錄各主機,并通過調用expect腳本進行主機切換;
[0009] 步驟4,運維平臺調用切換到的主機的Curses界面管理工具監控該主機。
[0010] 在上述技術方案的基礎上,本發明還可以做如下改進。
[0011] 進一步,所述步驟2中,將expect腳本嵌套在Curses界面管理工具中。
[0012] 進一步,所述步驟2還包括:基于Curses界面管理工具開發srmonitor工具,用于 對各主機進行日常運維管理及實現人機交互操作。
[0013] 進一步,所述步驟3中,運維平臺通過事先編制的遠程登錄腳本登錄到各主機。
[0014] 進一步,所述各主機為應用在業務路由器系統和/或增值業務訂購關系管理系統 中的主機。
[0015] 本發明的技術方案還包括一種基于Curses技術實現跨用戶跨主機管理的系統, 包括多臺主機和用于管理所有主機的運維平臺,且各臺主機上配置Curses界面管理工具 和expect腳本,所述運維平臺用于遠程登錄各主機,并通過調用expect腳本進行主機切 換;所述運維平臺還用于調用切換到的主機的Curses界面管理工具監控該主機。
[0016] 進一步,所述expect腳本嵌套在所述Curses界面管理工具中。
[0017] 進一步,所述Curses界面管理工具中帶有srmonitor工具,用于對各主機進行日 常運維管理及實現人機交互操作。
[0018] 進一步,所述運維平臺帶有事先編制的遠程登錄腳本,用于通過該遠程登錄腳本 登錄到各主機。
[0019] 進一步,所述各主機為應用在業務路由器系統和/或增值業務訂購關系管理系統 中的主機。
[0020] 本發明的有益效果是:本發明能夠方便開發、測試、維護人員在多臺主機操作時, 進行用戶切換,且基于Curses菜單式界面系統管理,為系統的運營維護提供了圖形用戶界 面環境,使得操作更加直觀,方便維護人員更加有效快捷地進行運營維護管理。綜合來說, 本發明實現了在同一臺主機上跨用戶跨主機維護管理軟件系統,實現了產品系統的圖形界 面一點登錄、一點管理、多點正常運行。
【專利附圖】
【附圖說明】
[0021] 圖1為本發明所述基于Curses技術實現跨用戶跨主機管理的方法的流程示意圖。
【具體實施方式】
[0022] 以下結合附圖對本發明的原理和特征進行描述,所舉實例只用于解釋本發明,并 非用于限定本發明的范圍。
[0023] 如圖1所示,本實施例給出了一種基于Curses技術實現跨用戶跨主機管理的方 法,包括以下步驟:
[0024] 步驟1,配置多臺主機及用于管理所有主機的運維平臺;
[0025] 步驟2,在各臺主機上配置Curses界面管理工具和expect腳本;基于Curses界 面管理工具開發srmonitor工具,用于對各主機進行日常運維管理及實現人機交互操作;
[0026] 步驟3,運維平臺遠程登錄各主機,并通過調用expect腳本進行主機切換;
[0027] 步驟4,運維平臺調用切換到的主機的Curses界面管理工具監控該主機。
[0028] 其中,所述步驟2中,將expect腳本嵌套在Curses界面管理工具中;所述步驟3 中,運維平臺通過事先編制的遠程登錄腳本登錄到各主機。
[0029] 對應地,本實施例還給出了一種基于Curses技術實現跨用戶跨主機管理的系統, 包括多臺主機和用于管理所有主機的運維平臺,且各臺主機上配置Curses界面管理工具 和expect腳本,所述運維平臺用于遠程登錄各主機,并通過調用expect腳本進行主機切 換;所述運維平臺還用于調用切換到的主機的Curses界面管理工具監控該主機。該系統與 上述基于Curses技術實現跨用戶跨主機管理的方法的工作原理和具體實施細節相同,這 里不再多述。
[0030] 具體地,所述各主機為應用在業務路由器系統和/或增值業務訂購關系管理系統 中的主機。以業務路由器系統為例,在電信業務路由器平臺實施中,業務路由器是實行雙機 部署的,為了方便維護,運維人員開發了自己的運維平臺,運維平臺可以通過expect遠程 登錄腳本(方便不讓運維人員知曉運營系統的用戶、口令)直接跳轉到業務路由器,進而調 用業務路由器平臺的curses界面化管理工具srmonitor,對業務路由器平臺進行日常運維 管理、監控,這樣就方便了運維操作,實現了一點登錄,多點維護。降低了維護成本。本實施 例的核心在于對Curses界面管理工具的應用,下面給出本實施例在具體實施過程涉及的 相關腳本及程序。
[0031] ( 一)遠程登錄的腳本:telnet_memdb. sh
[0032] # ! /usr/bin/expect
[0033] spawn telnet IP
[0034] expect"login:〃
[0035] send"user\n〃
[0036] expect"Password:〃
[0037] send"passwd\n"
[0038] Interact
[0039] (二)切換腳本調用方式:expect-f腳本名稱
[0040] 為了方便各主機及各用戶進行切換,每臺主機上都需要有跨用戶跨主機切換腳 本。
[0041] (三)Curses界面工具方案
[0042] Curses開發的程序中嵌套跨用戶跨主機管理腳本,即可實現curses界面下的用 戶跨主機管理
[0043] 1、利用curses技術開發srmonitor(SR界面化監控、運維工具),能夠整合SR命令 集,及進行人機交互操作,主要包括以下幾步。
[0044] 1)初始化屏幕
[0045] init_curses ();
[0046] 2)繪制首界面
[0047] 通過 draw_top_win、draw_left_win、draw_right_win、draw_bottom_win 函數來 繪制首頁面。
[0048] 3)執行不同的選項
[0049] 通過上、下、左、右鍵來進而查看不同的選項,通過在底部輸入命令,執行回車,進 而來執行相對應的命令。從而使的命令執行界面化。
[0050] 4)執行界面返回首頁面
[0051] 在執行界面輸入r命令來返回主界面。
[0052] 各頁面之間的切換主要靠擦除和刷新函數來進行。curses庫包含的大量的功能函 數,使的程序模塊化增強,便于菜單和表單的修改,從而實現了高效的網絡管理。
[0053] 本實施例中需要用于的curses庫函數包括以下幾種。
[0054] 1)初始化和重置函數
[0055] 所有curses程序必須以initscr函數開始,以endwin函數結束。
[0056] WINDOW*initscr (void) ;//在一個程序中只調用一次,返回一個指向stdscr結構 的指針,失敗輸出一條診斷信息并使程序結束。
[0057] int endwin (void) ;//成功返回 0K,失敗返回 ERR。
[0058] 2)輸出到屏幕
[0059] 用于刷新屏幕的基本函數,字符類型chtype是比標準的char類型包含更多的二 進制位。實際上是unsigned long類型的一個typedef類型定義。
[0060] int addch (const chtype char_to_add);
[0061] int addchstr (chtype氺const string-to-add);
[0062] int printw(char*format,…);
[0063] int refresh (void);
[0064] int box(WIND0W*win-ptr,chtype vertical_char, chtype horizontal_char);
[0065] int insch (chtype char-to-insert);
[0066] int insertln (void);
[0067] int delch (void);
[0068] int deleteln (void);
[0069] int beep (void);
[0070] int flash (void);
[0071] 3)從屏幕讀取
[0072] chtype inch (void) ;//返回光標當前位置的字符及其屬性。
[0073] int instr (char木string);
[0074] int innstr (char木string,int number_of-characters);
[0075] 4)清除屏幕
[0076] int erase (void) ;//在屏幕位置寫上空白字符
[0077] int clear (void);
[0078] int clrt〇b〇t(V〇id) ;//清除當前光標所在行下面的所有行,包括當前光標所在 行的光標位置右邊直到行尾的內容
[0079] int clrtoeol (void) ;//清除當前光標所在行的光標位置右邊直到行尾的內容。
[0080] 5)移動光標
[0081] int move (int new_y, int new_x);
[0082] int leaveok(WIND0W*window_ptr,bool leave_flag) ;//設置一個標志,用于控 制在屏幕刷新后curses將物理光標放置的位置。
[0083] 6)字符屬性
[0084] 預定義的屬性有:A_BLINK A_B0LD A_DM A_REVERSE A_STAND0UT A_UN DERLINE
[0085] int attron(chtype attribute);
[0086] int attroff (chtype attribute);
[0087] int attrset (chtype attribute);
[0088] int standout (void);
[0089] int standend (void);
[0090] 7)鍵盤的工作模式
[0091] int echo (void);
[0092] int noecho (void);
[0093] int cbreak (void);
[0094] int nocbreak (void);
[0095] int raw (void);
[0096] int noraw (void);
[0097] 8)鍵盤輸入
[0098] int getch (void);
[0099] int getstr (char木string)
[0100] int getnstr (char木string,int number_of-characters);
[0101] int scanw(char*format,…);
[0102] 9)窗口函數
[0103] WIND0W*newwin(int num-of-lines,int num-of-cols,int start_y, int start- x);
[0104] int delwin(WIND0W*window-to-delete);
[0105] 10)通用窗口函數
[0106] int addch (const chtype char);
[0107] int waddch(WIND0W*window-pointer,const chtype char);
[0108] int mvaddch(int y, int x, const chtype char);
[0109] int mvwaddch(WIND0W*window-pointer,int y,int x,const chtype char);
[0110] int printw(char*format,…);
[0111] int wprintw(WIND0W*window-pointer,char*format,…);
[0112] int mvprintw(int y, int x, char^format,...);
[0113] int mvwprintw(WIND0W*window-pointer,int y, int x,char*format,…);
[0114] 11)窗口移動和更新屏幕
[0115] int mvwin (WIND0W*window-to-move,int new-y,int new-x);
[0116] int wrefresh(WIND0W*window-ptr);
[0117] int wclear(WIND0W*window-ptr);
[0118] int werase (WIND0W*window-ptr);
[0119] int touchwin(WIND0W*window-ptr);
[0120] int scrollok(WIND0W*window-ptr,bool scroll-flag);
[0121] int scroll(WIND0W*window-ptr);
[0122] 12)窗口優化屏幕刷新
[0123] int wnoutrefresh(WINDOW*window-ptr);
[0124] int doupdate (void);
[0125] 13)子窗口
[0126] WIND0W*subwin(WIND0W*parent, int num-of-lines, int num-of-cols, int start-y, int start-x);
[0127] int delwin(WIND0W*window-to-delete);
[0128] 14) keypad 模式
[0129] int keypad(WIND0W*window-ptr,bool keypad-on);
[0130] 15)彩色顯示
[0131] bool has-colors (void);
[0132] int start-color (void);
[0133] int init-pair(short pair-number,short foreground,short background);
[0134] int COLOR-PAIR (int pair-number);
[0135] int pair_content(short pair_number,short*foreground,short*backgroun d);
[0136] int init_color(short color-number,short red,short green,short blue);
[0137] 16) pad
[0138] WIND0W*newpad(int number-of-lines,int number-of-columns);
[0139] int prefresh(WINDOW氺pad-ptr,int pad-row,int pad-column,int screen-row- min,int screen-col-min,int screen-row-max,int screen-col-max);
[0140] 以上所述僅為本發明的較佳實施例,并不用以限制本發明,凡在本發明的精神和 原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
【權利要求】
1. 一種基于Curses技術實現跨用戶跨主機管理的方法,其特征在于,包括以下步驟: 步驟1,配置多臺主機及用于管理所有主機的運維平臺; 步驟2,在各臺主機上配置Curses界面管理工具和expect腳本; 步驟3,運維平臺遠程登錄各主機,并通過調用expect腳本進行主機切換; 步驟4,運維平臺調用切換到的主機的Curses界面管理工具監控該主機。
2. 根據權利要求1所述的方法,其特征在于,所述步驟2中,將expect腳本嵌套在 Curses界面管理工具中。
3. 根據權利要求1所述的方法,其特征在于,所述步驟2還包括:基于Curses界面管 理工具開發srmonitor工具,用于對各主機進行日常運維管理及實現人機交互操作。
4. 根據權利要求1所述的方法,其特征在于,所述步驟3中,運維平臺通過事先編制的 遠程登錄腳本登錄到各主機。
5. 根據權利要求1至4中任一所述的方法,其特征在于,所述各主機為應用在業務路由 器系統和/或增值業務訂購關系管理系統中的主機。
6. -種基于Curses技術實現跨用戶跨主機管理的系統,其特征在于,包括多臺主機和 用于管理所有主機的運維平臺,且各臺主機上配置Curses界面管理工具和expect腳本,所 述運維平臺用于遠程登錄各主機,并通過調用expect腳本進行主機切換;所述運維平臺還 用于調用切換到的主機的Curses界面管理工具監控該主機。
7. 根據權利要求6所述的系統,其特征在于,所述expect腳本嵌套在所述Curses界面 管理工具中。
8. 根據權利要求6所述的系統,其特征在于,所述Curses界面管理工具中帶有 srmonitor工具,用于對各主機進行日常運維管理及實現人機交互操作。
9. 根據權利要求6所述的系統,其特征在于,所述運維平臺帶有事先編制的遠程登錄 腳本,用于通過該遠程登錄腳本登錄到各主機。
10. 根據權利要求6至9中任一所述的系統,其特征在于,所述各主機為應用在業務路 由器系統和/或增值業務訂購關系管理系統中的主機。
【文檔編號】H04L29/08GK104111869SQ201410317626
【公開日】2014年10月22日 申請日期:2014年7月4日 優先權日:2014年7月4日
【發明者】彭德 申請人:北京思特奇信息技術股份有限公司