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

?

基于Powershell進(jìn)行服務(wù)器遠(yuǎn)程監(jiān)控的MVC5網(wǎng)站研究

2020-04-14 04:54符明
電腦知識(shí)與技術(shù) 2020年4期
關(guān)鍵詞:調(diào)用視圖命令

符明

摘要:隨著學(xué)校的信息化建設(shè)的逐步推進(jìn),各類服務(wù)器和網(wǎng)絡(luò)系統(tǒng)規(guī)模不斷增大,對(duì)服務(wù)器的運(yùn)行維護(hù)也愈發(fā)重要。該文通過將Powershell命令運(yùn)用到NET MVC 5架構(gòu)網(wǎng)站中,來實(shí)現(xiàn)一種遠(yuǎn)程服務(wù)器無須安裝額外軟件即可進(jìn)行服務(wù)器遠(yuǎn)程監(jiān) 控的方法。

關(guān)鍵詞:PowerShell;遠(yuǎn)程;MVC 5;Visual Basic

中圖分類號(hào):TP393

文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2020)04-0007-02

收稿日期:2019-12-05

隨著信息化建設(shè)的快速發(fā)展,各類應(yīng)用系統(tǒng)以及網(wǎng)絡(luò)系統(tǒng)的規(guī)模不斷加大,各種操作系統(tǒng)、數(shù)據(jù)庫、應(yīng)用軟件、中間件的數(shù)量和類型也不斷增多,IT信息系統(tǒng)越來越復(fù)雜,學(xué)校逐漸意 識(shí)到IT運(yùn)維監(jiān)控的重要性。

1 Powershell的簡單介紹

PowerShell是構(gòu)建于.NET上基于任務(wù)的命令行shell和腳本語言。PowerSheU可幫助系統(tǒng)管理員和高級(jí)用戶快速自動(dòng)執(zhí)行用于管理操作系統(tǒng)(Linux、macOS和Windows)和流程的任務(wù)。

一個(gè)校園局域網(wǎng)內(nèi)部有若干WEB.SQL服務(wù)器,利用Invoke-Command命令,在執(zhí)行命令后不保持連接,遠(yuǎn)程主機(jī)上的Power Shell進(jìn)程立即退岀。通過在命令后面添加腳本塊,執(zhí)行后將其推送到目標(biāo)主機(jī)上,然后從目標(biāo)主機(jī)返回結(jié)果。

Windows PowerShell遠(yuǎn)程管理使用WS-Management協(xié)議,Windows PowerShell遠(yuǎn)程處理可以在一臺(tái)或多臺(tái)遠(yuǎn)程計(jì)算機(jī)上運(yùn)行任何Windows PowerShell命令。用戶可以建立持久連接、啟動(dòng)交互會(huì)話并在遠(yuǎn)程計(jì)算機(jī)上運(yùn)行腳本。Invoke-Command可在本地和遠(yuǎn)程計(jì)算機(jī)運(yùn)行,返回包括錯(cuò)誤在內(nèi)的所有信息。

2MVC5的簡單介紹

ASP.NET MVC 5是Microsoft開發(fā)的一種網(wǎng)站應(yīng)用程序框架,是使用“模型Model-視圖View-控制器Controller”設(shè)計(jì)模式構(gòu)建Web應(yīng)用和API的豐富框架。模型Model表示應(yīng)用程序特定方面的狀態(tài)。控制器Controller處理交互并更新模型以反映應(yīng)用程序狀態(tài)的更改,然后將信息傳遞給視圖Viewo視圖View接受來自控制器Controller的必要信息,并呈現(xiàn)用戶界面以顯示該信息。

3?以獲得服務(wù)器CPU負(fù)載為例的實(shí)現(xiàn)

頁面前端釆用JQuery的setlnterval()與$普.getJSON()方法。以10秒為間隔,不刷新頁面獲得所需參數(shù)。

3.1 前端HTML的JavaScript

$(document).ready(function (){

setlnterval(function (){

$ .getJSON(“home/cpuload? ip=yourServerIP&usemame=administrator&password=yourpassword

",function (data){

$("#cpuloading").text(data.cpuloading);

});

},10000)

})

其中:

1)setlnterval(code,millisec[,”lang”])方法可按照指定的周期(以毫秒計(jì))來調(diào)用函數(shù)或計(jì)算表達(dá)式。setlnterval()方法會(huì)不停地調(diào)用函數(shù),直到clearlnterval()被調(diào)用或窗口被關(guān)閉。

