Avatar billede renolde_dk Nybegynder
28. oktober 2004 - 10:59 Der er 18 kommentarer og
1 løsning

Kørsel af program på anden computer

Hej

Er det muligt for VBScript at connecte til en remote computer, eksekvere et eksisterende (dos)program på den og returnere outputtet?
Avatar billede ldanielsen Nybegynder
28. oktober 2004 - 11:04 #1
Hvis den anden computer kunne modtage et opkald (fx. via IIS), evt. med nogle parametre, så kunne computer 1 bede den remote'e computer om at gøre det.
Avatar billede renolde_dk Nybegynder
28. oktober 2004 - 12:01 #2
Der er ikke IIS installeret på serveren. Jeg er mere ude efter en løsning ala den måde hvorpå man kan se hvilke services der kører osv. på den remote computer.
Avatar billede ldanielsen Nybegynder
28. oktober 2004 - 12:27 #3
Så er det ikke mig du skal ha fat i
Avatar billede medions Nybegynder
28. oktober 2004 - 16:25 #4
Det kan du ikke gennem VBScript. - prøv at tænkt dig hvor mange viruser der ellers ville være i omløb?? ;o)

//>Rune
Avatar billede tofte Juniormester
28. oktober 2004 - 16:47 #5
du kan bruge noget lignende :

'navnet på computeren som du ønsker at starte
strComputer = "minAndenComputer"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")


'Her skal C:\... bare rettes til det program du vil have startet, hvis det er en mulighed kan du jo bare gemme outputtet i en fil som du har adgang  via computeren du sidder ved. Eks "C:\bat > S:\res.txt"
Error = objWMIService.Create("C:\test.bat", null, null, intProcessID)
If Error = 0 Then
    Wscript.Echo "Programmet blev startet med følgende procesid "& intProcessID & "."
Else
    Wscript.Echo "Programmet kunne ikke startes. Der opstod en fejl: " & Error & "."
End If

Det nemmeste er vel
Avatar billede renolde_dk Nybegynder
29. oktober 2004 - 13:05 #6
Det virker nogenlund. Men ikke helt som jeg vil have det til. Jeg vil meget gerne have teksten returneret.
Scriptet skal kører på computer1.
Scriptet skal oprette en batfil på computer2 som skriver sit output til en textfil. Denne batfil skal køres fra computer1. Denne textfil vil jeg så gerne kunne læse fra computer1.

Jeg er gået lidt i stå med at oprette filen på computer2.
Her er lidt af jeg har lavet. Den opretter en fil lokalt på computer1 i stedet for på computer2.

strComputer = "127.0.0.1"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")

Set objFSO = CreateObject ("Scripting.FilesystemObject")
Set objFile = objFSO.CreateTextFile("c:\ipstatus.bat")
objFile.Write("call ipconfig /all > ipstatus.txt")
objFile.Close

Error = objWMIService.Create("c:\ipstatus.bat", null, null, intProcessID)
Avatar billede tofte Juniormester
29. oktober 2004 - 13:32 #7
Har du adgang til computer2 filer via et share fra 1?
Avatar billede tofte Juniormester
29. oktober 2004 - 13:33 #8
Eller har begge computere evt. adgang til et fællesdrev. Hvorfor opretter du en batfil, findes den ikke i forvejen på computer 2?
Avatar billede renolde_dk Nybegynder
29. oktober 2004 - 13:42 #9
Grunden til at jeg opretter en batfil er at jeg kan på den måde kan oprette et kald til programmet med de parametre som det kræver og bagefter skrive det i en fil. Prøvede at lave et kald fra VBscriptet med alle parametre osv. Det gik ikke så godt. Tænkte at det ville være mere overskueligt at skrive det til en batfil på serveren og bagefter bare kalde batfilen. Og så læse filen remote.

