How to detect (from the command line) if a service is available?

  • Thread starter Thread starter Mbene Ovambo
  • Start date Start date
M

Mbene Ovambo

I want to check if a service (in this case: openssh) is available on the local computer.
Normally I could start the service by typing

net start openssh

but this would start the service (if existing). Is there a way to find out
if the service is available without starting it?


Mbene
 
Hello, Mbene:
On Tue, 25 Jan 2005 21:43:04 +0100: you wrote...

MO> I want to check if a service (in this case: openssh) is available on
the
MO> local computer. Normally I could start the service by typing
MO>
MO> net start openssh
MO>
MO> but this would start the service (if existing). Is there a way to find
MO> out if the service is available without starting it?

Use SC.
DESCRIPTION:
SC is a command line program used for communicating with the
NT Service Controller 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
(persistant).
description-----Changes the description of a service.
failure---------Changes the actions taken by a service upon
failure.
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.
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.
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
QueryLock-------Queries the LockStatus for the SCManager Database
EXAMPLE:
sc start MyService



Regards, Paul R. Sadowski [MVP].
 
What about

sc quesy <service_name>

This probably requires windows xp or 2003.


Nicola Attico
 
Mbene said:
I want to check if a service (in this case: openssh) is available on
the local computer. Normally I could start the service by typing

net start openssh

but this would start the service (if existing). Is there a way to
find out if the service is available without starting it?


Mbene
The following should be all on a single line:

net start | find "openssh" && echo.openssh is running || echo.openssh
not running.
 
This assumes that SC.exe is available:

----------------8<----------------
::ChkSrvc.bat
:: Syntax:
:: ChkSrvc servicename
@echo off
if "%1"=="" goto end
sc query %1 | findstr "SERVICE_NAME">nul
if errorlevel 1 goto notavailable
echo Service %1 available
goto end
:notavailable
echo Service %1 Not available
:end
----------------8<----------------


B-Mann
 
This is from http://www.pcstats.com/articleview.cfm?articleid=1494&page=4
Right click on 'My computer' and select 'manage.' From the computer
management window, expand 'services and applications' then click 'services'
to open up the window listing all available services. The ones labeled
'started' are currently running, and the startup type 'automatic' denotes a
service which is started by windows each time the operating system loads.
 
In said:
I want to check if a service (in this case: openssh) is
available on the local computer. Normally I could start the
service by typing

net start openssh

but this would start the service (if existing). Is there a way
to find out if the service is available without starting it?

NET START alone will list running services.
To see all installed services you need a different tool.
SC and SCLIST (Resource Kit) or PSSERVICE (Sysinternals)
come to mind. There may be various scripting language or WMI methods
as well.
 
I want to check if a service (in this case: openssh) is available on the local computer.
Normally I could start the service by typing

net start openssh

but this would start the service (if existing). Is there a way to find out
if the service is available without starting it?

Have you inspected the output of "NET START"?
 
Mbene said:
I want to check if a service (in this case: openssh) is available on the local computer.
Normally I could start the service by typing

net start openssh

but this would start the service (if existing). Is there a way to find out
if the service is available without starting it?

One way is:
net start|find /I "openssh">NUL && echo running ||echo not running

Another one (requiring psservice from www.sysinternals.com ) I posted
here:
http://groups.google.com/[email protected]

HTH
 
psservice from sysinternals.com

C:\temp>psservice query openssh

PsService v2.11 - local and remote services viewer/controller
Copyright (C) 2001-2003 Mark Russinovich
Sysinternals - www.sysinternals.com

This is all that will be returned if the serivce is not available.

Ed
 
I want to check if a service (in this case: openssh) is available on the local computer.
Normally I could start the service by typing

net start openssh

but this would start the service (if existing). Is there a way to find out
if the service is available without starting it?


Mbene


www.sysinternals.com psservice.exe

To find if service installed:
psservice.exe | findstr /i "openssh"

To find if service started:
net start | findstr /i "openssh"

Bart
 
Mbene Ovambo said:
I want to check if a service (in this case: openssh) is available on the
local computer.
Normally I could start the service by typing

net start openssh

but this would start the service (if existing). Is there a way to find out
if the service is available without starting it?


Mbene


If you type "net start" without parameters it will show you all the running
services. So something like this should work:

@Echo Off
SetLocal
Set SERVICENAME=openssh
Rem You will need to use the service description/long name, not the short
name.
Net.exe Start|Find /i "%SERVICENAME%">NUL
If %errorlevel% EQU 0 (
Echo %SERVICENAME% is running.
) Else (
Echo %SERVICENAME% is not running
)
 
Start/Run/type "services.msc" [less the quote markers]/click "OK". This
will open the list of all system services and you can scroll down to what
you seek.
 
Back
Top