国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

監(jiān)控系統(tǒng)中間結(jié)果的截取技術(shù)研究與實現(xiàn)

2016-12-01 07:35
數(shù)字通信世界 2016年1期
關(guān)鍵詞:重定向命令提示符調(diào)用

金 偉

(上海廣播電視臺技術(shù)運營中心,上海 200072)

監(jiān)控系統(tǒng)中間結(jié)果的截取技術(shù)研究與實現(xiàn)

金 偉

(上海廣播電視臺技術(shù)運營中心,上海 200072)

針對廣電行業(yè)設(shè)備多、類型復(fù)雜、監(jiān)控程序多且難以用一種方法進行監(jiān)控的現(xiàn)狀,本文采用一種變通的方式,利用設(shè)備或系統(tǒng)自身所提供的功能,通過截取技術(shù)獲取的中間運行結(jié)果,將其結(jié)果為我所用。最后,通過程序驗證了該方法的可行性和有效性。

重定向;管道;廣電行業(yè);設(shè)備監(jiān)控;SNMP

1 引言

電視臺的播出系統(tǒng),關(guān)系到政府宣傳的有效性,因而在設(shè)備的選型中,常常會直接采購?fù)暾?、成熟的成套軟件硬件系統(tǒng)。這樣做的缺點是導(dǎo)致各個系統(tǒng)相對獨立,各自為政,系統(tǒng)之間耦合度很低。有時幾套軟件在做相同的工作,卻不能共享結(jié)果,或者將上游設(shè)備的輸出,作為下游設(shè)備的輸入,達(dá)到無縫對接。在電視節(jié)目的監(jiān)控系統(tǒng)的開發(fā)中,上述問題經(jīng)常出現(xiàn)。從編程的角度來看,我們常常會遇到有時所要做的程序功能,別人早已作出來了,而自己目前卻感覺無所下手。如果能有一個辦法,及時獲取某一個程序或某一個系統(tǒng)的輸出,那么監(jiān)控程序就可以事半功倍,達(dá)到良好的效果。

縱觀廣電行業(yè)的設(shè)備系統(tǒng),主要由硬件設(shè)備和所配套的軟件系統(tǒng)組成??紤]到硬件設(shè)備一般都有固定的接口用于通信,所以本文不予考慮;而對于軟件系統(tǒng)中,又分為Linux操作系統(tǒng)和Windows操作系統(tǒng)兩大塊,Linux操作系統(tǒng)中的設(shè)備程序多以后臺方式運行,較少有界面展示和數(shù)據(jù)的輸入輸出,所以下面以Windows操作系統(tǒng)為例進行說明,但所涉及的技術(shù)和原理,同樣適用于Linux,只是所調(diào)用的函數(shù)名,則要查Linux下各開發(fā)庫的使用手冊。

2 原理介紹

在Windows下,任何內(nèi)部命令或程序,都可以通過“命令提示符”的方式運行,并且,支持命令提示符方式運行的程序,也會在同一個命令提示符中,將程序中間運行過程中的輸出內(nèi)容、最終的輸出結(jié)果一起輸出到命令提示符中。用戶通過命令提示符中的文字變化,就知道了當(dāng)前程序的運行狀況。上面的介紹中主要存在兩個問題:一是命令的運行,需要人為手工打開“命令提示符”(即command.com命令),然后再手工輸入要運行的命令;二是程序隨后運行過程輸出的中間結(jié)果和最終結(jié)果,都只是顯示在屏幕上,無法保存到文件中進行分析。

解決這一問題并不難,在一直以來的計算機設(shè)計中,計算機都由“輸入系統(tǒng)”作為數(shù)據(jù)輸入端,“輸出系統(tǒng)”作為結(jié)果的輸出端。其中的“輸入系統(tǒng)”,除了常見的鼠標(biāo)、鍵盤之外,還有就是命令的調(diào)用,對于上述內(nèi)容的輸入,我們可以仿真一個命令提示符,然后“代替”鍵盤輸入要運行的程序名稱,也可以直接調(diào)用操作系統(tǒng)的進程啟動接口,直接運行某個程序;“輸出系統(tǒng)”除了屏幕、打印機之外,還有就是指定到某個文件中。

