2011-12-01 3 views
1

WMI를 통해 원격 Windows machins를 모니터링 할 수있는 몇 가지 Perl 스크립트가 있습니다. 지금은 CPU 사용량, 메모리 사용량, 디스크 사용량 및 설치된 소프트웨어를 확인할 수 있습니다. 하지만 원격 리눅스 머신에서 똑같은 일을하고 싶다면 어떻게해야할까요? Ofcourse에는 WMI가 없으므로 비슷한 것을 사용해야합니다. StackOverflow question에서 리눅스가 /proc/sys을 통해 정보를 공개했으나 원격 컴퓨터에서 정보를 조회 할 수 있습니까? Perl에서 정확히 어떻게 할 수 있습니까? 전용 모듈이 있습니까?Perl에서 원격 Linux 시스템을 모니터하고 설치된 소프트웨어를 검색하는 방법은 무엇입니까?

편집 : 명확히하기 위해 스크립트는 에이전트가 없어야합니다.

답변

3

확인이 :이 메모리/디스크 사용량을 줄 것이다

http://www.net-snmp.org/docs/mibs/host.html

http://www.oidview.com/mibs/0/RFC1213-MIB.html

는 :

snmptable -v1 -c public localhost hrProcessorTable 
snmptable -v1 -c public localhost .1.3.6.1.2.1.25.3.3 
:

snmptable -v1 -c public localhost hrStorageTable 
snmptable -v1 -c public localhost .1.3.6.1.2.1.25.2.3 

이것은 프로세서 사용률을 줄 것이다 691,363,210

인터페이스 상태 :

: 당신은 리눅스의 이라구 맛이 작업을 할 수

snmptable -v1 -c public localhost hrSWInstalledTable 
snmptable -v1 -c public localhost .1.3.6.1.2.1.25.6.3 

: 당신이 RPM 기반의 리눅스를 사용하는 경우

snmptable -v1 -c public localhost ifTable 
snmptable -v1 -c public localhost .1.3.6.1.2.1.2.2 

, 이것은 당신에게 설치된 소프트웨어를 줄 것이다

http://community.zenoss.org/blogs/zenossblog/2009/02/18/tip-of-the-month-snmp-software-inventory-for-debian-and-ubuntu-machines

Sample output of `snmptable -v1 -c public localhost hrProcessorTable` 

     hrProcessorFrwID hrProcessorLoad 
SNMPv2-SMI::zeroDotZero    54 
SNMPv2-SMI::zeroDotZero    22 

쿼리하는 상자에서 일반인에게 .1.3.6.1.2.1.25에 대한 읽기 권한이 있습니까?

com2sec monitor default   monitor 

group monitorGroup v1  monitor 
group monitorGroup v2c  monitor 

view hardware included .1.3.6.1.2.1.25 
view hardware included .1.3.6.1.2.1.2 

access monitorGroup ""  any  noauth exact hardware none none 

재시작이

그럼 그럼 위의 대신

+0

snmptable은 알 수없는 OID로 명령을 실행하면 * 알 수없는 개체 식별자 (Sub-id not found : (상위) -> hrProcessorTable) *라는 명령을 실행하면 작동합니다. 매개 변수. – raz3r

+0

snmptable 명령을 사용하면 * 테이블 오류가 발생했습니다. snmpwalk가 작동하고 CPU 사용량에 대해 다음 출력을 반환합니다. * iso.3.6.1.2.1.25.3.3.1.1.768 = OID : ccitt.0 iso.3.6.1.2.1.25.3.3.1.2.768 = INTEGER : 1 * 전혀 CPU 사용률처럼 들리지는 않습니다 O_o – raz3r

+0

샘플 출력과 snmpd.conf로 업데이트 된 답변 – John

1

나는 아마도 이러한 파일에 액세스하기 위해 Net::SSH을 사용할 수는 있지만, 당신이 snmp 에이전트를 설치하고 Net::SNMP을 사용하면 더 합리적이라고 생각합니다.

설치된 소프트웨어를 모니터링하는 것이 더 까다로울 수 있으며 Linux 배포본에 따라 다르며 ssh를 사용하는 것이 가장 쉽습니다.

편집 : 에이전트가 필요 없으므로 snmp 부분을 무시하십시오.

+0

-c public의 명령에 -c monitor를 지정 SNMPD

당신은 당신의 /etc/snmp/snmpd.conf이 같은 것을 추가해야 할 수 있습니다 거의 모든 Linux 시스템에서 SSH 액세스가 가능하지만 SNMP 인터페이스가 없습니다. 나는 SNMP를 설정할 수 있지만 에이전트없는 방법으로 정보를 검색 할 수 있다면 훨씬 더 좋을 것입니다. 설치된 소프트웨어에 관해서는 SSH가 가장 쉬운 방법입니다. dpkg * - get-selections *를 실행하고 출력을 파싱 할 수 있습니다. – raz3r

+0

예, 그게 데비안 기반이라면 제가 한 말입니다. 패키징 시스템이 다른 경우 더 까다로워 질 수 있습니다. ssh는 선택 사항입니다. 단지 자주 투표하는 것일뿐입니다. snmp를 통해 얻을 수있는 gettint 정보에 대한 가장 효과적인 솔루션은 아닙니다. –

+0

빈도가 높습니다. 분당 또는 그 이하의 정보를 읽고 Round Robin Database를 업데이트해야합니다. Windows에서 SNMP 정보를 수집하려고했지만 정말 힘들었습니다. 아마도 MIB를 더 잘 이해해야합니다. 호기심에서 어떻게 그럴 수 있니? 특정 OID를 쿼리해야합니까? 이것은 Windows에서 테스트 한 코드입니다 (OID에 대해서는 잊어 버리십시오). * my $ oid = '1.3.6.1 .....'; ($ session, $ error) = Net :: SNMP-> 세션 (-hostname => '192.168.252.165', -community => 'test'); $ result = $ session-> get_request (-varbindlist => [$ oid]); $ result = $ result -> {$ oid}; * – raz3r

관련 문제