Avatar billede md_craig Nybegynder
08. marts 2004 - 23:06 Der er 8 kommentarer og
2 løsninger

Server Statistik og System info gennem ASP ? evt. med ASUS Probe

Ja, Skal have fat i mulighederne for at udhente informationer om:

Diskforbrug.
Ram forbrug.
Virtuel hukommelse
CPU'er
Ram
Logs
Temperaturer
CPU Hastigheder
Evt. Bundkort...

Altså kort og godt alt det system info man kunne tænke sig af få fat i...
Avatar billede dk_akj Nybegynder
09. marts 2004 - 08:55 #1
Prøv lige dette script

//akj

<%

Response.Buffer = True
Response.AddHeader "cache-control", "private"
Response.AddHeader "pragma", "no-cache"
Response.ExpiresAbsolute = #January 1, 1990 00:00:01#
Response.Expires=0
 

Const sT1 = "<td align=left class=clsFieldLabel nowrap>"
Const sT2 = "<td align=right class=clsBodyText nowrap>"
Const sTable = "<table border=0 width='90%' cellspacing=0 cellpadding=0>"
Const sPgName = "/myprotectedfolder/WMI.asp"

Sub GetServerDetails()
    Dim oWMI
    Dim sURL
    Set oWMI = getObject("winmgmts://pcakjw2k")

    if request.queryString("action") = "" then
        Call WriteHTMLHeader("30",sPgName)
        Call WriteServerMemory(oWMI)
        Call WriteHTMLFooter()
    else
        Call WriteHTMLHeader("10",sPgName)
    Call ToggleService("10",oWMI)
        Call WriteHTMLFooter()
    end if

    Set oWMI = nothing

End Sub

Sub ToggleService(sSeconds,oWMI)

Dim nReturn
    Dim sAction
    Dim sService
    Dim oWMIServices
    Dim oWMIService
    Dim sTD
 
sAction = request.queryString("action")
sService = request.queryString("service")

    sTD = "<tr><td align=center class=clsBodyText>"
   
  With Response

              .write "<table align=center border=0 cellspacing=0 cellpadding=0 width='80%'>"
              .write "<tr><td><br></td></tr>"
              .write "<tr><td><br></td></tr>"
              .write "<tr><td><br></td></tr>"
              .write "<tr><td align=center class=clsLabelHeading>Attempting to " & sAction & " the " & sService & " service...</td></tr>"
              .write "<tr><td><br></td></tr>"

set oWMIServices = oWMI.execQuery("select * from win32_service where name='" & sService & "'")

for each oWMIService in oWMIServices

    Select Case sAction
              Case "start" :  nReturn = oWMIService.startService
      Case "stop" :  nReturn = oWMIService.stopService
End Select

Select Case nReturn
      Case 0 : .write sTD & "The request was accepted and is being carried out.</td></tr>"
  Case 2 : .write sTD & "You do not have sufficient access privileges to execute this command.</td></tr>"
  Case 3 : .write sTD & "The service cannot be stopped because dependent services are still running.</td></tr>"
  Case 7 : .write sTD & "The service did not respond to the start request within the timeout period.</td></tr>"
      Case else: .write sTD & "Err Number:?" & nReturn & " occured.  Please see MSDN Documentation for details.</td></tr>"
End Select

          .write "<tr><td><br></td></tr>"
          .write sTD & "You will automatically be returned to the <a href=" & sPgName & " class=linkroll >Services Table</a> in "
          .write sSeconds & " seconds.</td></tr>"

next

        .write "</table>"
    End With

Set oWMIServices = nothing
Set oWMIService = nothing

end sub

Function GetWMIDate(sVal)

        Dim YY
        Dim MM
        Dim DD
        Dim hh
        Dim mi
        Dim ss

        YY = Trim(Mid(sVal,1,4))
        MM = Trim(Mid(sVal,5,2))
        DD = Trim(Mid(sVal,7,2))
        hh = Trim(Mid(sVal,9,2))
        mi = Trim(Mid(sVal,11,2))
        ss = Trim(Mid(sVal,13,2))

        GetWMIDate = MM & "/" & DD & "/" & YY & "  " & hh & ":" & mi & ":" & ss
End Function


Function SetBytes(Bytes,fKB)

if fKB=True then Bytes = Bytes * 1024

If Bytes >= 1073741824 Then
    SetBytes = FormatNumber((Bytes / 1024 / 1024 / 1024),2,,-1,-1) & " GB"
ElseIf Bytes >= 1048576 Then
    SetBytes =  FormatNumber((Bytes / 1024 / 1024),2,,-1,-1) & " MB"
ElseIf Bytes >= 1024 Then
    SetBytes = FormatNumber((Bytes / 1024),2,,-1,-1) & " KB"
ElseIf Bytes < 1024 Then
    SetBytes = Bytes & " Bytes"
End If

End Function



