2011-02-11 3 views
2

Nagios는 IT 인프라 모니터링 시스템입니다. 나는 그것을위한 간단한 플러그인 스크립트를 작성 중이다. 특수한 계정 인 nagios가 생성되어 스크립트가 Nagios에 의해 실행됩니다. 디버깅 목적을 위해~ (사용자의 집 주소)과 로그인 한 사용자가 일치하지 않습니다.

이 스크립트는 매우 간단하다 :

#!/bin/bash 
echo "OK - Running okay" ~ `id` 

그것은 ~의 값, 즉 홈 디렉토리 및 id 명령의 결과를 에코.

은 내가 Nagios의 계정 (su -l nagios)에 로그인하고, 명령 줄에서 테스트 :

OK - Running okay /home/nagios uid=1005(nagios) gid=1007(nagios) groups=1007(nagios),1008(nagcmd) 

을 내가 예상 정확히 즉. 나는 Nagios는 시스템 내에서 실행

는보고 된 결과는 다음과 같습니다, /home/julian 계정의 홈 디렉토리는

OK - Running okay /home/julian uid=1005(nagios) gid=1007(nagios) groups=1007(nagios),1008(nagcmd) 

기다립니다이다

; 하지만 그것은 nagios 계정에 로그인되어 있습니다. 그 모순은 나에게 의미가 없다. 나는 이것이 분명히 어떻게 작동하는지 이해하지 못합니다.

어떻게 이런 일이 벌어 질 수 있을지 제안 해주세요.

답변

0

Nagios는 원격 시스템을 호출하므로 아마도 ssh julian @ remote를 통해 스크립트를 실행하고있을 것입니다.

+0

내가 서버에 원격 @ ssh를 줄리안 통해 연결하고있다 : sudo의 경우

, 사용자의 환경을 사용하는 방법이 있습니다. Nagios가 서버에서 실행 중입니다. (잘하면 Nagios로) 로컬 스크립트를 호출하고 있습니다. 로컬 스크립트를 실행할 때,'id'는 그것이 nagios로 실행 중임을보고합니다./home/julian을보고하는 것은'~'입니다. – Oddthinking

2

스크립트는 sudo 번에 의해 실행 되었습니까? 어떤 경우

[email protected]:~$ echo ~; id 
/home/rpinson 
uid=61367(rpinson) gid=100(users) groupes=24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),100(users),119(admin) 
[email protected]:~$ sudo -u toto -s 
[email protected]:~$ echo ~; id 
/home/rpinson 
uid=1001(toto) gid=1001(toto) groupes=1001(toto) 

(sudo -u 등), 환경이 매우 $HOME 내보낼은 명령을 실행하는 사용자 resetted 아니다.

[email protected]:~$ sudo -u toto -i 
[email protected]:~$ echo ~; id 
/home/toto 
uid=1001(toto) gid=1001(toto) groupes=1001(toto) 

또는

[email protected]:~$ sudo -u toto -H -s 
[email protected]:/home/rpinson$ echo ~; id 
/home/toto 
uid=1001(toto) gid=1001(toto) groupes=1001(toto) 
+0

그것은 매우 흥미 롭습니다. 나는 너에게 답이 없다. 나는 Nagios가 사용자 nagios에서 실행 중이며 단순히 sudo를 사용하지 않고 프로세스를 생성한다고 가정했지만 그 내용은 커버 아래에 있습니다. – Oddthinking

+0

내 문제가 해결되었습니다 (이 점에 영감을 받아 ~를 참조하기보다는 명시적인 경로를 지정 했으므로 다른 문제는 사라졌습니다.)이 대답을 최고로 받아들이기로했습니다. – Oddthinking

+0

질문에 대한 답변 :-) –