2014-02-12 1 views
2

NRPE_NT 데몬이있는 MS Windows Server 2008 64 비트에 설치된 powershell nagios 스크립트에 문제가 있습니다.

$USER1$/check_nrpe -H $HOSTADDRESS$ -t 60 -c check_files -a $ARG1$ 
: 나는 다음과 같이 다시 시작 NRPE_NT 서비스를했습니다 콘솔에 명령을 선언 제한

로 ExecutionPolicy를 설정 한

command[check_files]=cmd /c echo C:\nrpe\libexec\check_file.ps1 $ARG1$; exit($lastexitcode) | powershell.exe -command - 

:

는이 같은 명령을 선언했습니다

이제 로컬로 실행하면 제대로 작동합니다.

C:\>cmd /c echo C:\nrpe\libexec\_file.ps1 C:\nrpe; exit($lastexitcode)| powershell.exe -command - 
No file/s present with this string 
내가 check_nrpe하여 실행하면

는하지만 난이 출력 나타납니다

를 '-'를 -Command 매개 변수로 지정된 : -Command에 대한 다른 인수가 허용되지 않습니다. 디버그 모드

, NRPE.log에 난이 볼 수

실행 명령을 cmd/C 에코 C : \ NRPE \ libexec 디렉토리 \ check_file.ps1 C : \ NRPE; exit ($ lastexitcode) | powershell.exe를 - 명령 -이 방법으로, 전체 제어를 탈선, 최종 문자열에 달러 문자 ($)를 추가 check_nrpe 왜 리턴 코드 0

완료 $

명령? 이 상황에 도움이 될 것입니다 경우

미리 감사

답변

1

에서 잘 모르겠지만, 난 그냥 비슷한 일으키는 내 환경에서 뭔가를 알아 냈어. 추가 추가 $을 얻을 것 나는 '^pattern$' 매개 변수 다음에 다른 매개 변수를 추가하고 싶었까지

command[foo]=grep file '^pattern$' 

다 괜찮다고 (명령 줄의 끝에서) 그 새 매개 변수 : 여기 내 NRPE 명령 comfiguration했다 끝까지.

은, NRPE가 $ 이스케이프 할 필요 보인다 그렇지 않으면이 변수 참조의 그것으로 이상한 일을 생각한다. 나는 따옴표로 이스케이프가 필요 없도록 만들 것이라고 기대했지만 NRPE의 구성 파일은 쉘 스타일의 인용 규칙을 따르지 않습니다.

command[foo]=grep file '^pattern$$' 

참고 개정 된 NRPE 명령 정의 이중 $$ : 그래서,이 내 NRPE 구성을 변경 내 문제를 해결했다.