Sub WriteServerMemory(oWMI)

        Dim oTmp
        Dim oCtrl
        Dim sTotMemory
        Dim sSrvAction
     
        on error resume next

        With Response

                .write sTable

                Set oTmp = oWMI.InstancesOf("win32_computersystem")
 
                For Each oCtrl in oTmp
                      sTotMemory = oCtrl.totalphysicalmemory
                Next
 
                Set oTmp = nothing

                set oTmp = oWMI.InstancesOf("win32_operatingsystem")
 
                For Each oCtrl in oTmp
                   
                      .write "<tr><td align=center colspan=2 class=clsLabelHeading><u>Server Status</u></td></tr>"
                      .write "<tr><td align=center colspan=2 class=clsBodyText>" & Now() & "</td></tr>"
                      .write "<tr>" & sT1 & "<br></td>" & sT2 & "</td></tr>"
                      .write "<tr>" & sT1 & "Service Pack</td>" & sT2 & oCtrl.csdversion  & "</td></tr>"
                      .write "<tr>" & sT1 & "Last Reboot</td>" & sT2 & GetWMIDate(oCtrl.lastbootuptime)  & "</td></tr>"
                      .write "<tr>" & sT1 & "<br></td>" & sT2 & "</td></tr>"
                      .write "<tr>" & sT1 & "Total Physical Memory</td>" & sT2 & SetBytes(sTotMemory,false)  & "</td></tr>"
                      .write "<tr>" & sT1 & "Free Memory</td>" & sT2 &  SetBytes(oCtrl.freephysicalmemory,true)  & "</td></tr>"
                      .write "<tr>" & sT1 & "Total Virtual Memory</td>" & sT2 & SetBytes(oCtrl.totalvirtualmemorysize,false)  & "</td></tr>"
                      .write "<tr>" & sT1 & "Free Virtual Memory</td>" & sT2 & SetBytes(oCtrl.freevirtualmemory,false) &"</td></tr>"
                      .write "<tr>" & sT1 & "# Processes Running</td>" & sT2 & oCtrl.numberofprocesses  & "</td></tr>"
                     
                Next

                Set oTmp = nothing

              Set oTmp = oWMI.InstancesOf("win32_logicaldisk")
 
                For Each oCtrl in oTmp

                      if oCtrl.drivetype = 3 then
                        .write "<tr>" & sT1 & "<br></td>" & sT2 & "</td></tr>"
                        .write "<tr>" & sT1 & "Drive</td>" & sT2 & oCtrl.name  & "</td></tr>"
                        .write "<tr>" & sT1 & "Label</td>" & sT2 & oCtrl.volumename  & "</td></tr>"
                 
                        .write "<tr>" & sT1 & "File System</td>" & sT2 & oCtrl.FileSystem  & "</td></tr>"
                        .write "<tr>" & sT1 & "File System Size</td>" & sT2 & SetBytes(oCtrl.size,false) & "</td></tr>"
                        .write "<tr>" & sT1 & "Free Disk Space</td>" & sT2 & SetBytes(oCtrl.freespace,false)  & "</td></tr>"
                   
                      end if

                Next

                Set oTmp = nothing

                Set oTmp = oWMI.InstancesOf("win32_process")

                .write "<tr>" & sT1 & "<br></td>" & sT2 & "</td></tr>"
           
                .write "<tr><td align=center colspan=2 class=clsLabelHeading><u>Processes</u></td></tr>"
                .write "<tr><td align=center colspan=2 class=clsBodyText>" & Now() & "</td></tr>"
                .write "<tr>" & sT1 & "<br></td>" & sT2 & "</td></tr>"

                .write "<tr><td colspan=2 align=center>"
                .write "<table border=0 cellspacing=1 cellpadding=1 width='100%'>"
                      .write "<tr>"
                      .write "<td align=left class=clsFieldLabel><u>Name</u></td>"
                      .write "<td align=left class=clsFieldLabel><u>FileName</u></td>"
                      .write "<td align=right class=clsFieldLabel><u>Memory</u></td>"
                      .write "</tr>"
                      .write "<tr>" & sT1 & "</td>" & sT2 & "</td></tr>"
               
                For Each oCtrl in oTmp
                      .write "<tr>"
                      .write sT1 & oCtrl.Name & "</td>"
                      .write "<td align=left class=clsBodyText >" &  oCtrl.executablePath & "</td>"
                      .write "<td align=right class=clsBodyText >" &  SetBytes(oCtrl.WorkingSetSize,false)  & "</td>"
                      .write "</tr>"
                Next

                .write "</table>"
                .write "</td></tr>"

                Set oTmp = nothing


 
                Set oTmp = oWMI.InstancesOf("win32_service")
 
                        .write "<tr><td colspan=2>"
                        .write "<table border=0 cellspacing=2 cellpadding=2>"
                        .write "<tr><td colspan=6><br></td></tr>"
                        .write "<tr><td align=center class=clsLabelHeading colspan=6><u>Active Services</u></td></tr>"
                        .write "<tr><td align=center class=clsBodyText colspan=6>" & Now() & "</td></tr>"
                        .write "<tr><td colspan=6><br></td></tr>"
                        .write "<tr>"
                        .write "<td align=left class=clsFieldLabel nowrap><u>Display Name</u></td>"
                        .write "<td align=left class=clsFieldLabel nowrap><u>State</u></td>"
                        .write "<td align=left class=clsFieldLabel nowrap><u>Start Mode</u></td>"
                        .write "<td align=left class=clsFieldLabel nowrap><u>Service Type</u></td>"
                        .write "<td align=left class=clsFieldLabel nowrap><u>Status</u></td>"
                        .write "<td align=left class=clsFieldLabel nowrap><u>Start Name</u></td>"
                        .write "</tr>"
                        .write "<tr><td align=left class=clsFieldLabel colspan=6></td></tr>"

                      For Each oCtrl in oTmp
           
                        sSrvAction = "start"
                        if ucase(oCtrl.State) = "RUNNING" then sSrvAction = "stop"

                        .write "<tr>"
                        .write "<td align=left class=clsBodyText>" & oCtrl.DisplayName  & "</td>"
                       
                        .write "<td align=left class=clsFieldLabel>"
                        .write "<a href=" & sPgName & "?action=" & sSrvAction & "&service=" & oCtrl.Name  & " class=linkroll>" & oCtrl.State & "</td>"
                     
                        .write "<td align=center class=clsBodyText>" & oCtrl.StartMode  & "</td>"
                        .write "<td align=center class=clsBodyText>" & Replace(oCtrl.ServiceType,"Process","")  & "</td>"
                        .write "<td align=center class=clsBodyText>" & oCtrl.Status  & "</td>"
                        .write "<td align=left class=clsBodyText>" & oCtrl.StartName  & "</td>"
                        .write "</tr>"
                   
                      Next

                        .write "</table>"
                        .write "</td></tr>"
                Set oTmp = nothing
 
                .write "</table>"

        End With
   