從監(jiān)控系統(tǒng)的開發(fā)角度來看,上述的問題就可以理解為要獲得一套系統(tǒng)的監(jiān)控結(jié)果,只需要在不涉及版權(quán)和使用權(quán)的前提下,直接調(diào)用對方的程序,然后將其結(jié)果寫入到某個指定的文件中,再通過分析軟件對該文件進行分析,即可以達(dá)到所需的監(jiān)控的效果。

3 運行一個監(jiān)控程序的方法

要想運行一個命令或?qū)⒛骋粋€程序作為一個命令運行有四種方法,每一種的效果不一樣在,編程的復(fù)雜度也不一樣在。

第一個能完成此功能的函數(shù)是system函數(shù),該函數(shù)的優(yōu)點是仿真了上述提到的“命令提示符”,所以函數(shù)在調(diào)用的時候,會自動打開一個DOS命令提示符的窗口,在窗口中執(zhí)行該命令,并將命令結(jié)果顯示在DOS窗口中。這一特性也意味著,只要能在“命令提示符”中完成的操作,該函數(shù)都可以完成。該函數(shù)的原型是:

如果system函數(shù)的返回值非0,則表示程序運行成功,否則表示有錯誤發(fā)生。而命令中的參數(shù)command,是一個字符串指針,該指針指向的地址中可以保存任何一個合法的DOS命令串,該命令串的格式、個數(shù)等屬性取決于該DOS命令本身的要求。

第二個能完成運行程序的函數(shù)是WinExec函數(shù),比起system函數(shù),WinExec函數(shù)有了一定的進步,WinExec函數(shù)同樣是將命令串在DOS窗口中執(zhí)行,但用戶可以選擇該DOS窗口是否顯示。同時該命令主要是完成對可執(zhí)行文件的調(diào)用執(zhí)行操作,要調(diào)用內(nèi)部命令一般不用此命令。該函數(shù)的原型是:

WinExec函數(shù)如果調(diào)用成功,返回一個大于31的值。否則都視為失敗。命令的參數(shù)中,lpCmdLine是一個字符串指針,它的意義與system函數(shù)的command參數(shù)相同。參數(shù)uCmdShow的作用指明DOS命令提示符窗口的顯示方式。調(diào)用者可以指定不顯示,或以最小化、最大化、默認(rèn)方式顯示。

第三個方式就是調(diào)用ShellExecute函數(shù),該函數(shù)的原型為:

該函數(shù)的作用主要是執(zhí)行可執(zhí)行文件,如果調(diào)用成功,返回一個大于32的值。否則就視為失敗,其參數(shù)較多,但對于監(jiān)控程序來說,只需要將其中參數(shù)lpVerb設(shè)置為“Open”,將參數(shù)lpFile設(shè)置為要運行的監(jiān)控程序的文件名即可。其他參數(shù)均可設(shè)置為NULL,以便告訴系統(tǒng)采用默認(rèn)的方式進行運行即可。

第四個方式,也是最適合的方式,就是調(diào)用CreateProcess函數(shù),該函數(shù)的原型是:

若函數(shù)調(diào)用成功,則返回值不為0;若函數(shù)調(diào)用失敗,返回值為0。參數(shù)較多,但其實只有參數(shù)lpCommandLine是最重要的,這就是要執(zhí)行的命令行。其余各參數(shù)使用NULL或默認(rèn)值即可。

4 獲取程序運行結(jié)果的辦法

通過上面的方法,只是完成了讓一個程序運行,無論是在運行過程中是否彈出“命令提示符”,其結(jié)果都只是一閃而過,甚至看不到。要想看到結(jié)果,還需要使用“重定向”技術(shù)和“管道”技術(shù)。

“重定向”(redirect)就是將系統(tǒng)默認(rèn)的輸出端,修改為程序指定的輸出端,將原來輸出向默認(rèn)輸出端的數(shù)據(jù),轉(zhuǎn)向重新定向到指定的輸出端上。如前所述,系統(tǒng)默認(rèn)的輸出端是屏幕,如果通過程序人為將輸出端改為打印機,那么原本要顯示在屏幕上的內(nèi)容,將會通過打印機直接打印出來,俗稱“截屏打印”。只不過,對于監(jiān)控程序來說,是將默認(rèn)的輸出端重新定向到指定的文件中,這樣可以將直接顯示在屏幕上的內(nèi)容,按屏幕上的顯示格式,保存到指定的文件中。

