Service restart met batch file

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Razer
  • Registratie: Mei 2002
  • Laatst online: 20:55
Korte probleem introductie, een service die op een server draait misdraagt zich totaal willekeurig ééns in de zoveel tijd, waardoor een webserver tijdelijk elke keer niet bereikbaar is. IT verschillende keren er naar gekeken, hebben geen idee. Sterk verouderde applicatie, en ik ben de applicatie beheerd (niet technisch aangelegd in programmeren e.d.). Nu dacht ik via scheduled task een kort scriptje aan te maken die elk half uur 1x draait om te kijken of de betreffende service nog actief, anders restart uitvoeren van de service. Daar het volgende scriptje voor geschreven (met hulp van Google):

@echo off
Rem Look for the Web Server in the list of started services
net start | find /i "Web Server"
Rem if not found, start it and a restart occurred.
if "%errorlevel%"=="1" (
echo Service "Web Server" restarted at %time% on %date% by Script %0>>c:\ServiceRestart.Log
net start "Web Server"
)

No komt het probleem de betreffende service heet "Web Server" maar er is ook nog een service "Web Server on port 96". De eerste "Web Server" is de service die er uit klapt, de tweede blijft gewoon altijd netjes draaien. Maar als de service er nu uitklapt vindt het script nog "Web Server on port 96" en doet die nog niks... Iemand die mijn scriptje zou kunnen aanpassen / suggestie heeft waardoor het wel gaat werken?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 02:16

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Ik zou eerst eens dit proberen voordat ik met batchfiles ging rommelen:

Afbeeldingslocatie: http://tweakers.net/ext/f/fPhtKb1yd1QOb7XRSfUmfcN9/full.png

Verder: Waar hoort mijn topic?
PRG >> WOS

