Linux bashスクリプトを使用してWindowsサービスを開始/停止するにはどうすればよいですか?


3

Windowsサービスを開始/停止するために、SSHサーバーを介してキックオフされるスクリプトを作成します。SSHユーザーは管理者グループの一部です。ただし、スクリプトを実行すると、サービスを開始できないというエラーが表示されます。

管理者権限でスクリプトが開始されるようにするにはどうすればよいですか?Linuxで同様のスクリプトを実行しましたsudo service myservice start/stop。そのようなものが存在する場合、私はWindowsで同等のものを探しています。

私のps1シェルは次のようになります。

function start() { Start-Service MyService // verify service started here }

function stop() { Stop-Service MyService // verify service stopped }

function status() { // Return Running/Stopped for MyService }

LinuxとSSHからどのように実行するかわからない...ユーザーを管理者にするだけでは十分ではありません。環境も昇格させる必要があります。たとえば、コマンドプロンプトを管理者として実行する必要があるため、コマンドプロンプトを開いてnet start <service>と入力するだけでは機能しません。
ケルタリ

お返事ありがとうございます!私はwmi APIの使用を検討しましたが、新しいソフトウェアを環境に導入する必要があるため、保留にしました。対象サービス。Windows / Linux間のSSH接続については、Windows sshサーバーをインストールし、公開キー認証を使用して、ユーザーがLinuxスクリプトを介してログインできるようにしました。
-Byob

明確にするために:サービス制御は、 'sc <query | スタート| stop> MyServiceName '
-Byob

回答:


3

SSHスクリプトにpowershellスクリプトを起動させます。Powershellは、自身を昇格させてから、サービスの停止を開始し、そのステータスを確認できます。

いくつかの擬似コード:

ssh user@server powershell.bat

powershell.batには、サービスで必要なことを行うために必要なすべてのコードが含まれています。


2
こんにちはByob、この回答が正しかった場合、それを正解として受け入れて、解決済みとしてマークしてください。
tbenz9

4

私はあなたがbash / sshを使用したいことを知っていますが、LinuxボックスからWindowsを管理する私の経験で最も簡単な方法はPythonとWMIを使用することです

http://timgolden.me.uk/python/wmi/index.html

http://timgolden.me.uk/python/wmi/cookbook.html

http://timgolden.me.uk/python/wmi/tutorial.html

import wmi

# Open a connection to a remote machine
c = wmi.WMI (
computer="other_machine",
user="you",
password="something"
)

# start the service
c.<service>.StartService ()

これは、BASH / SSHが必要ない場合に知っている最も簡単な方法です。SSHを使用する必要がある場合は、これを実行するマシンにPythonとWMIをインストールする必要があるため、より複雑になります。すべてのマシンに既にインストールされている言語(VBScript、Powershellなど)を使用したい場合があります。また、この方法では、WindowsボックスでWMIサービスが有効になっていることを前提としていますが、一部の管理者はこれを好んでいません。

Linuxボックスは混合環境の管理に最適ですが、ジョブに適したツールを使用してください。ポケットナイフは木を切り倒しますが、木を切り倒すためにチェーンソーが構築されました。


「ポケットナイフは木を切り倒しますが、木を切り倒すためにチェーンソーが作られました」-間違いなく同意
--Byob

1

開始= net rpc service start SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

停止= net rpc service stop SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

ステータス= net rpc service status SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

パスワードに特殊文字が含まれる場合は、バックスラッシュで特殊文字をエスケープします\

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.