重定向的符號有兩個:一個是重定向“輸入設(shè)備”的,用半角“<”表示;一個是重定向“輸出設(shè)備”的,用半角“>”表示,并且二者可以同時使用。例如某一個程序的名稱為snmputil.exe,程序運行以后,需要依次要讀取的設(shè)備OID,并且將結(jié)果保存到device.txt中,那么可以先將要讀的OID按實際輸入順序事先保存在oid.txt文件中。然后通過“snmputildevice.txt”命令,即可以在自動完成輸入的前提下,將讀取到的結(jié)果,寫入到device.txt文件中。

重定向命令執(zhí)行以后,就可以打開所生成的文件查看結(jié)果了,當(dāng)然也可以編寫一個程序打開這一文件,然后通過對結(jié)果的句法分析,判斷原來程序snmputil的運行效果,或者直接從中提取讀取的值。

重定向命令有一個不足,如果某個程序執(zhí)行時間很長,那么在程序的運行過程中,雖然重定向文件被生成了,但是由于文件處于鎖定狀態(tài),所以此時是無法讀取所生成文件的內(nèi)容的。針對這種情況,如果要實時獲得中間數(shù)據(jù),就需要使用另一種更先進,但也更復(fù)雜的技術(shù),即管道(pipe)技術(shù)。

“管道技術(shù)”是將某一個程序的輸出,通過“管道”作為另一個設(shè)備的輸入。從原理上講,重定向技術(shù)與管道技術(shù)很相似,前者表示的是將某一設(shè)備的輸出由默認(rèn)輸出設(shè)備改為另一個指定的輸出設(shè)備上;后者表示的是將一個設(shè)備的輸出作為另一個設(shè)備的輸入。但管道需要有一個輸出端和一個輸入端,同重定向一樣,二者既可以是設(shè)備,也可以是文件,甚至是操作系統(tǒng)提供的內(nèi)部命令。

在Windows的“命令提示符”中,管道的符號是半角“|”符號。以Windows和Linux中都有,且很常用的ping命令為例,單獨輸入“ping <某IP地址>”會將當(dāng)前目錄下的文件列表顯示于屏幕上,但如果輸入“ping <某IP地址>|more”則表示將列表通過管道發(fā)送到more命令中,而more命令除了將內(nèi)容顯示在顯示器上之外,還要將顯示的內(nèi)容進行分頁,當(dāng)顯示的內(nèi)容超過一頁時,只顯示當(dāng)前頁,當(dāng)用戶按下空格鍵后,顯示下一頁,如此往復(fù),直到全部顯示完。

要完成“重定向”,只要在命令行中,使用重定向的符號即可,但要實現(xiàn)管道,則需要使用函數(shù),編寫程序了,要創(chuàng)建一個管道的函數(shù)為CreatePipe函數(shù),如下所示:

Create Pipe可以創(chuàng)建一個管道,如果功能調(diào)用成功,則返回一個非0值;否則返回0。參數(shù)h Read Pipe指向一個接收讀句柄的指針;參數(shù)hWritePipe指向一個接收寫句柄的指針。參數(shù)nSize用于指定管道的長度。該管道創(chuàng)建完畢后,可以通過ReadFile函數(shù)和WriteFile函數(shù)進行讀寫操作。在用ReadFile函數(shù)讀的時候,只有當(dāng)另有一個進程或線程寫滿了管道,ReadFile函數(shù)才會返回真,并且返回讀到的字節(jié)數(shù);否則返回錯誤。在用WriteFile函數(shù)到管道中,如果管道緩沖區(qū)不滿,則寫操作不會結(jié)束;如果所有字節(jié)寫完之前,管道已滿,則WriteFile函數(shù)無法返回,直到另有一個進程或線程使用ReadFile函數(shù)讀取管道中的內(nèi)容后,使空間可以使用后,WriteFile函數(shù)才能繼續(xù)寫入剩下的字節(jié)。

5 通過程序進行驗證

有了上述基礎(chǔ),就可以將上述技術(shù)融會貫通,結(jié)合使用。在廣電行業(yè)的設(shè)備中,多數(shù)設(shè)備都支持“簡單網(wǎng)絡(luò)管理協(xié)議”(SNM),該協(xié)議的特點就是:每一個設(shè)備都可以指定為一個IP地址,設(shè)備中的每一個獨立的參數(shù),都起一個名字,該名字就是OID值,通過IP地址和OID值,就可以唯一確定一個設(shè)備的具體參數(shù)。對該參數(shù)的操作有“讀”(GET)操作,“讀下一個”(GETNEXT)操作和“寫”(SET)等操作。

