Avatar billede medusa Nybegynder
11. oktober 2007 - 09:57 Der er 20 kommentarer og
1 løsning

Check om Windows service køre via script

Hej. Er det muligt at tjekke om en windows service er kørende fra notes (feks fra en knap i en mail)??
Jeg har prøvet at køre det fra en shell kommando, men det giver ikke et resultat andet end om Notes har kørt scriptet eller ej så det kan jeg ikke bruge til noget.
Avatar billede jogii Nybegynder
11. oktober 2007 - 10:41 #1
Du siger at du har prøvet shell kommando. Hvordan?

Hvis nu du laver en shell kommando der hedder "NET START", så kommer en liste frem i konsolen. Hvis du skriver "NET START > services.txt", så bliver output overført til filen services.txt. Den fil kan du så via LotusScript åbne og gennemlæse.

Ville det løse dit problem?
Avatar billede medusa Nybegynder
11. oktober 2007 - 10:50 #2
Ok burde have beskrevet det mere detaljeret.
Vores netværks gut gav mig denne line:
SC query ephdxlatservice | FIND /i "RUNNING"

Fra en dosprompt virker det fint, den giver en kode tilbage som fortæller om servicen er kørende eller ej. Da jeg så ville køre dette fra en Notes knap skrev jeg følgende:
result =Shell({cmd /c dir > SC query ephdxlatservice | FIND /i "RUNNING" }, 1)

Men resultatet af det er "33" hvilket betyder Notes har exekveret scriptet korrekt. Ikke lige det jeg havde brug for at vide. Suk!

Har ikke prøvet det "Net start" før. Hvor i linien skulle jeg evt putte det ind ?
Avatar billede jogii Nybegynder
11. oktober 2007 - 15:00 #3
ja, sådan skal det jo være, cmd fejler jo ikke. find fejler ikke. derfor skal kode 33 leveres tilbage.

Prøv at tilføje " > status.txt" til din shell

result =Shell({cmd /c dir > SC query ephdxlatservice | FIND /i "RUNNING"  > status.txt}, 1)

Så dannes der en text-fil, ligesom jeg fortalte før. Størrelsen på denne fil er 0 hvis servicen ikke kører, mens den er ca. 42 bytes når servicen kører.
Avatar billede medusa Nybegynder
11. oktober 2007 - 15:52 #4
No go. Prøvede også at lave en
result = Shell("NET START > services.txt")
Men den virker heller ikke fra Notes. Måske er det et sikkerhedsspørgsmål. Hmmm.
Avatar billede jogii Nybegynder
11. oktober 2007 - 16:25 #5
jamen det virker jo som det skal. Shell-kommandoen genererer jo INGEN fejl. Alt virker. Hverken "NET START" eller "SC QUERY | FIND" fejler. Derfor kan du ikke nøjes med at undersøge result. result vil altid returnere det samme, medmindre din maskine ikke kender kommandoerne FIND, NET eller SC. Hvis du sletter FIND.EXE fra windows\system32 biblioteket, så vil du se at din SHELL returnerer noget andet til din variabel result.  Result vil ikke fortælle dig noget om det konsolprint, som du ser, bare om det lykkedes shell at udføre de angivne kommandoer.

Det er derfor jeg siger du skal "pipe" konsol-output over i en fil, f.eks. status.txt eller services.txt (kald den hvad du vil) og derefter undersøge denne fil.
Avatar billede jogii Nybegynder
11. oktober 2007 - 16:27 #6
Du kender joken, "Operationen lykkedes, patienten er død." Det er sådan cirka hvad du kan få ud af en Shell returkode
Avatar billede medusa Nybegynder
12. oktober 2007 - 08:39 #7
Jeg har opgivet at tjekke på result, som du skriver så giver den jo ikke fejl. Jeg kan bare ikke få en txt fil som output hvis jeg prøver Shell("Net start > services.txt") fra Notes (Knap i en mail).
Avatar billede medusa Nybegynder
12. oktober 2007 - 08:47 #8
Min kollega i USA kan godt....nøj hvor irriterende. Hans teori er at det måske er min adgang i Windows. Troede ellers jeg var administrator, men det må jeg vist dbl tjekke.
Avatar billede jogii Nybegynder
12. oktober 2007 - 09:39 #9
Har du ledt efter filen services.txt på din maskine? Måske ligger den bare ikke der hvor du tror den ligger. Måske skulle du kode en sti ind i kaldet, f.eks.