End Sub 

Sub WriteHTMLHeader(sSeconds,sURL)

        With Response
                .write "<HTML><meta http-equiv=refresh content='" & sSeconds & "; url=" & sURL & "'>"
                .write "<BODY><style type=text/css>"
                .write "TD.content { BACKGROUND-COLOR: #ffffff }"
                .write "    .clsBodyText { FONT-WEIGHT: normal; FONT-SIZE: 8pt; FONT-FAMILY: Verdana; font-style: normal  } "
                .write "  .clsFieldLabel {FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: Verdana; } "
                .write "  .clsLabelHeading{FONT-WEIGHT: bold;FONT-SIZE: 12pt;COLOR: black; FONT-FAMILY: Verdana;} "
                .write "  .linkroll { font-family:Arial; font-size:8pt; font-style:normal; font-weight:bold; letter-spacing:normal; "
                .write "                text-decoration:none; text-transform:none; color:#858BFD; }  "
                .write "  A.linkroll:hover { font-weight:bold;    color:black }</style>"
        End With

End Sub

Sub WriteHTMLFooter()
      response.write "</BODY></HTML>"
End Sub

Call GetServerDetails()


%>
Avatar billede md_craig Nybegynder
09. marts 2004 - 14:01 #2
Nu har jeg bare lige hurgtigt kopieret det direkte ind her til morgen...
Men det virker tilsyneladende ikke...

Kræver det nogle specielle komponenter eller noget ???
Jeg skal hente et sted fra..?

Og da jeg ikke lige har læst den i gennem, så vil jeg høre om du har den liggende et sted, hvor jeg kan se det ???
Avatar billede md_craig Nybegynder
09. marts 2004 - 14:05 #3
Det må forresten også godt være ASP.NET hvis det er...
Avatar billede dk_akj Nybegynder
10. marts 2004 - 10:47 #4
Du skal lige rette servernavnet i denne linie:
    Set oWMI = getObject("winmgmts://pcakjw2k")

//akj
Avatar billede KingMedia Novice
10. marts 2004 - 18:40 #5
Jeg følger lige med her :o)

Jeg har selv lige prøvet, men scriptet fejler på min IIS

Set oWMI = getObject("winmgmts://localhost/")

den er go nok, men den fejler stadig i linie 18 ? (ovenstående linie)

/Mads
Avatar billede dk_akj Nybegynder
10. marts 2004 - 20:30 #6
din server hedder garanteret ikke localhost.

Du skal være det navn serveren har på domænet.

//akj
Avatar billede KingMedia Novice
10. marts 2004 - 20:35 #7
som sagt.. jo .. min server hedder localhost (gør den altid som default) ;o)

Scriptet fejler stadig...
Avatar billede KingMedia Novice
17. april 2004 - 10:28 #8
Husk at lukke spørgsmålet hvis ikke der er kommet noget brugbart svar :o)

/Mads
Avatar billede md_craig Nybegynder
17. april 2004 - 20:51 #9
svar
Avatar billede md_craig Nybegynder
17. april 2004 - 20:51 #10
Fik det aldrig til at virke 100% men partielt.. derfor deler jeg point...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester