{"id":591,"date":"2005-03-08T10:10:00","date_gmt":"2005-03-08T17:10:00","guid":{"rendered":"http:\/\/kodegeek.com\/blog\/?p=591"},"modified":"2005-03-08T10:10:00","modified_gmt":"2005-03-08T17:10:00","slug":"trucos-unix-%c2%bfcomo-saber-si-un-demonio-esta-arriba-o-no-con-snmp","status":"publish","type":"post","link":"http:\/\/kodegeek.com\/blog\/2005\/03\/08\/trucos-unix-%c2%bfcomo-saber-si-un-demonio-esta-arriba-o-no-con-snmp\/","title":{"rendered":"Trucos Unix: \u00bfComo saber si un demonio est\u00e1 arriba o no con SNMP?"},"content":{"rendered":"<p>Usted tiene el siguiente problema: Tiene un par de demonios que quiere monitorear, pero no puede revizar directamente si est\u00e1n arriba ya que o hablar el protocolo nativo es complicado (por ejemplo para monitorear NTP desde Perl quizas tenga que instalar <a href=\"http:\/\/search.cpan.org\/%7Ewillmojg\/Net-NTP-1.2\/NTP.pm\">Net::NTP<\/a> pero eso le pide Perl 5.8.0 y usted tiene 5.6.1), el demonio no va a hablar directamente con usted (por ejemplo un ACL para evitar que el demonio sea hackeado) o simplemente el demonio no acepta conexiones (por ejemplo un programa en Perl o Java que corre todo el tiempo pero no escucha en ning\u00fan puerto).<\/p>\n<p>\u00bfTodo est\u00e1 perdido?. No, si usted tiene la suerte de que puede correr <a href=\"http:\/\/net-snmp.org\/\">Net-SNMP<\/a> en la m\u00e1quina en cuestion, entonces s\u00f3lo tiene que agregar una l\u00ednea en la configuraci\u00f3n de el agente para ver si el demonio est\u00e1 arriba. Ya antes yo les habia hablado de <a href=\"http:\/\/elangelnegro.blogspot.com\/2005\/01\/echando-cdigo-monitoreo-de-redes.html\">Net-SNMP por ac\u00e1<\/a> y hasta les hab\u00eda dejado <a href=\"http:\/\/prdownloads.sourceforge.net\/elangelnegro\/snmpd.conf?download\">un archivo de configuraci\u00f3n de referencia<\/a>.<\/p>\n<p>Una ventaja de monitorear demonios de esta manera es que el protocolo de <a href=\"http:\/\/www.google.com\/search?hl=en&#038;q=define%3ASNMP&amp;btnG=Google+Search\">SNMP<\/a> est\u00e1 especialmente dise\u00f1ado para consultar una cantidad larga de dispositivos y valores, por lo que la sobrecarga de datos en la red deber\u00eda ser menos que preguntar directamente a los servicios nativos; Lo otro es que tambi\u00e9n usted se ahorra el trabajo de hablar varios protocolos y le deja el trabajo a SNMP de ver si el demonio est\u00e1 arriba (si, ya se, usted siempre puede ver si el puerto est\u00e1 abierto con un simple socket peo esa no es una transacci\u00f3n de verdad, adem\u00e1s de que usted tiene que echar el c\u00f3digo). <span style=\"font-style: italic;\">En este caso, es una virtud el ser perezoso&#8230;<\/span><\/p>\n<p>El algoritmo va de la siguiente manera:<\/p>\n<ol>\n<li>Haga una transferencia de la zona de su servidor de DNS (o haga un port scanning de toda la red). En mi opnini\u00f3n es m\u00e1s r\u00e1pido la transferencia ya que as\u00ed solamente contactamos a los servidores que realmente est\u00e1n registrados (usted tiene un <span style=\"font-style: italic;\">SA<\/span> que mantiene al dia el DNS, \u00bfno es asi?)<\/li>\n<li>Por cada registro tipo A (ignore CNAMES, PTR, MX, etc) haga una consulta de el OID de el servicio a monitorear (especifico de el agente Net-SNMP). La raz\u00f3n es que el indice cambia dependiendo de como nuestro SA haya configurado el archivo &#8216;snmpd.conf&#8217;. Si no tiene indice es que el servicio no est\u00e1 siendo monitoreado por el agente, asi que ignore esta maquina.<\/li>\n<li>Si el indice existe, entonces obtenga la bandera de error. Si es igual a 1, es que el demonio no estaba corriendo, asi que reporte el error.<\/li>\n<\/ol>\n<p> Hacer este programa me tom\u00f3 1 hora, mientras escuchaba Apocalyptica y limpiaba las cagadas, por lo que no es el fin del mundo:<\/p>\n<style type=\"text\/css\"><!-- .syntax0 { color: #000000; } .syntax1 { color: #cc0000; } .syntax2 { color: #ff8400; } .syntax3 { color: #6600cc; } .syntax4 { color: #cc6600; } .syntax5 { color: #ff0000; } .syntax6 { color: #9966ff; } .syntax7 { background: #ffffcc; color: #ff0066; } .syntax8 { color: #006699; font-weight: bold; } .syntax9 { color: #009966; font-weight: bold; } .syntax10 { color: #0099ff; font-weight: bold; } .syntax11 { color: #66ccff; font-weight: bold; } .syntax12 { color: #02b902; } .syntax13 { color: #ff00cc; } .syntax14 { color: #cc00cc; } .syntax15 { color: #9900cc; } .syntax16 { color: #6600cc; } .syntax17 { color: #0000ff; } .syntax18 { color: #000000; font-weight: bold; } .gutter { background: #dbdbdb; color: #000000; } .gutterH { background: #dbdbdb; color: #666699; } --><br \/><\/style>\n<p><\/p>\n<pre><span class=\"gutter\">   1:<\/span><span class=\"syntax1\">#<\/span><span class=\"syntax1\">!\/usr\/bin\/perl<\/span><br \/><span class=\"gutter\">   2:<\/span><br \/><span class=\"gutter\">   3:<\/span><span class=\"syntax8\">use<\/span> <a href=\"http:\/\/search.cpan.org\/%7Ecrein\/Net-DNS-0.48\/lib\/Net\/DNS.pm\">Net<span class=\"syntax18\">:<\/span><span class=\"syntax18\">:<\/span>DNS<\/a>;<br \/><span class=\"gutter\">   4:<\/span><span class=\"syntax8\">use<\/span> <a href=\"http:\/\/search.cpan.org\/%7Edtown\/Net-SNMP-5.0.1\/lib\/Net\/SNMP.pm\">Net<span class=\"syntax18\">:<\/span><span class=\"syntax18\">:<\/span>SNMP<\/a>;<br \/><span class=\"gutterH\">   5:<\/span><span class=\"syntax8\">use<\/span> strict;<br \/><span class=\"gutter\">   6:<\/span>                                                                                                                                              <br \/><span class=\"gutter\">   7:<\/span><span class=\"syntax8\">use<\/span> constant PORT       <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span><br \/><span class=\"gutter\">   8:<\/span>        <span class=\"syntax5\">161<\/span>;<br \/><span class=\"gutter\">   9:<\/span><span class=\"syntax8\">use<\/span> constant BASE_OID   <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span><br \/><span class=\"gutterH\">  10:<\/span>        <span class=\"syntax13\">'<\/span><span class=\"syntax13\">.1.3.6.1.4.1.2021.2<\/span><span class=\"syntax13\">'<\/span>;<br \/><span class=\"gutter\">  11:<\/span><span class=\"syntax8\">use<\/span> constant INDEX_OID  <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span><br \/><span class=\"gutter\">  12:<\/span>        BASE_OID . <span class=\"syntax13\">'<\/span><span class=\"syntax13\">.1.2<\/span><span class=\"syntax13\">'<\/span>;<br \/><span class=\"gutter\">  13:<\/span><span class=\"syntax8\">use<\/span> constant STATUS_OID <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span><br \/><span class=\"gutter\">  14:<\/span>        BASE_OID . <span class=\"syntax13\">'<\/span><span class=\"syntax13\">.1.100<\/span><span class=\"syntax13\">'<\/span>;<br \/><span class=\"gutterH\">  15:<\/span><span class=\"syntax8\">use<\/span> constant VERSION    <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span><br \/><span class=\"gutter\">  16:<\/span>        <span class=\"syntax5\">2<\/span>;<br \/><span class=\"gutter\">  17:<\/span><span class=\"syntax8\">use<\/span> constant UNKNOWN_INDEX <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span><br \/><span class=\"gutter\">  18:<\/span>        <span class=\"syntax18\">-<\/span><span class=\"syntax5\">1<\/span>;<br \/><span class=\"gutter\">  19:<\/span><br \/><span class=\"gutterH\">  20:<\/span><span class=\"syntax8\">use<\/span> constant ERROR_CODE <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span><br \/><span class=\"gutter\">  21:<\/span>        <span class=\"syntax5\">192<\/span>;<br \/><span class=\"gutter\">  22:<\/span><br \/><span class=\"gutter\">  23:<\/span><span class=\"syntax8\">use<\/span> constant OK_CODE <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span><br \/><span class=\"gutter\">  24:<\/span>        <span class=\"syntax5\">0<\/span>;<br \/><span class=\"gutterH\">  25:<\/span><br \/><span class=\"gutter\">  26:<\/span><span class=\"syntax8\">if<\/span> ((<span class=\"syntax10\">scalar<\/span>(<span class=\"syntax9\">@ARGV<\/span>)) <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax5\">4<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  27:<\/span>        <span class=\"syntax18\">&<\/span>usage();<br \/><span class=\"gutter\">  28:<\/span>        <span class=\"syntax8\">exit<\/span> ERROR_CODE;<br \/><span class=\"gutter\">  29:<\/span><span class=\"syntax18\">}<\/span><br \/><span class=\"gutterH\">  30:<\/span><br \/><span class=\"gutter\">  31:<\/span><span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$res<\/span>  <span class=\"syntax18\">=<\/span> Net<span class=\"syntax18\">:<\/span><span class=\"syntax18\">:<\/span>DNS<span class=\"syntax18\">:<\/span><span class=\"syntax18\">:<\/span>Resolver<span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span><span class=\"syntax8\">new<\/span>;<br \/><span class=\"gutter\">  32:<\/span><span class=\"syntax9\">$res<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>nameservers(<span class=\"syntax9\">$ARGV<\/span>[<span class=\"syntax5\">0<\/span>]);<br \/><span class=\"gutter\">  33:<\/span><span class=\"syntax1\">#<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">Perform<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">a<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">DNS<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">zone<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">transfer<\/span><br \/><span class=\"gutter\">  34:<\/span><span class=\"syntax8\">my<\/span> <span class=\"syntax9\">@zone<\/span> <span class=\"syntax18\">=<\/span> <span class=\"syntax9\">$res<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>axfr(<span class=\"syntax9\">$ARGV<\/span>[<span class=\"syntax5\">1<\/span>]);<br \/><span class=\"gutterH\">  35:<\/span><span class=\"syntax8\">foreach<\/span> <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$rr<\/span> (<span class=\"syntax9\">@zone<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  36:<\/span>        <span class=\"syntax8\">if<\/span> (<span class=\"syntax9\">$rr<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>type <span class=\"syntax18\">eq<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">A<\/span><span class=\"syntax13\">\"<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  37:<\/span>                <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$name<\/span> <span class=\"syntax18\">=<\/span> <span class=\"syntax9\">$rr<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>name;<br \/><span class=\"gutter\">  38:<\/span>                <span class=\"syntax10\">printf<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax9\">%<\/span><span class=\"syntax9\">s<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>, <span class=\"syntax9\">$name<\/span>;<br \/><span class=\"gutter\">  39:<\/span>                <span class=\"syntax8\">my<\/span> (<span class=\"syntax9\">$session<\/span>, <span class=\"syntax9\">$error<\/span>) <span class=\"syntax18\">=<\/span> Net<span class=\"syntax18\">:<\/span><span class=\"syntax18\">:<\/span>SNMP<span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>session(<br \/><span class=\"gutterH\">  40:<\/span>                        <span class=\"syntax18\">-<\/span>hostname  <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax9\">$name<\/span>,<br \/><span class=\"gutter\">  41:<\/span>                        <span class=\"syntax18\">-<\/span>community <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax9\">$ARGV<\/span>[<span class=\"syntax5\">3<\/span>],<br \/><span class=\"gutter\">  42:<\/span>                        <span class=\"syntax18\">-<\/span>version   <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> VERSION,<br \/><span class=\"gutter\">  43:<\/span>                        <span class=\"syntax18\">-<\/span>port      <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> PORT<br \/><span class=\"gutter\">  44:<\/span>                );<br \/><span class=\"gutterH\">  45:<\/span>                <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$result<\/span> <span class=\"syntax18\">=<\/span> <span class=\"syntax9\">$session<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>get_table(<br \/><span class=\"gutter\">  46:<\/span>                        <span class=\"syntax18\">-<\/span>baseoid <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> INDEX_OID<br \/><span class=\"gutter\">  47:<\/span>                );<br \/><span class=\"gutter\">  48:<\/span>                <span class=\"syntax8\">if<\/span> (<span class=\"syntax18\">!<\/span> <span class=\"syntax10\">defined<\/span> <span class=\"syntax9\">$result<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  49:<\/span>                        <span class=\"syntax10\">printf<\/span>  <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\t<\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">INFO<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">No<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">response<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">from<\/span><span class=\"syntax13\">,<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax9\">%<\/span><span class=\"syntax9\">s<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>, <span class=\"syntax9\">$name<\/span>;<br \/><span class=\"gutterH\">  50:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">else<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  51:<\/span>                        <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$index<\/span> <span class=\"syntax18\">=<\/span> UNKNOWN_INDEX;<br \/><span class=\"gutter\">  52:<\/span>                        <span class=\"syntax8\">foreach<\/span> <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$key<\/span> (<span class=\"syntax10\">keys<\/span> %<span class=\"syntax9\">${<\/span><span class=\"syntax9\">result<\/span><span class=\"syntax9\">}<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  53:<\/span>                                <span class=\"syntax1\">#<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">The<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">index<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">position<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">will<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">depend<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">of<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">the<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">order<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">given<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">by<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">the<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">SA,<\/span><br \/><span class=\"gutter\">  54:<\/span>                                <span class=\"syntax1\">#<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">on<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">the<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">snmpd.conf<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">file,<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">so<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">it<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">is<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">better<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">so<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">look<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">for<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">it!<\/span><br \/><span class=\"gutterH\">  55:<\/span>                                <span class=\"syntax8\">if<\/span> ($<span class=\"syntax9\">$result<\/span><span class=\"syntax18\">{<\/span><span class=\"syntax9\">$key<\/span><span class=\"syntax18\">}<\/span> <span class=\"syntax18\">eq<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax9\">$<\/span><span class=\"syntax9\">ARGV<\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">2<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">\"<\/span>) <span class=\"syntax18\">{<\/span>  <br \/><span class=\"gutter\">  56:<\/span>                                        <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">@tokens<\/span> <span class=\"syntax18\">=<\/span> <span class=\"syntax10\">split<\/span>(<span class=\"syntax13\">'<\/span><span class=\"syntax13\">\\.<\/span><span class=\"syntax13\">'<\/span>, <span class=\"syntax9\">$key<\/span>);<br \/><span class=\"gutter\">  57:<\/span>                                        <span class=\"syntax9\">$index<\/span> <span class=\"syntax18\">=<\/span> <span class=\"syntax9\">$tokens<\/span>[<span class=\"syntax10\">scalar<\/span>(<span class=\"syntax9\">@tokens<\/span>)<span class=\"syntax18\">-<\/span><span class=\"syntax5\">1<\/span>];<br \/><span class=\"gutter\">  58:<\/span>                                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  59:<\/span>                        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutterH\">  60:<\/span>                        <span class=\"syntax1\">#<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">It<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">is<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">being<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">monitored?<\/span><br \/><span class=\"gutter\">  61:<\/span>                        <span class=\"syntax8\">if<\/span> (<span class=\"syntax9\">$index<\/span> <span class=\"syntax18\">=<\/span><span class=\"syntax18\">=<\/span> UNKNOWN_INDEX) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  62:<\/span>                                <span class=\"syntax10\">print<\/span>  <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\t<\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">INFO<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">Daemon<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">not<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">being<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">monitored<\/span><span class=\"syntax13\">!<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>;<br \/><span class=\"gutter\">  63:<\/span>                        <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">else<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  64:<\/span>                                <span class=\"syntax1\">#<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">Now<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">get<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">the<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">status<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">of<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">the<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">daemon<\/span><br \/><span class=\"gutterH\">  65:<\/span>                                <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$key<\/span> <span class=\"syntax18\">=<\/span> STATUS_OID . <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\.<\/span><span class=\"syntax9\">$<\/span><span class=\"syntax9\">index<\/span><span class=\"syntax13\">\"<\/span>;<br \/><span class=\"gutter\">  66:<\/span>                                <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$result2<\/span> <span class=\"syntax18\">=<\/span> <span class=\"syntax9\">$session<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>get_request(<br \/><span class=\"gutter\">  67:<\/span>                                        <span class=\"syntax18\">-<\/span>varbindlist <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> [<span class=\"syntax9\">$key<\/span>]<br \/><span class=\"gutter\">  68:<\/span>                                );<br \/><span class=\"gutter\">  69:<\/span>                                <span class=\"syntax8\">if<\/span> (<span class=\"syntax18\">!<\/span> <span class=\"syntax10\">defined<\/span> <span class=\"syntax9\">$result2<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\">  70:<\/span>                                        <span class=\"syntax10\">printf<\/span>  <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\t<\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">ERROR<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">Unable<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">to<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">poll<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax9\">%<\/span><span class=\"syntax9\">s<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>, <span class=\"syntax9\">$name<\/span>;<br \/><span class=\"gutter\">  71:<\/span>                                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">else<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  72:<\/span>                                        <span class=\"syntax8\">if<\/span> ($<span class=\"syntax9\">$result2<\/span><span class=\"syntax18\">{<\/span><span class=\"syntax9\">$key<\/span><span class=\"syntax18\">}<\/span> <span class=\"syntax18\">=<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax5\">0<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  73:<\/span>                                                <span class=\"syntax10\">print<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\t<\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">INFO<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">Service<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">is<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">OK\\n<\/span><span class=\"syntax13\">\"<\/span>;<br \/><span class=\"gutter\">  74:<\/span>                                        <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">else<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\">  75:<\/span>                                                <span class=\"syntax10\">printf<\/span>  <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\t<\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">WARNING<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">Service<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">is<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">not<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">OK<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">on<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">'<\/span><span class=\"syntax9\">%<\/span><span class=\"syntax9\">s<\/span><span class=\"syntax13\">'<\/span><span class=\"syntax13\">,<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">status<\/span><span class=\"syntax13\">=<\/span><span class=\"syntax9\">%<\/span><span class=\"syntax9\">s<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>, <span class=\"syntax9\">$name<\/span>, $<span class=\"syntax9\">$result2<\/span><span class=\"syntax18\">{<\/span><span class=\"syntax9\">$key<\/span><span class=\"syntax18\">}<\/span>;<br \/><span class=\"gutter\">  76:<\/span>                                        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  77:<\/span>                                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  78:<\/span>                        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  79:<\/span>                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutterH\">  80:<\/span>                <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$error_message<\/span> <span class=\"syntax18\">=<\/span> <span class=\"syntax9\">$session<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>error;<br \/><span class=\"gutter\">  81:<\/span>                <span class=\"syntax8\">if<\/span> (<span class=\"syntax9\">$error<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  82:<\/span>                        <span class=\"syntax10\">printf<\/span>  <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\t<\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">ERROR<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax9\">%<\/span><span class=\"syntax9\">s<\/span><span class=\"syntax13\">,<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax9\">%<\/span><span class=\"syntax9\">s<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>, <span class=\"syntax9\">$name<\/span>, <span class=\"syntax9\">$error<\/span>;<br \/><span class=\"gutter\">  83:<\/span>                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  84:<\/span>                <span class=\"syntax8\">if<\/span> (<span class=\"syntax10\">defined<\/span> <span class=\"syntax9\">$session<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\">  85:<\/span>                        <span class=\"syntax9\">$session<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span><span class=\"syntax10\">close<\/span>;<br \/><span class=\"gutter\">  86:<\/span>                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  87:<\/span>        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  88:<\/span><span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  89:<\/span><span class=\"syntax8\">exit<\/span> OK_CODE;<br \/><span class=\"gutterH\">  90:<\/span><br \/><span class=\"gutter\">  91:<\/span><span class=\"syntax8\">sub<\/span> usage() <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  92:<\/span><span class=\"syntax10\">print<\/span> <span class=\"syntax18\">&lt;<\/span><span class=\"syntax18\">&lt;<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">EOF<\/span><span class=\"syntax13\">\"<\/span>;<br \/><span class=\"gutter\">  93:<\/span>Usage mode<span class=\"syntax18\">:<\/span><br \/><span class=\"gutter\">  94:<\/span>        quick_test.plx nameserver dnsdomain daemonname snmpcommunity<br \/><span class=\"gutterH\">  95:<\/span><br \/><span class=\"gutter\">  96:<\/span>Where<span class=\"syntax18\">:<\/span><br \/><span class=\"gutter\">  97:<\/span>        nameserver      <span class=\"syntax18\">-<\/span> DNS from where we will pull the DNS zone<br \/><span class=\"gutter\">  98:<\/span>        dnsdomain       <span class=\"syntax18\">-<\/span> Full DNS domain to check<br \/><span class=\"gutter\">  99:<\/span>        daemonname      <span class=\"syntax18\">-<\/span> The process to check <span class=\"syntax8\">for<\/span> (ntpd, ssh)<br \/><span class=\"gutterH\"> 100:<\/span>        snmpcommunity   <span class=\"syntax18\">-<\/span> The SNMP community string<br \/><span class=\"gutter\"> 101:<\/span><br \/><span class=\"gutter\"> 102:<\/span>To <span class=\"syntax10\">read<\/span> the documentation of the script, <span class=\"syntax8\">do<\/span> the following<span class=\"syntax18\">:<\/span><br \/><span class=\"gutter\"> 103:<\/span><br \/><span class=\"gutter\"> 104:<\/span>perldoc quick_test.plx<br \/><span class=\"gutterH\"> 105:<\/span><br \/><span class=\"gutter\"> 106:<\/span>EOF<br \/><span class=\"gutter\"> 107:<\/span><span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 108:<\/span>__END__<br \/><span class=\"gutter\"> 109:<\/span><br \/><span class=\"gutterH\"> 110:<\/span><span class=\"syntax12\">=head1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">NAME<\/span><br \/><span class=\"gutter\"> 111:<\/span><br \/><span class=\"gutter\"> 112:<\/span><span class=\"syntax2\">quick_test<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">plx<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">A<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">quick<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">script<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">to<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">check<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">status<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">of<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">programs<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">running<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">on<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">a<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Linux<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">server<\/span><span class=\"syntax2\">,<\/span><br \/><span class=\"gutter\"> 113:<\/span><span class=\"syntax2\">asuming<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">than<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">DNS<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">server<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">list<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">is<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">up<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">to<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">date<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">and<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">than<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Net<\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\">SNMP<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">daemon<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">is<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">running<\/span><span class=\"syntax2\">!<\/span><br \/><span class=\"gutter\"> 114:<\/span><br \/><span class=\"gutterH\"> 115:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">head1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">DESCRIPTION<\/span><br \/><span class=\"gutter\"> 116:<\/span><br \/><span class=\"gutter\"> 117:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">head2<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">DNS<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">SERVER<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">CONFIGURATION<\/span><br \/><span class=\"gutter\"> 118:<\/span><br \/><span class=\"gutter\"> 119:<\/span><span class=\"syntax2\">Make<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">sure<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">you<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">can<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">do<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">zone<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">transfers<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">from<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">your<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Perl<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">client<\/span><span class=\"syntax2\">;<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Asuming<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">than<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">'<\/span><span class=\"syntax2\">10<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">50<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">254<\/span><span class=\"syntax2\">'<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">is<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">your<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">IP<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">address<\/span><span class=\"syntax2\">:<\/span><br \/><span class=\"gutterH\"> 120:<\/span><br \/><span class=\"gutter\"> 121:<\/span><span class=\"syntax2\">allow<\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\">transfer<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">{<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">127<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">0<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">0<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\">;<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">10<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">50<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">254<\/span><span class=\"syntax2\">;<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">}<\/span><span class=\"syntax2\">;<\/span><br \/><span class=\"gutter\"> 122:<\/span><br \/><span class=\"gutter\"> 123:<\/span><span class=\"syntax2\">Our<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">you<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">will<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">get<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">following<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">error<\/span><span class=\"syntax2\">:<\/span><br \/><span class=\"gutter\"> 124:<\/span><br \/><span class=\"gutterH\"> 125:<\/span><span class=\"syntax2\">        <\/span><span class=\"syntax2\">Mar<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">17<\/span><span class=\"syntax2\">:<\/span><span class=\"syntax2\">40<\/span><span class=\"syntax2\">:<\/span><span class=\"syntax2\">18<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">XXX<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">named<\/span><span class=\"syntax2\">[<\/span><span class=\"syntax2\">28161<\/span><span class=\"syntax2\">]<\/span><span class=\"syntax2\">:<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">client<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">10<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">50<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">254<\/span><span class=\"syntax2\">#<\/span><span class=\"syntax2\">59195<\/span><span class=\"syntax2\">:<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">zone<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">transfer<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">'<\/span><span class=\"syntax2\">elangelnegro<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">blogspot<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">com<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">IN<\/span><span class=\"syntax2\">'<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">denied<\/span><br \/><span class=\"gutter\"> 126:<\/span><br \/><span class=\"gutter\"> 127:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">head2<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">SNMP<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">CLIENT<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">CONFIGURATION<\/span><br \/><span class=\"gutter\"> 128:<\/span><br \/><span class=\"gutter\"> 129:<\/span><span class=\"syntax2\">Make<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">sure<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">than<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">monitoring<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">of<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">SNMP<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">daemon<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">is<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">enabled<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">on<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">all<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">servers<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">(<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">etc<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">snmp<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">snmp<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">conf<\/span><span class=\"syntax2\">)<\/span><span class=\"syntax2\">:<\/span><br \/><span class=\"gutterH\"> 130:<\/span><br \/><span class=\"gutter\"> 131:<\/span><span class=\"syntax2\">#<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">snmpwalk<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\">v<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">2c<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\">h<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">localhost<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">public<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">3<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">6<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">4<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">2021<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">2<\/span><br \/><span class=\"gutter\"> 132:<\/span><span class=\"syntax2\">proc<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">snmpd<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><br \/><span class=\"gutter\"> 133:<\/span><span class=\"syntax2\">proc<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">sshd<\/span><br \/><span class=\"gutter\"> 134:<\/span><span class=\"syntax2\">proc<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">syslogd<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><br \/><span class=\"gutterH\"> 135:<\/span><span class=\"syntax2\">proc<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">ypbind<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">10<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><br \/><span class=\"gutter\"> 136:<\/span><span class=\"syntax2\">proc<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">portmap<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><br \/><span class=\"gutter\"> 137:<\/span><span class=\"syntax2\">proc<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">ntpd<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><br \/><span class=\"gutter\"> 138:<\/span><span class=\"syntax2\">proc<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">crond<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><br \/><span class=\"gutter\"> 139:<\/span><br \/><span class=\"gutterH\"> 140:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">head1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">AUTHOR<\/span><br \/><span class=\"gutter\"> 141:<\/span><br \/><span class=\"gutter\"> 142:<\/span><span class=\"syntax2\">Jose<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">V<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Nunez<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Zuleta<\/span><br \/><span class=\"gutter\"> 143:<\/span><br \/><span class=\"gutter\"> 144:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">head1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">BLOG<\/span><br \/><span class=\"gutterH\"> 145:<\/span><br \/><span class=\"gutter\"> 146:<\/span><span class=\"syntax2\">El<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Angel<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Negro<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">http<\/span><span class=\"syntax2\">:<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">elangelnegro<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">blogspot<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">com<\/span><br \/><span class=\"gutter\"> 147:<\/span><br \/><span class=\"gutter\"> 148:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">head1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">LICENSE<\/span><br \/><span class=\"gutter\"> 149:<\/span><br \/><span class=\"gutterH\"> 150:<\/span><span class=\"syntax2\">GPL<\/span><br \/><span class=\"gutter\"> 151:<\/span><br \/><span class=\"gutter\"> 152:<\/span><span class=\"syntax12\">=cut<\/span><br \/><\/pre>\n<p>La salida de ejemplo:<\/p>\n<blockquote><p>[root@XXX lucifer]# <span style=\"color: rgb(0, 153, 0);\">.\/quick_test.plx server dnsdomain ntpd community-string<\/span><br \/>server1.<span style=\"color: rgb(0, 153, 0);\">dnsdomain<\/span><span style=\"color: rgb(0, 153, 0);\"><\/span><br \/>       [INFO]: Daemon not being monitored!<br \/>server2.<span style=\"color: rgb(0, 153, 0);\">dnsdomain<\/span><br \/>       [INFO]: No response from, server2.<span style=\"color: rgb(0, 153, 0);\">dnsdomain<\/span><span style=\"color: rgb(0, 153, 0);\"><\/span><br \/>server2.<span style=\"color: rgb(0, 153, 0);\">dnsdomain<\/span><br \/>       [INFO]: No response from, server2.<span style=\"color: rgb(0, 153, 0);\">dnsdomain<\/span><span style=\"color: rgb(0, 153, 0);\"><\/span><br \/>server3.<span style=\"color: rgb(0, 153, 0);\">dnsdomain<\/span><br \/>       [INFO]: No response from, server3.<span style=\"color: rgb(0, 153, 0);\">dnsdomain<\/span><span style=\"color: rgb(0, 153, 0);\"><\/span><br \/>server4.<span style=\"color: rgb(0, 153, 0);\">dnsdomain<\/span><br \/>       [INFO]: No response from, server4.<span style=\"color: rgb(0, 153, 0);\">dnsdomain<\/span><span style=\"color: rgb(0, 153, 0);\"><\/span><br \/>server5.<span style=\"color: rgb(0, 153, 0);\">dnsdomain<\/span><span style=\"color: rgb(0, 153, 0);\"><\/span><br \/>       [INFO]: Service is OK<br \/>server6.<span style=\"color: rgb(0, 153, 0);\">dnsdomain<\/span><span style=\"color: rgb(0, 153, 0);\"><\/span><br \/>       [INFO]: Service is OK<br \/>&#8230;&#8230;<\/p><\/blockquote>\n<p>\u00bfComo lo puede mejorar?<\/p>\n<p>Puede bajarselo <a href=\"http:\/\/prdownloads.sourceforge.net\/elangelnegro\/quick_test.plx?download\">desde ac\u00e1<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Usted tiene el siguiente problema: Tiene un par de demonios que quiere monitorear, pero no puede revizar directamente si est\u00e1n arriba ya que o hablar el protocolo nativo es complicado (por ejemplo para monitorear NTP desde Perl quizas tenga que instalar Net::NTP pero eso le pide Perl 5.8.0 y usted tiene 5.6.1), el demonio no <a class=\"read-more\" href=\"http:\/\/kodegeek.com\/blog\/2005\/03\/08\/trucos-unix-%c2%bfcomo-saber-si-un-demonio-esta-arriba-o-no-con-snmp\/\">[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/591"}],"collection":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/comments?post=591"}],"version-history":[{"count":0,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/591\/revisions"}],"wp:attachment":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/media?parent=591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/categories?post=591"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/tags?post=591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}