result = Shell("NET START > c:\temp\services.txt")

Så ved du da hvor den er!
Avatar billede medusa Nybegynder
12. oktober 2007 - 09:47 #10
Nothing, nada, ziltch, zip :-(
Lavede endda en søgning på filnavnet på alle drev. Det må altså være et adgangsspørgsmål, men hvis jeg ikke kan så kan brugerne heller ikke og så virker den løsning ikke.
Patienten er helt klart død!
Avatar billede jogii Nybegynder
12. oktober 2007 - 10:20 #11
Har du prøvet med at placere den et kendt sted, hvor du ved du har adgang? Notes-data? I Notes.ini er der med DIRECTORY variablen angivet, hvor dine Notes-data ligger. Der skal det være muligt at skrive på. Kan det være at dit LotusScript (en agent?) ikke har lov til at skrive til disk eller udføre restricted operations?
Avatar billede medusa Nybegynder
12. oktober 2007 - 10:29 #12
Jeg ved jeg kan skrive til c:\temp for det har jeg benyttet mig af mange gange. Jeg exekver scriptet i en knap i en memo, og siden jeg er manager på min egen mailbox der burde ikke være restriktioner.
Fatter det simpelthen ikke. Meget mærkeligt.
Avatar billede jogii Nybegynder
12. oktober 2007 - 10:33 #13
Bruger du Vista? Det system har det med at skjule alt muligt, siger dem der bruger det.
Avatar billede jogii Nybegynder
12. oktober 2007 - 10:37 #14
nå, nu blev jeg nysgerrig. Jeg kan heller ikke få filen til at manifestere sig. prøver lidt mere
Avatar billede medusa Nybegynder
12. oktober 2007 - 10:49 #15
Nope vi bruger XP Prof.
Avatar billede jogii Nybegynder
12. oktober 2007 - 10:55 #16
Sådan virker det:

result = Shell({cmd /c "NET START > c:\temp\services.txt"})

parameteren 1 til sidst kan du undlade, når du alligevel ikke skal se på resultatet.

Jeg ved ikke hvordan Danske udgaver af SC-kommandoen returnerer info, måske på dansk?

Det kan være at NET START er bedre. Altså noget i stil med

result =Shell({cmd /c "NET START| FIND /i ephdxlatservice  > c:\temp\status.txt"})
Avatar billede jogii Nybegynder
12. oktober 2007 - 10:59 #17
result =Shell({cmd /c "NET START| FIND /i "ephdxlatservice"  > c:\temp\status.txt"})

man skal lige huske de rigtige parenteser
Avatar billede jogii Nybegynder
12. oktober 2007 - 11:00 #18
jeg mener anførselstegn
Avatar billede medusa Nybegynder
12. oktober 2007 - 11:17 #19
Yes !! I love you jogii-bear. =P

Så er det kun lige at tjekke om txt filen er tom eller ej. Hvor svært kan det være ?!?
Giv et svar, så får du dine fuld fortjente point.
Avatar billede jogii Nybegynder
12. oktober 2007 - 12:58 #20
Så vil jeg gøre et forsøg, når nu du er så sød :-)

    result =Shell({cmd /c "NET START| FIND /i "ephdxlatservice"  > c:\temp\status.txt"})
    result = Filelen ( "c:\temp\status.txt" )
    Print result

Det er ikke altid at jeg ser filstørelsen er 0. Men prøv dig frem. Det burde virke.
Avatar billede medusa Nybegynder
12. oktober 2007 - 13:40 #21
Benytter mig af NotesStream til at tjekke filen. Det virker fint.

Tusind tak for hjælpen. Go weekend.
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
Computerworld tilbyder specialiserede kurser i database-management

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



IT-JOB