在微軟MSDN中,有一個完整的SNMP協(xié)議程序源代碼,編譯后生成文件即為前面提到過的snmputil程序。從命令行的角度,例如要讀到指定IP地址所對應(yīng)的設(shè)備上,指定OID的值,則只要在“命令提示符”中使用“snmputil GET public ”即可。

要完成對該設(shè)備的監(jiān)控,一種辦法就是將每次運行結(jié)果生成到一個文件中,然后對該文件的內(nèi)容進行分析,其核心代碼為:

代碼執(zhí)行結(jié)束后,snmputil的運行結(jié)果會自動保存在Redirect.txt文件中。以供其他程序調(diào)用分析。使用管道方式,雖然程序會較復(fù)雜,但由于省去了中間文件生成環(huán)節(jié),所以效率更高,限于代碼較長,本文中不再贅述。

為了驗證上述理論和功能,本人特在Windows XP操作系統(tǒng)下,使用Visual C++6.0編寫了一個測試程度,通過測試可知,上述方式有效,完全可以嵌入到設(shè)備監(jiān)控程序當(dāng)中,作為一種監(jiān)控方法。通過移植,也不難驗證,該程序及方法,都可以不做任何修改地直接運行在Windows所有其他版本操作系統(tǒng)上,也可以不做修改地直接移植到其他版本Visual C++上。其效果如圖1所示。

圖1 通過截取snmputil工具的輸出對設(shè)備進行監(jiān)控

如圖1所示,snmputil程序本身就支持通過SNMP協(xié)議對設(shè)備進行監(jiān)控的功能。而對于本系統(tǒng)來說,重新編寫一個snmputil程序大可不必,因而就通過上述技術(shù)調(diào)用該程序,并通過對“中間結(jié)果的攔截技術(shù)”對其結(jié)果進行截取,使原本需要“命令行提示符”,由鍵盤輸入的內(nèi)容,改由測試程序的“DOS命令或可執(zhí)行文件”文本框中完成;原本輸出到屏幕的內(nèi)容,也被重定向到程序的“命令執(zhí)行結(jié)果”文本框中。如果將讀取到的結(jié)果,與直接命令行的結(jié)果進行對比,不難發(fā)現(xiàn)二者完全一樣。

6 結(jié)束語

廣電設(shè)備多而雜。如果對所有的設(shè)備的監(jiān)控都從頭開發(fā),不僅工作量巨大,而且也難以確保系統(tǒng)監(jiān)控的準(zhǔn)確無誤。而巧妙地使用系統(tǒng)自身提供的工具,或者是使用已經(jīng)過驗證的程序,借助“他山之石”,達(dá)到節(jié)約成本、加快開發(fā)效率的效果。本文正是基于這一想法,通過軟件開發(fā)中常用的,通過程序函數(shù)調(diào)用的方式,調(diào)用命令行的程序,然后再借助于“重定向技術(shù)”和“管道技術(shù)”,將原本輸出到屏幕上的內(nèi)容,導(dǎo)入到文件中,甚至是另一個直接分析處理的程序中,就可以達(dá)到“可以攻玉”的效果。并且,通過實際的代碼開發(fā),驗證了該方法是可行的,并且是有效的,完全可以應(yīng)用于監(jiān)控類程序的開發(fā)中?!?/p>

[1] 黃可杰,馬莉.Linux環(huán)境下I/O重定向與異步通信的實現(xiàn)[J].計算機應(yīng)用與軟件,2011.28(3)

[2] 付曉波.基于SNMP的數(shù)字電視前端設(shè)備監(jiān)控系統(tǒng)的設(shè)計[J].電視技術(shù),2013.37(23)

[3] 李瑞民.獨辟蹊徑的編程思維——“拿來主義”編程[B].北京:電子工業(yè)出版社,2013.6

“互聯(lián)網(wǎng)+”運維,易諾光纖熔接機品質(zhì)服務(wù)斬獲殊榮

近日,中國通信網(wǎng)絡(luò)運營維護服務(wù)年會在北京舉行,與會者圍繞“互聯(lián)網(wǎng)+”形勢下通信網(wǎng)絡(luò)運維服務(wù)的轉(zhuǎn)型和創(chuàng)新等話題進行深入討論,并開展同期推進活動。易諾儀器在眾多通信企業(yè)中脫穎而出斬獲兩項大獎,即“2014-2015年度通信網(wǎng)絡(luò)運營維護服務(wù)用戶滿意企業(yè)”,同時,易諾儀器(上海)有限公司中國區(qū)總裁車政炫被評為“2015年通信網(wǎng)絡(luò)運營維護服務(wù)年度人物”。