[ Voor 35% gewijzigd door RobIII op 26-02-2014 13:43 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Krypt
  • Registratie: April 2000
  • Laatst online: 06-05 23:58
Mocht bovenstaande niet baten dan zou ik kijken naar het commando "SC" ipv "Net Start" en dan werken met servicenames ipv. display names.

Pvouput live


Acties:
  • 0 Henk 'm!

  • Razer
  • Registratie: Mei 2002
  • Laatst online: 20:55
RobIII schreef op woensdag 26 februari 2014 @ 13:41:
Ik zou eerst eens dit proberen voordat ik met batchfiles ging rommelen:

[afbeelding]

Verder: Waar hoort mijn topic?
PRG >> WOS
Dit staat inderdaad al goed ingesteld, en staan allemaal op Restart Service, maar dat mag helaas niet baten.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 02:16

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Krypt schreef op woensdag 26 februari 2014 @ 13:42:
Mocht bovenstaande niet baten dan zou ik kijken naar het commando "SC" ipv "Net Start" en dan werken met servicenames ipv. display names.
Inderdaad; vooral eens kijken naar sc /query
DESCRIPTION:
        SC is a command line program used for communicating with the
        Service Control Manager and services.
USAGE:
        sc <server> [command] [service name] <option1> <option2>...


        The option <server> has the form "\\ServerName"
        Further help on commands can be obtained by typing: "sc [command]"
        Commands:
          query-----------Queries the status for a service, or
                          enumerates the status for types of services.
          queryex---------Queries the extended status for a service, or
                          enumerates the status for types of services.
          start-----------Starts a service.
          pause-----------Sends a PAUSE control request to a service.
          interrogate-----Sends an INTERROGATE control request to a service.
          continue--------Sends a CONTINUE control request to a service.
          stop------------Sends a STOP request to a service.
          config----------Changes the configuration of a service (persistent).
          description-----Changes the description of a service.
          failure---------Changes the actions taken by a service upon failure.
          failureflag-----Changes the failure actions flag of a service.
          sidtype---------Changes the service SID type of a service.
          privs-----------Changes the required privileges of a service.
          managedaccount--Changes the service to mark the service account
                          password as managed by LSA.
          qc--------------Queries the configuration information for a service.
          qdescription----Queries the description for a service.
          qfailure--------Queries the actions taken by a service upon failure.
          qfailureflag----Queries the failure actions flag of a service.
          qsidtype--------Queries the service SID type of a service.
          qprivs----------Queries the required privileges of a service.
          qtriggerinfo----Queries the trigger parameters of a service.
          qpreferrednode--Queries the preferred NUMA node of a service.
          qrunlevel-------Queries the run level of a service.
          qmanagedaccount-Queries whether a services uses an account with a
                          password managed by LSA.
          qprotection-----Queries the process protection level of a service.
          delete----------Deletes a service (from the registry).
          create----------Creates a service. (adds it to the registry).
          control---------Sends a control to a service.
          sdshow----------Displays a service's security descriptor.
          sdset-----------Sets a service's security descriptor.
          showsid---------Displays the service SID string corresponding to an ar
bitrary name.
          triggerinfo-----Configures the trigger parameters of a service.
          preferrednode---Sets the preferred NUMA node of a service.
          runlevel--------Sets the run level of a service.
          GetDisplayName--Gets the DisplayName for a service.
          GetKeyName------Gets the ServiceKeyName for a service.
          EnumDepend------Enumerates Service Dependencies.

        The following commands don't require a service name:
        sc <server> <command> <option>
          boot------------(ok | bad) Indicates whether the last boot should
                          be saved as the last-known-good boot configuration
          Lock------------Locks the Service Database

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Razer
  • Registratie: Mei 2002
  • Laatst online: 20:55
Krypt schreef op woensdag 26 februari 2014 @ 13:42:
Mocht bovenstaande niet baten dan zou ik kijken naar het commando "SC" ipv "Net Start" en dan werken met servicenames ipv. display names.
Beide zelfde executable alleen andere folder op server "BWService.exe - Webserver"

Acties:
  • 0 Henk 'm!

  • Brahiewahiewa
  • Registratie: Oktober 2001
  • Laatst online: 30-09-2022

Brahiewahiewa

boelkloedig

Kennelijk is dus "DOS" (eigenlijk cmd-prompt) niet in staat om het verschil te zien tussen "Web Server" en "Web Server on port 96". Dus wat je moet doen is zelf op één of andere manier een lijstje me services produceren, daar de juiste keuze uit maken (Web Server ipv Web Server on port 96) en dan dat process killen en opnieuw opstarten

Hoe je dat doet? Persoonlijk zou ik vbScript gebruiken maar met powerShell moet 't ook kunnen en met SC op een command prompt ook wel

QnJhaGlld2FoaWV3YQ==


Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Het probleem is simpelweg die find opdracht. Die gaat inderdaad matchen op elke tekst waar Web Server in voorkomt. Ik zou inderdaad met PowerShell aan de slag gaan. Daarmee zou dit heel simpel moeten zijn. Waarschijnlijk iets als:
code:
1
Get-Service | Where { ( $_.displayname -eq "web server" ) -and ( $_.status -ne "running" ) } | Start-Service

Hier zal vast nog een fout in zitten. Ik heb dit niet getest aangezien ik even geen PC bij de hand heb.

Acties:
  • 0 Henk 'm!

  • Nielson
  • Registratie: Juni 2001
  • Laatst online: 00:00
Je kunt het ook met findstr ipv find proberen, deze heeft wat meer opties. Zou dan zoiets worden:

code:
1
net start | findstr /i /e /c:"Web Server"

Acties:
  • 0 Henk 'm!

  • Razer
  • Registratie: Mei 2002
  • Laatst online: 20:55
Nielson schreef op zondag 02 maart 2014 @ 17:41:
Je kunt het ook met findstr ipv find proberen, deze heeft wat meer opties. Zou dan zoiets worden:

code:
1
net start | findstr /i /e /c:"Web Server"
Super!!!! Dit was de oplossing!!! _/-\o_
Pagina: 1