Как отслеживать удаленные машины Linux и получать установленное программное обеспечение в Perl?
У меня есть пара сценариев Perl, которые позволяют мне контролировать удаленные операции Windows через WMI. Прямо сейчас я могу проверить использование процессора, использование памяти, использование диска и установленного программного обеспечения. Но что, если я хочу сделать ту же работу на удаленной машине с Linux? Конечно, нет WMI, поэтому я думаю, что я буду использовать что-то подобное. Я прочитал другой старый вопрос Stackru, что Linux предоставляет информацию через / proc и / sys, но могу ли я запросить их с удаленного компьютера? И как я могу сделать это именно в Perl? Есть ли выделенный модуль?
РЕДАКТИРОВАТЬ: Просто чтобы уточнить, сценарий должен быть без агента.
2 ответа
Проверьте это:
http://www.net-snmp.org/docs/mibs/host.html
http://www.oidview.com/mibs/0/RFC1213-MIB.html
Это даст вам использование памяти / диска:
snmptable -v1 -c public localhost hrStorageTable
snmptable -v1 -c public localhost .1.3.6.1.2.1.25.2.3
Это даст вам загрузку процессора:
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 ifTable
snmptable -v1 -c public localhost .1.3.6.1.2.1.2.2
Если вы используете Linux на основе RPM, это даст вам установленное программное обеспечение:
snmptable -v1 -c public localhost hrSWInstalledTable
snmptable -v1 -c public localhost .1.3.6.1.2.1.25.6.3
Вы можете сделать эту работу для.deb ароматов Linux:
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?
Вам может понадобиться добавить что-то подобное в ваш /etc/snmp/snmpd.conf
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
Перезапуск snmpd
Затем укажите -c monitor
в командах выше вместо -c public
Я так не думаю, возможно, вы можете использовать Net::SSH
чтобы получить доступ к этим файлам, но я думаю, что было бы больше смысла, если вы установите агент snmp и использовать Net::SNMP
с целью.
Мониторинг установленного программного обеспечения может стать сложнее, зависит от дистрибутива Linux и, вероятно, будет проще, чем по ssh.
РЕДАКТИРОВАТЬ: игнорировать snmp
часть, так как вы хотите быть без агента.