王秀茹 賈敏 戴堃
摘 要:D5000系統(tǒng)平臺是目前電力行業(yè)采用的先進調(diào)度主站系統(tǒng),在實際使用過程中,由于D5000系統(tǒng)基于Linux系統(tǒng)為平臺,有大量操作需要在命令行方式下進行,對維護人員的專業(yè)素質(zhì)有較高要求,本文通過將各種命令制作成Shell腳本程序等方法來簡化命令行環(huán)境下的操作,為維護人員快速簡便維護提供了一種方式。
關(guān)鍵詞:電力系統(tǒng);D5000;Shell
D5000系統(tǒng)平臺采用先進的軟件開發(fā)技術(shù),具有標(biāo)準(zhǔn)、開放、可靠、安全和適應(yīng)性強等特點,在實際使用過程中,大量系統(tǒng)維護操作需要在命令行方式下完成,本文通過將各種命令制作成Shell腳本程序等方法來簡化命令行環(huán)境下的操作,為維護人員快速簡便維護工作提供了一種方式。
1 D5000系統(tǒng)結(jié)構(gòu)
D5000運行于國產(chǎn)Linux內(nèi)核的操作系統(tǒng)之上。Linux是在GUN公共許可權(quán)限下符合POSIX標(biāo)準(zhǔn)的操作系統(tǒng),Linux是一種類似UNIX的操作系統(tǒng),具有和UNIX類似的文件系統(tǒng)、用戶接口。
2 標(biāo)準(zhǔn)Linux命令
2.1 Linux命令
Linux命令是很重要的工具,所謂命令,是我們在命令行輸入的一串字符。Shell負責(zé)理解并執(zhí)行這些字符串。Linux系統(tǒng)將命令行分成3個字段:命令名、命令選項和命令參數(shù)。以ls命令為例,“sy1-wh1:/home/d5000/suqian/data/screen_save # ls -l \Desktop”。ls:命令名,-l:命令選項,\Desktop:命令參數(shù)。
2.2 Shell簡介
Shell本身是一種用C語言編寫的程序,從用戶的角度來看,Shell是用戶與Linux操作系統(tǒng)溝通的橋梁。用戶既可以輸入命令執(zhí)行,又可以利用Shell腳本編程,完成更加復(fù)雜的操作。Shell種類眾多,常見的有:Bourne Shell、Bourne Again Shell、C Shell、K Shell等,在D5000系統(tǒng)中,默認使用的是Bourne Again Shell。
以導(dǎo)出數(shù)據(jù)庫中某一變電站信息表的操作為例。操作步驟如下:
從數(shù)據(jù)庫中找出“**變**表”,保存顯示內(nèi)容,插入U盤,在Shell中輸入命令拷貝內(nèi)容至U盤
sy1-wh1:/home/d5000/suqian/data/screen_save % su
口令:
sy1-wh1:/home/d5000/suqian/data/screen_save # fdisk -l
sy1-wh1:/home/d5000/suqian/data/screen_save # mount /dev/sde1 /mnt
sy1-wh1:/home/d5000/suqian/data/screen_save # cp 眾興變遙測表 /mnt
sy1-wh1:/mnt # umount /mnt
可以看出,一個簡單的文件拷貝至U盤的過程在D5000系統(tǒng)中都需要進行如此煩瑣的操作。所以,通過Shell編程對D5000系統(tǒng)的各項操作過程進行自動化是必要且行之有效的。
2.3 Shell腳本
Shell的一個重要特性是它自身是一個解釋型的程序設(shè)計語言,它會解釋并執(zhí)行命令提示符下輸入的命令。要多次執(zhí)行一組命令,可以將這組命令放在一個命令文件中,然后可以像Linux系統(tǒng)提供的其他程序一樣執(zhí)行這個文件,這個命令文件就叫作Shell腳本。為了讓Shell能讀取并執(zhí)行Shell腳本,Shell腳本的文件權(quán)限必須設(shè)置為可讀和可執(zhí)行。
2.4 Shell腳本格式
Shell腳本以“#!/bin/sh”開始,符號“#!”用來告訴系統(tǒng)它后面的參數(shù)是用來執(zhí)行該文件的程序。當(dāng)編輯好腳本時,如果要執(zhí)行該腳本,還必須使其可執(zhí)行。要使腳本可執(zhí)行:chmod +x filename 然后,可以通過輸入:sh+filename 來執(zhí)行腳本。
3 D5000命令輸入的簡化
由上可知,通過Shell腳本編程可以將D5000系統(tǒng)常用到的命令行操作制作成腳本文件形式保存在計算機上,待需要使用時直接調(diào)用該腳本文件即可。以U盤拷貝為例,寫成Shell腳本文件部分內(nèi)容如下:
#!/usr/bin/expect
spawn $env(SHELL)
expect -exact "http:// sy1-wh1:/home/d5000/suqian % "
send -- "data\cd screen_save\r"
send -- "su\r"
expect -exact "su\r\r
口令:"
send -- "root\r"
send -- "fdisk -l\r"
send -- "mount /dev/sdd1 /mnt\r"
send -- "cp 眾興變遙測表 /mnt\r"
普通Shell命令可以實現(xiàn)簡單的控制流功能,如循環(huán)、判斷等。但是對于需要交互的場合則必須通過人工來干預(yù),有時候我們可能會需要實現(xiàn)和交互程序如telnet服務(wù)器;輸入用戶名、密碼等進行交互的功能。而expect就使用來實現(xiàn)這種功能的工具。這里我們使用expect制作腳本文件,從而實現(xiàn)了自動輸入用戶名密碼的交互功能。
4 結(jié)論
通過現(xiàn)場實際使用數(shù)月的反饋信息,在不影響D5000系統(tǒng)安全性的前提下,通過將D5000常用命令行操作制作成腳本文件的方式,可以較好地簡化自動化運維人員的工作負擔(dān),提高工作效率,由于Linux系統(tǒng)的特點,不同腳本文件可以互相套用,幾個小簡單的腳本程序可以通過組合成為一個復(fù)雜的腳本程序,自動完成較復(fù)雜的任務(wù)。通過腳本程序完成的操作,可以減少人為輸入命令錯誤的概率,減少重復(fù)勞動,有利自動化運維人員將更多精力放在運維工作上。
參考文獻:
[1]D.坦思.LINUX與UNIX Shell編程指南[M].機械工業(yè)出版社,2000.
[2]Matt Welsh,Matthias Dalheimer.LINUX權(quán)威指南[M].中國電力出版社,2000.
作者簡介:
王秀茹(1976-),女,本科,高級工程師,大二次設(shè)備專職,主要研究方向:電力系統(tǒng)自動化;賈敏(1983-),男,本科,工程師,主要研究方向:電力系統(tǒng)繼電保護及自動化;戴堃(1984-),女,本科,工程師,自動化專職,主要研究方向:電力系統(tǒng)自動化。