2)jQuery.getJSON(url,data,success(data,status,xhr))通過HTTP GET請(qǐng)求載入JSON數(shù)據(jù)。

3.2?前端 HTML

DIV標(biāo)簽中的文本直接由Javascript讀取Json數(shù)據(jù)包不刷新頁面寫入。

3.3?后端MVC Control控制器

代碼釆用Visual Basic.NET調(diào)用系統(tǒng)PowerShell進(jìn)行遠(yuǎn)程控制。網(wǎng)站必須首先調(diào)用PowerShell模塊,才能在項(xiàng)目中運(yùn)行 PowerShell命令。在代碼上中首先調(diào)用如下DLL:

Imports System.Collections.ObjectModel

Imports System.Management.Automation

Imports System.Management.Automation.Runspaces

Function CPULoad(ByVal ip As String,ByVai username As String,ByVai password As String)As JsonResult

'Your Codes Here

Return Json(New With {.cpuloading=cpuLoading),JsonRequestBehavior.AllowGet)

End Function

代碼將返回Json數(shù)據(jù)包給前端頁面JavaScript顯示。

3.4 遠(yuǎn)程獲得Windows和Ubuntu服務(wù)器CPU負(fù)載信息

3.4.1 創(chuàng)建PowerShell遠(yuǎn)程登錄Windows 2016憑證

遠(yuǎn)程服務(wù)器操作系統(tǒng)為Windows 2016,原生PowerShell版 本為5.1。

Dim SecuredPass=New SecureString

For Each c As Char In password

SecuredPass.AppendChar(c)

Next

Dim Credential As PSCredential=New PSCredential(user-name,SecuredPass)

3.4.2 PowerShell 中 Get-WmiObject-Class Win32_Proces-sorlselect LoadPercentage 獲得 Windows 2016 服務(wù)器 CPU信息

PowerShell 中利用 Invoke-Command [[-ComputerName] < String[] >] [-Credential ] [-ScriptBlock] 執(zhí)行遠(yuǎn)程命令o

完成功能代碼如下:

Dim setRemoteRights=True

Dim psi As PowerShell

Dim initial As InitialSessionState=InitialSessionState.Creat-eDefault()

Dim runspace As Runspace 二 RunspaceFactory.CreateRuns-pace(initial)

runspace.Open()

psi=PowerShell .Create

psi.Runspace=runspace

Dim SecuredPass=New SecureString

For Each c As Char In password

SecuredPass.AppendChar(c)

Next

Dim Credential As PSCredential=New PSCredential(user-name,SecuredPass)

myScript="Get-WmiObject-Class Win32_Processorlselect LoadPercentage "

psi.AddStatement。

psi.AddCommand(" Invoke—C ommand ")

psi.AddParameter("ComputerName",ip)

Dim block As ScriptBlock=ScriptBlock.Create(myScript)

psi.AddParameter('*ScriptBlock'*,block)

psi.AddParameter("Authentication","Negotiate")psi.AddParameter("Credential",Credential)

Dim myResult As Collection(Of PSObject)=psi.Invoke

Dim cpuLoading=myResult.FirstQ.Members(" LoadPercentage").Value

runspace.CloseQ runspace.Dispose。

3.4.3 PowerShell 利用 POSH-SSH 執(zhí)行 Bash 命令獲得 Ubuntu 18.04服務(wù)器CPU信息

直到PowerShell 6.0,Microsoft才支持在Linux中直接運(yùn)行 PowerShell命令。PowerShell 5.1 則需要安裝第三方POSH-SSH 模塊,通過SSH協(xié)議在遠(yuǎn)程Linux執(zhí)行Bash命令,以獲得服務(wù)器

CPU負(fù)載信息。Ubuntu服務(wù)器需要安裝SSH Server服務(wù)。

POSH-SSH 中使用 New-SSHSession [-ComputerName] < string[]〉[-Credential] [-Force]建立遠(yuǎn)程連接進(jìn) 程;用 Invoke—SSHCommand [―Sessionld] [—Command] < string>在遠(yuǎn)程進(jìn)程中運(yùn)行Bash命令,并獲得返回信息。Ubuntu 使用Bash命令:top-bnllgrep,Cpu(s),獲得CPU負(fù)載,然后正則 取出想要的信息。

1)配置本地訪問權(quán)限,調(diào)用第三方POSH-SSH模塊