Jeg har adgang til c$ på den anden computer. Kan selvfølgelig få fat i filen på den måde. Men er der ikke en anden måde hvorpå man kan få adgang til filer via VBScript?
Avatar billede tofte Juniormester
29. oktober 2004 - 13:53 #10
har ikke mere tid, tænker lige over det til i morgen
Avatar billede tofte Juniormester
30. oktober 2004 - 16:25 #11
Hvilke informationer er det du skal bruge på computer2, siden du kalder ipconfig. Det kan være der er en nemmere måde at løse problemet på.
Avatar billede renolde_dk Nybegynder
31. oktober 2004 - 12:36 #12
Det er heller ikke ipcongif jeg skal bruge. Det var mere et eksempel på noget man kendte.
Her er den rigtige case:
Computer2 er overvåget med et centralt placeret overvågningsværktøj. For at den kan overvåges er der nogle specielle "overvågningsagenter" der skal køre på computer2.
For at se om de kører eller om de er stoppet kører man en doskommando lokalt på maskinen, som hedder "awservices status". Denne kommando returnerer noget tekst vedr. status på de forskellige agenter.
Jeg prøver på at lave et script som kan gøre dette, remote fra en anden maskine. Dvs. at man ikke behøver at logge på serveren for at checke disse services. (jeg har selvfølgelig admin rettigheder på begge maskiner).
I mit hovedet vil jeg tro at de kune lade sig gøre ved at oprette en bat fil (som genererer en tekstfil med outputtet) remote og eksekverer denne remote. Herefter skulle  det være muligt at læse den fil der er blevet oprettet fra en anden computer.
Men er rimeligt ny mht. VBScripting. Har programmeret i Java før. Derfor er jeg ikke helt sikker på hvilke begrænsninger VBScript har og hvad der vil være den bedeste måde at gøre det på.
Avatar billede tofte Juniormester
31. oktober 2004 - 14:16 #13
Du kan som du selv skriver bare oprette en batfil som skriver outputtet på et share som du har adgang til via computer 1.
Så skal du jo bare kalde batfilen via ovenstående script. Og så læse outputet via stifinder, eller sætte scriptet til at læse outputtet på sharet.
Avatar billede renolde_dk Nybegynder
31. oktober 2004 - 14:20 #14
Nu er mit problem bare at jeg skal have oprettet batfilen fra den anden computer. Og fjernet den igen efter at scritet er kørt. Grunden til dette er at det ikke kun er en computer som dette skal virke på. Det er nærmere 50. Og jeg kan ikke oprette batfilen lokalt på alle serverne.
Derfor ville jeg gerne have scriptet til at oprette batfilen for mig, kører batfilen og derefter hente outputtet fra filen. Når scriptet er kørt vil jeg gene have at filerne bliver slettet, så de ikke ligger på serbene mere.
Avatar billede tofte Juniormester
31. oktober 2004 - 14:59 #15
Hmm, så er jeg bange for, at det ikke lige er mig du skal have fat i. Det lydder som et ret omstændigt projekt.
Avatar billede tofte Juniormester
31. oktober 2004 - 15:39 #16
Fik lige en idé, det kører uden barfiler.

strComputer = "sydbank-8a85fe7"
share="c$"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")

Error = objWMIService.Create("cmd.exe /c awservices status > C:\test3.txt", null, null, intProcessID)
WScript.Sleep 1000
Set objFSO = WScript.CreateObject ("Scripting.FilesystemObject")
set file=objFSO.OpenTextFile("\\"&strComputer&"\"&share&"\test3.txt")
str=file.readAll
file.close
set file = nothing
set objFSO = nothing
WScript.Sleep 1000
Error = objWMIService.Create("cmd.exe /c del C:\test3.txt", null, null, intProcessID)
msgBox str
Avatar billede tofte Juniormester
31. oktober 2004 - 15:41 #17
håber du kan se ideen i det. Ellers må du jo sprørge. Jeg ved ikke hvad du har mulighed for, men her læser jeg output filen via. sharet inden jeg sletter den.
Avatar billede renolde_dk Nybegynder
01. november 2004 - 09:07 #18
Det løser mit problem. Mange tak for hjælpen. Hvis du lige smider et svar får du nogle velfortjente point :)
Avatar billede tofte Juniormester
01. november 2004 - 11:22 #19
Det var heldigt.
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