문제

여러 슬레이브 머신과 함께 분산 응용 프로그램을 실행하는 마스터 머신이 있습니다. 각 슬레이브 머신의 프로세스에는 GUI 및 네트워크 액세스가 있어야합니다 (그런 다음 대화식 프로세스라고 생각합니다). 사용 편의성을 위해 마스터 머신이 해당 슬레이브 머신의 프로세스를 시작/중지 할 수 있다면 좋을 것입니다.

저의 첫 번째 아이디어는 WMI와 Win32_Process 클래스를 사용하여 원격 프로세스를 시작하는 것이었지만 추가 조사에 따라 이런 식으로 시작된 프로세스가 비회적이지 않고 격리되어 GUI를 가질 수 없다는 것이 재 ves니다. 메모에 따르면 Win32_ScheduledJob.create를 사용하여 원격 대화식 프로세스를 만들 수 있지만 피하고 싶은 LocalSystem 계정에서 실행됩니다 (또한 제대로 실행할 수 없었습니다).

이 문제를 해결하는 좋은 방법은 무엇입니까? 어쩌면 적절한 프로세스를 시작하는 도우미 애플리케이션을 시작할 수는 있지만 상당히 더러워 보입니다.

편집 : psexec은 내가 그것을 시도했을 때 정말 어리석은 일이었습니다. Psexec을 더 자세히 살펴보면 원격 시스템에 임시 서비스를 설치하여 응용 프로그램을 시작하는 것 같습니다. 이것이 적절한 신원을 사용하여 대화식 프로세스를 스폰하는 유일한 방법일까요? 노드 설정에 헬퍼 서비스를 포함시켜야합니까? 그러나 그럼에도 불구하고 어떻게 그것과 의사 소통할까요?

도움이 되었습니까?

해결책

Psexec은 Sysinternals 제품군의 일부입니다.

http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

서버가 Windows 2008을 실행중인 경우 사용할 수도 있습니다.

터미널 서비스 원격 앱

다른 팁

"at"명령을 사용할 수 있습니다.

명령 줄을 엽니 다

at /?

터미널로. 한 가지 단점은 원격 시스템의 시간이 귀하의 합리적인 델타 내에 있어야한다는 것입니다. 또한 즉각적이지 않습니다. 원격 스케줄러가 이벤트를 완전히 놓치지 않도록 몇 초를 기다려야합니다.

이와 동등한 WMI가 있으며 다음과 동일한 기본 경고가 있습니다.

목록 3 : Windows Server 2003, Windows XP 및 Win2K SP3 시스템에서 대화식 프로세스를 생성하는 코드

Const INTERVAL = "n"
Const MINUTES  = 1

strComputer = "compaq575"
strCommand  = "calc.exe"

Set objWMIService = _
    GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objScheduledJob = objWMIService.Get("Win32_ScheduledJob")

Set objSWbemDateTime = _
    CreateObject("WbemScripting.SWbemDateTime")
objSWbemDateTime.SetVarDate(DateAdd(INTERVAL, _
    MINUTES, Now()))

intReturnValue = objScheduledJob.Create(strCommand, _
    objSWbemDateTime.Value, False, 0, 0, True, intJobID)
WScript.Echo "Job ID: " & intJobID

취약점으로 인해 다양한 서비스 팩으로 (자신의 서비스를 설치하지 않고) 다른 방법을 사용하는 다른 방법의 대부분은 다양한 서비스 팩으로 꺼 졌다고 생각합니다.

다음 두 게시물은 .NET을 사용하여 원격 프로세스를 실행합니다.

  1. WMI 사용

    http://weblogs.asp.net/steveschofield/archive/2006/06/06/wmi---start-a-process-on-remote-machine-passing-credentials_2e00_.aspx

  2. CodeProject 예제

http://www.codeproject.com/kb/ip/remotingexec.aspx

예제는 사용자 정의 자격 증명으로 실행되며 원격 실행 파일은 Win Form 앱입니다. 도움이 되었기를 바랍니다.