Dim scriptinvoker As Runspacelnvoke=New Runspaceln-voke(runspace)

scriptinvoker.Invoke("Set—ExecutionPolicy —Scope Curren-

tUser Unrestricted")

psi.AddCommand("Import—Module")

psi.AddParameter(”Name”,"Posh-SSH")

2)完整功能代碼如下:

Dim mybash As String=String.Empty

Dim setRemoteRights=True

Dim psi As PowerShell

Dim initial As InitialSessionState=InitialSessionState.Creat-eDefault()

Dim runspace As Runspace=RunspaceFactory.CreateRuns-pace(initial)

runspace.OpenQ

Dim scriptinvoker As Runspacelnvoke=New Runspaceln-voke(runspace)

scriptinvoker.Invoke("Set—ExecutionPolicy —Scope Curren-tUser Unrestricted")

psi=PowerShell.Create

psi.Runspace=runspace

Dim SecuredPass=New SecureString

For Each c As Char In password

SecuredPass.AppendChar(c)

Next

Dim Credential As PSCredential=New PSCredential(username,SecuredPass)

psi.AddStatementQ psi.AddCommand("Import—Module")psi.AddParameter(”Name”,"Posh-SSH")psi.AddStatement()psi.AddCommand("New-SSHSession")psi.AddParameterC'ComputerName",ip)psi.AddParameter(' * Credential'',Credential)psi.AddParameter("Force")psi.AddStatement()

psi.AddC ommand("Invoke—SSHC ommand ")

psi.AddParameter("SessionId",0)psi.AddParameter("Command","top-bnllgrep,Cpu(s)/")Dim myResult As Collection(Of PSObject)=psi.Invoke Dim cpuloding As StringQ=myResult.Last().Members("Out-put").Value

Dim cpuload As String=cpuloding(O)

Dim match As Match=Regex.Match(cpuload,"\d*\.\d",Re-gexOptions.IgnoreCase)

Dim outcpuload=match.Groups(0).Value

runspace.CloseQ

runspace.Dispose。

4 研究結(jié)論

方法優(yōu)點(diǎn):MVC網(wǎng)頁服務(wù)器通過運(yùn)行不同的Powershell和Bash命令就能對(duì)遠(yuǎn)程計(jì)算機(jī)(Windows、Linux、MacOS)進(jìn)行遠(yuǎn)程監(jiān)控。在強(qiáng)大的Jquery第三方圖像控件的支持下,可以圖形化數(shù)據(jù),使得遠(yuǎn)程服務(wù)器無須安裝額外軟件即可被監(jiān)控。

方法缺點(diǎn):無法實(shí)時(shí)監(jiān)控遠(yuǎn)程計(jì)算機(jī)信息。遠(yuǎn)程計(jì)算機(jī)的信息是通過PowerShell對(duì)遠(yuǎn)程計(jì)算機(jī)執(zhí)行命令所獲取。通過對(duì)虛擬機(jī)的觀察,當(dāng)對(duì)遠(yuǎn)程計(jì)算機(jī)命令執(zhí)行設(shè)置刷新時(shí)間為1秒時(shí),則遠(yuǎn)程服務(wù)器CPU負(fù)載將直接上升20%-30%,這個(gè)后果是不合適的。因此設(shè)置一個(gè)適當(dāng)?shù)拿钏⑿滤俣仁潜匾摹?/p>

發(fā)展方向:Microsoft公司已把PowerShell6.0開源,促使應(yīng)用能跨平臺(tái)使用。今后PowerShell將可以在Windows,Linux,MacOS服務(wù)器中發(fā)揮更大的作用。

參考文獻(xiàn):

[1] DonJones,JefferyHick.WindowsPowerShell實(shí)戰(zhàn)指南[M].宋沃劍,譯.北京:人民郵電出版社,2016.

[2] 朱育發(fā).jQuery與jQueryMobile開發(fā)完全技術(shù)寶典[M].北京:中國鐵道出版社,2014.

[3] AdamFreeman.精通ASP.NETMVC5[M].北京:人民郵電出版社,2016.

[通聯(lián)編輯:謝媛媛]

猜你喜歡
調(diào)用視圖命令
只聽主人的命令
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
移防命令下達(dá)后
視圖
Y—20重型運(yùn)輸機(jī)多視圖
SA2型76毫米車載高炮多視圖
基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
這是人民的命令
利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信