“互聯(lián)網(wǎng)+”形勢下滋生不同網(wǎng)絡(luò)建設(shè)形態(tài),易諾推出View系列產(chǎn)品制勝網(wǎng)絡(luò)建設(shè)運維。View系列單芯熔接機以快速精準(zhǔn)熔接、高效耐用的品質(zhì)在光纖網(wǎng)絡(luò)改造中發(fā)揮極大效用;View系列帶狀光纖熔接機則因芯數(shù)不同為運營商建網(wǎng)帶來更多選擇。如12芯適宜城市大容量環(huán)網(wǎng)布放,4芯適宜廣電FTTH光纖入戶建設(shè)等。近年來城市與農(nóng)村光網(wǎng)同時推進建設(shè),裝維人員需要在各類特殊環(huán)境下施工,View系列光纖熔接機高性價比、高續(xù)航能力和防塵防震等特性則完美經(jīng)受住考驗,為網(wǎng)絡(luò)運維提供保障。

針對光纖熔接機的特殊工作環(huán)境,易諾特設(shè)移動服務(wù)車,上門為客戶實際解決問題,提供多元服務(wù)。今年,易諾服務(wù)車來到黑龍江移動應(yīng)急技能比武、杭州“光翼杯”技能競賽現(xiàn)場,提前為客戶調(diào)試好熔接機與配件,幫助比賽順利進行。易諾服務(wù)車配備精良,隨車工程師在第一時間洞悉客戶需求,為客戶帶來現(xiàn)場搶修、產(chǎn)品維護等服務(wù)。技術(shù)與經(jīng)驗豐富的易諾工程師更定期上門拜訪進行培訓(xùn),以幫助客戶更好使用產(chǎn)品。對于我們的真誠服務(wù),許多客戶欣慰于服務(wù)車的高頻率拜訪與高效解決問題能力,并表示我們的服務(wù)為他們網(wǎng)絡(luò)建工提供極大支持保障。

此外,易諾儀器擁有一套靈活完善的服務(wù)鏈。目前在全國范圍內(nèi)均有固定服務(wù)網(wǎng)點,用戶無論身處何方都可以通過電話、電子郵件、公司網(wǎng)站以及易諾各地區(qū)代理商等不同方式聯(lián)系到就近服務(wù)網(wǎng)點并及時得到回復(fù)。4S移動服務(wù)車為客戶提供產(chǎn)品銷售(Sale)、配件供應(yīng)(Spare part)、售后服務(wù)(Service)和信息回饋(Survey)這樣四位一體的移動服務(wù)模式,方便客戶靈活掌握信息?!肮潭?移動”式服務(wù)體系為客戶帶來更多選擇,也促進了雙方溝通交流。

在服務(wù)中收獲用戶滿意,是我們前行的最大動力。易諾儀器有感于網(wǎng)絡(luò)運營維護服務(wù)之道在通信發(fā)展中起到的重要作用,在今后亦將精益求精,為客戶打造完美服務(wù)品質(zhì)!

Research and Implementation of Interception Technology of Intermediate Results in Monitoring System

Jin Wei
(Shanghai Media Group Technical Center, Shanghai, 200072)

It is difficult to use one method to monitor all the things in Radio and television industry because of huge number of complicated types equipment and monitoring systems. In the essay, we will introduce a new method, which uses interception technology to get intermediate results with the help of functions offered by equipment and system. The feasibility and effect of this method has been verified by the program.

Redirection; Pipe; Radio and television industry; Equipment monitoring; SNMP

10.3969/J.ISSN.1672-7274.2016.01.005

TP31 文獻(xiàn)標(biāo)示碼:B

1672-7274(2016)01-00020-05

猜你喜歡
重定向命令提示符調(diào)用
一條命令恢復(fù)Windows開機F8功能
核電項目物項調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
解決安卓文件夾亂象
讓命令提示符窗口與Windows更融洽
重復(fù)壓裂裂縫重定向的措施研究
4G偽基站的監(jiān)測定位與規(guī)避協(xié)同分析
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
Windows命令模式另類用法
基于馬氏體重定向的鐵磁形狀記憶合金本構(gòu)理論分析