Enire 그룹이 합리적으로 귀하의 통제하에있는 경우 이러한 원격 프로세스를 Windows 서비스로 구현할 수 있습니다. 서비스는 대화식 (기본적으로는 아님) 일 수 있으며 각 Windows PC에서 실행되는 표준 서비스 제어 관리자를 통해 원격으로 제어 할 수 있습니다.

노예 과정에 GUI가 필요한 이유를 물어봐도 될까요? 비슷한 설정이 있지만 초기 설정 중에만 GUI가 필요했습니다.

어쨌든, 여기에 내가 한 일이 있지만 불행히도 그것은 로컬 시스템 계정으로 실행되는 프로세스에 의존합니다.

당신에게 약간의 배경을주기 위해, 내가 배포 해야하는 응용 프로그램은 허드슨 강, 그리고 이것은 Java WebStart 응용 프로그램을 실행하여 배포하는 방법이있는 이전 버전이었습니다. 따라서 GUI가 필요합니다 (최소한 설정 중에 문제 해결을 돕기 위해).

내가 한 일은 Sc.exe (올바르게 얻기 위해 Pita입니다. 다행히도 한 번만 해당)를 사용하여 슬레이브 머신의 서비스로 슬레이브 애플리케이션을 설정했습니다. 라인을 따라 무언가 :

sc.exe create SlaveService binPath= c:\path\to\slave.exe type= interact DisplayName= "The Slave Service"

매개 변수 (binpath = 등)의 공간에 주목하십시오. 또한 "type = interact"를 삭제하고 서비스 콘솔에서 수동으로 변경하는 것이 더 쉽다는 것을 알았습니다.

그런 다음 마스터에서 Sc.exe를 사용하여 서비스를 원격으로 시작합니다.

sc.exe \\slavemachine start SlaveService

프로그램이 슬레이브 머신에서 실행 중인지 확인했습니다.

이제 제 경우에는 초기 문제 해결 외에는 GUI가 필요하지 않았습니다. 모든 것이 제대로 실행 되 자마자 서비스 계정으로 실행되도록 서비스를 구성했지만 더 이상 대화식 모드는 아닙니다.

도움이되기를 바랍니다.

이를 수행하기 위해 필요한 구성 요소가 몇 개 있습니다.

먼저 원격 기계와 통신하는 방법이 필요합니다.

둘째, 원격 머신 청취에 응용 프로그램을 시작할 수있는 무언가가 필요합니다.

무엇보다도 다른 제안은 주어진 솔루션의 제한이 적절한 한 이러한 구성 요소 중 하나 또는 둘 다에 내장 된 것을 사용합니다.

PSEXEC는 가장 유망한 상자 외의 솔루션처럼 보입니다. 그렇지 않으면, TCP/이름의 파이프/뭐든 간단한 메시지를 통해 간단한 메시지를 들으려면 자신의 앱을 롤링 할 수 있으며 적절한 하위 프로세스를 생성 할 수 있습니다. 이를 통해 유일한 경고는 보안에 대해 매우주의를 기울이고 싶다는 것입니다. 특히 기계가 공개적으로 노출 된 경우.

Pstools Suite는 Sysinternals에 의해 개발되었으며 회사가 얼마 후 Microsoft에 의해 구매되었습니다. 이러한 도구를 사용하는 것이 작업을 달성하는 가장 좋은 방법입니다.

응용 프로그램을 대화식으로 실행하는 데 문제가 있다고 언급했습니다. /i 스위치를 사용하여 응용 프로그램을 대화식으로 실행하는 것이 좋습니다. Pstools는 원하는 모든 기능을 제공합니다. 원하는 결과를 얻으려면 스위치를 가지고 놀면됩니다.

나는 당신이 pstools를 사용하는 내 응용 프로그램에서 설명하는 속도를 경험 한 적이 없습니다.

MPICH2 고성능 컴퓨팅 클러스터에 종종 사용되며 원하는 작업을 수행 할 수 있어야합니다. 머신간에 메시지를 전달하는 데 사용하지 않더라도 프로세스 런처를 사용하여 마스터 머신에서 모든 프로세스를 시작할 수 있습니다. 시스템에서 특정 Windows 사용자로 인증하도록 설정할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top