{"id":595,"date":"2005-03-10T13:00:00","date_gmt":"2005-03-10T20:00:00","guid":{"rendered":"http:\/\/kodegeek.com\/blog\/?p=595"},"modified":"2005-03-10T13:00:00","modified_gmt":"2005-03-10T20:00:00","slug":"echando-codigo-%c2%bfcomo-reiniciar-un-proceso-con-perl-y-snmp","status":"publish","type":"post","link":"http:\/\/kodegeek.com\/blog\/2005\/03\/10\/echando-codigo-%c2%bfcomo-reiniciar-un-proceso-con-perl-y-snmp\/","title":{"rendered":"Echando c\u00f3digo: \u00bfComo reiniciar un proceso, con Perl y SNMP?"},"content":{"rendered":"<p>Este post se parece mucho a uno anterior, el el cual utilizabamos Perl y SNMP para ver si una serie de procesos estaba muerto; Sin embargo en este caso lo que tenemos es un &#8216;watchdog&#8217;, un simple programa que es ejecutado cada cierto tiempoy si detecta que un programa en particular est\u00e1 caido, entonces trata de reiniciarlo.<\/p>\n<p>La l\u00f3gica es muy sencilla, revise si el servicio est\u00e1 siendo monitoreado por Net-SNMP (m\u00e1s f\u00e1cil que hacer un &#8216;ps&#8217; usted mismo, adem\u00e1s de que es m\u00e1s flexible ya que usted puede controlar cuantas procesos es la cantidad correcta que deber\u00edan estarse ejecutando). Si la bandera es diferente de 0 es que hay un error, usted reinicia al demonio y manda una notificaci\u00f3n por correo electr\u00f3nico a su &#8216;helpdesk&#8217;. Para correr el programa periodicamente, deber\u00e1 utilizar &#8216;cron&#8217;:<\/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> Net<span class=\"syntax18\">:<\/span><span class=\"syntax18\">:<\/span>SNMP;<br \/><span class=\"gutter\">   4:<\/span><span class=\"syntax8\">use<\/span> Net<span class=\"syntax18\">:<\/span><span class=\"syntax18\">:<\/span>SMTP;<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=\"syntax1\">#<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">START<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">USER<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">CONFIGURABLE<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">SECTION<\/span><br \/><span class=\"gutter\">   8:<\/span><span class=\"syntax8\">use<\/span> constant MAIL_SERVER <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax13\">'<\/span><span class=\"syntax13\">localhost<\/span><span class=\"syntax13\">'<\/span>;<br \/><span class=\"gutter\">   9:<\/span><span class=\"syntax8\">use<\/span> constant MAIL_SUBJECT <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">INFO<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax9\">$<\/span><span class=\"syntax9\">0<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">A<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">daemon<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">was<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">restarted<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">automatically<\/span><span class=\"syntax13\">!<\/span><span class=\"syntax13\">\"<\/span>;<br \/><span class=\"gutterH\">  10:<\/span><span class=\"syntax8\">use<\/span> constant MAIL_FROM <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax13\">'<\/span><span class=\"syntax13\">angelnegro@domain.com<\/span><span class=\"syntax13\">'<\/span>;<br \/><span class=\"gutter\">  11:<\/span><span class=\"syntax8\">use<\/span> constant SNMP_COMMUNITY <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax13\">'<\/span><span class=\"syntax13\">public<\/span><span class=\"syntax13\">'<\/span>;<br \/><span class=\"gutter\">  12:<\/span><span class=\"syntax1\">#<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">END<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">USER<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">CONFIGURABLE<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">SECTION<\/span><br \/><span class=\"gutter\">  13:<\/span><br \/><span class=\"gutter\">  14:<\/span><span class=\"syntax8\">use<\/span> constant PORT <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax5\">161<\/span>;<br \/><span class=\"gutterH\">  15:<\/span><span class=\"syntax8\">use<\/span> constant BASE_OID <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/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\">  16:<\/span><span class=\"syntax8\">use<\/span> constant INDEX_OID <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> BASE_OID . <span class=\"syntax13\">'<\/span><span class=\"syntax13\">.1.2<\/span><span class=\"syntax13\">'<\/span>;<br \/><span class=\"gutter\">  17:<\/span><span class=\"syntax8\">use<\/span> constant STATUS_OID <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> BASE_OID . <span class=\"syntax13\">'<\/span><span class=\"syntax13\">.1.100<\/span><span class=\"syntax13\">'<\/span>;<br \/><span class=\"gutter\">  18:<\/span><span class=\"syntax8\">use<\/span> constant VERSION <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax5\">2<\/span>;<br \/><span class=\"gutter\">  19:<\/span><span class=\"syntax8\">use<\/span> constant UNKNOWN_INDEX <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax18\">-<\/span><span class=\"syntax5\">1<\/span>;<br \/><span class=\"gutterH\">  20:<\/span><span class=\"syntax8\">use<\/span> constant DEFAULT_HOST <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax13\">'<\/span><span class=\"syntax13\">localhost<\/span><span class=\"syntax13\">'<\/span>;<br \/><span class=\"gutter\">  21:<\/span><span class=\"syntax8\">use<\/span> constant ERROR_CODE <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax5\">192<\/span>;<br \/><span class=\"gutter\">  22:<\/span><span class=\"syntax8\">use<\/span> constant OK_CODE <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax5\">0<\/span>;<br \/><span class=\"gutter\">  23:<\/span><span class=\"syntax8\">use<\/span> constant DEBUG <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax5\">0<\/span>;<br \/><span class=\"gutter\">  24:<\/span><br \/><span class=\"gutterH\">  25:<\/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\">3<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  26:<\/span>        <span class=\"syntax8\">die<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Please<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">provide<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">the<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">daemon<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">name<\/span><span class=\"syntax13\">,<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">restart<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">command<\/span><span class=\"syntax13\">,<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">and<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">a<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">destination<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">email<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">address<\/span><span class=\"syntax13\">!<\/span><span class=\"syntax13\">\"<\/span>;<br \/><span class=\"gutter\">  27:<\/span><span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  28:<\/span><span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$flag<\/span> <span class=\"syntax18\">=<\/span> OK_CODE;<br \/><span class=\"gutter\">  29:<\/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\">  30:<\/span>        <span class=\"syntax18\">-<\/span>hostname  <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> DEFAULT_HOST,<br \/><span class=\"gutter\">  31:<\/span>        <span class=\"syntax18\">-<\/span>community <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> SNMP_COMMUNITY,<br \/><span class=\"gutter\">  32:<\/span>        <span class=\"syntax18\">-<\/span>version   <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> VERSION,<br \/><span class=\"gutter\">  33:<\/span>        <span class=\"syntax18\">-<\/span>port      <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> PORT<br \/><span class=\"gutter\">  34:<\/span>);<br \/><span class=\"gutterH\">  35:<\/span><span class=\"syntax8\">if<\/span> (<span class=\"syntax9\">$error<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  36:<\/span>        <span class=\"syntax8\">die<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">ERROR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax9\">$<\/span><span class=\"syntax9\">0<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax9\">$<\/span><span class=\"syntax9\">error<\/span><span class=\"syntax13\">\"<\/span>;<br \/><span class=\"gutter\">  37:<\/span><span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  38:<\/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\">  39:<\/span>        <span class=\"syntax18\">-<\/span>baseoid <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> INDEX_OID<br \/><span class=\"gutterH\">  40:<\/span>);<br \/><span class=\"gutter\">  41:<\/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\">  42:<\/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=\"syntax9\">$<\/span><span class=\"syntax9\">0<\/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>, DEFAULT_HOST;<br \/><span class=\"gutter\">  43:<\/span>        <span class=\"syntax9\">$flag<\/span> <span class=\"syntax18\">=<\/span> ERROR_CODE;<br \/><span class=\"gutter\">  44:<\/span><span class=\"syntax18\">}<\/span> <span class=\"syntax8\">else<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\">  45:<\/span>        <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$index<\/span> <span class=\"syntax18\">=<\/span> UNKNOWN_INDEX;<br \/><span class=\"gutter\">  46:<\/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\">  47:<\/span>                <span class=\"syntax1\">#<\/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\">Index<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">for<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">the<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">desired<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">service.<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">The<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">key<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">index<\/span><br \/><span class=\"gutter\">  48:<\/span>                <span class=\"syntax1\">#<\/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><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><br \/><span class=\"gutter\">  49:<\/span>                <span class=\"syntax1\">#<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">to<\/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\">  50:<\/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\">0<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">\"<\/span>) <span class=\"syntax18\">{<\/span> <br \/><span class=\"gutter\">  51:<\/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\">  52:<\/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\">  53:<\/span>                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  54:<\/span>        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutterH\">  55:<\/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\">  56:<\/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\">  57:<\/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=\"syntax9\">$<\/span><span class=\"syntax9\">0<\/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\">  58:<\/span>                <span class=\"syntax9\">$flag<\/span> <span class=\"syntax18\">=<\/span> ERROR_CODE;<br \/><span class=\"gutter\">  59:<\/span>        <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">else<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\">  60:<\/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><span class=\"syntax1\"> <\/span><span class=\"syntax1\">according<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">to<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">SNMP!<\/span><br \/><span class=\"gutter\">  61:<\/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\">  62:<\/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\">  63:<\/span>                        <span class=\"syntax18\">-<\/span>varbindlist <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> [<span class=\"syntax9\">$key<\/span>]<br \/><span class=\"gutter\">  64:<\/span>                );<br \/><span class=\"gutterH\">  65:<\/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=\"gutter\">  66:<\/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\">  67:<\/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=\"syntax9\">$<\/span><span class=\"syntax9\">0<\/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\">$ARGV<\/span>[<span class=\"syntax5\">0<\/span>], <span class=\"syntax9\">$error<\/span>;<br \/><span class=\"gutter\">  68:<\/span>                        <span class=\"syntax9\">$flag<\/span> <span class=\"syntax18\">=<\/span> ERROR_CODE;<br \/><span class=\"gutter\">  69:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">elsif<\/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=\"gutterH\">  70:<\/span>                        <span class=\"syntax10\">printf<\/span>  <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">WARNING<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax9\">$<\/span><span class=\"syntax9\">0<\/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=\"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\">$ARGV<\/span>[<span class=\"syntax5\">0<\/span>], $<span class=\"syntax9\">$result2<\/span><span class=\"syntax18\">{<\/span><span class=\"syntax9\">$key<\/span><span class=\"syntax18\">}<\/span>;<br \/><span class=\"gutter\">  71:<\/span>                        <span class=\"syntax10\">printf<\/span>  <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">INFO<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax9\">$<\/span><span class=\"syntax9\">0<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">Executing<\/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\">$ARGV<\/span>[<span class=\"syntax5\">1<\/span>];<br \/><span class=\"gutter\">  72:<\/span>                        <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$output<\/span><span class=\"syntax18\">=<\/span><span class=\"syntax10\">`<\/span><span class=\"syntax9\">$<\/span><span class=\"syntax9\">ARGV<\/span><span class=\"syntax10\">[<\/span><span class=\"syntax10\">1<\/span><span class=\"syntax10\">]<\/span><span class=\"syntax10\"> <\/span><span class=\"syntax10\">2<\/span><span class=\"syntax10\">&gt;<\/span><span class=\"syntax10\">&<\/span><span class=\"syntax10\">1<\/span><span class=\"syntax10\">`<\/span>;<br \/><span class=\"gutter\">  73:<\/span>                        <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$exit_code<\/span> <span class=\"syntax18\">=<\/span> $<span class=\"syntax18\">?<\/span>;<br \/><span class=\"gutter\">  74:<\/span>                        <span class=\"syntax8\">my<\/span> <span class=\"syntax9\">$smtp<\/span> <span class=\"syntax18\">=<\/span> Net<span class=\"syntax18\">:<\/span><span class=\"syntax18\">:<\/span>SMTP<span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span><span class=\"syntax8\">new<\/span>(<br \/><span class=\"gutterH\">  75:<\/span>                                MAIL_SERVER,<br \/><span class=\"gutter\">  76:<\/span>                                Timeout <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> <span class=\"syntax5\">20<\/span>,<br \/><span class=\"gutter\">  77:<\/span>                                Debug   <span class=\"syntax18\">=<\/span><span class=\"syntax18\">&gt;<\/span> DEBUG<br \/><span class=\"gutter\">  78:<\/span>                        );<br \/><span class=\"gutter\">  79:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>mail(MAIL_FROM);<br \/><span class=\"gutterH\">  80:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>to(<span class=\"syntax9\">$ARGV<\/span>[<span class=\"syntax5\">2<\/span>]);<br \/><span class=\"gutter\">  81:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>data();<br \/><span class=\"gutter\">  82:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>datasend(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">To<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span> . <span class=\"syntax9\">$ARGV<\/span>[<span class=\"syntax5\">2<\/span>] . <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  83:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>datasend(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Subject<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span> . MAIL_SUBJECT . <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax9\">$<\/span><span class=\"syntax9\">ARGV<\/span><span class=\"syntax13\">[<\/span><span class=\"syntax13\">0<\/span><span class=\"syntax13\">]<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  84:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>datasend(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutterH\">  85:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>datasend(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Command<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">executed<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">to<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">restart<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">the<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">daemon<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  86:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>datasend(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  87:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>datasend(<span class=\"syntax9\">$ARGV<\/span>[<span class=\"syntax5\">1<\/span>]);<br \/><span class=\"gutter\">  88:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>datasend(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  89:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>datasend(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Command<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">output<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutterH\">  90:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>datasend(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  91:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>datasend(<span class=\"syntax9\">$output<\/span>);<br \/><span class=\"gutter\">  92:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>datasend(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\\n<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  93:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>datasend(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Exit<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">code<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax9\">$<\/span><span class=\"syntax9\">exit_code<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  94:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>dataend();<br \/><span class=\"gutterH\">  95:<\/span>                        <span class=\"syntax9\">$smtp<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span>quit;<br \/><span class=\"gutter\">  96:<\/span>                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  97:<\/span>        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  98:<\/span><span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  99:<\/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=\"gutterH\"> 100:<\/span><span class=\"syntax8\">if<\/span> (<span class=\"syntax9\">$error<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 101:<\/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=\"syntax9\">$<\/span><span class=\"syntax9\">0<\/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\">$ARGV<\/span>[<span class=\"syntax5\">0<\/span>], <span class=\"syntax9\">$error<\/span>;<br \/><span class=\"gutter\"> 102:<\/span>        <span class=\"syntax9\">$flag<\/span> <span class=\"syntax18\">=<\/span> ERROR_CODE;<br \/><span class=\"gutter\"> 103:<\/span><span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 104:<\/span><span class=\"syntax8\">if<\/span> (<span class=\"syntax10\">defined<\/span> <span class=\"syntax9\">$session<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\"> 105:<\/span>        <span class=\"syntax9\">$session<\/span><span class=\"syntax18\">-<\/span><span class=\"syntax18\">&gt;<\/span><span class=\"syntax10\">close<\/span>;<br \/><span class=\"gutter\"> 106:<\/span><span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 107:<\/span><span class=\"syntax8\">exit<\/span> <span class=\"syntax9\">$flag<\/span>;<br \/><span class=\"gutter\"> 108:<\/span><br \/><span class=\"gutter\"> 109:<\/span>__END__<br \/><span class=\"gutterH\"> 110:<\/span><br \/><span class=\"gutter\"> 111:<\/span><span class=\"syntax12\">=head1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">NAME<\/span><br \/><span class=\"gutter\"> 112:<\/span><br \/><span class=\"gutter\"> 113:<\/span><span class=\"syntax2\">SimpleWatchDog<\/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\">program<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">used<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">to<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">restart<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">daemons<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">if<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">fail<\/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=\"syntax2\">This<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">program<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">is<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">meant<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">to<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">be<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">executed<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">from<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">cron<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">in<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">order<\/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\">a<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">givem<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">program<\/span><span class=\"syntax2\">.<\/span><br \/><span class=\"gutter\"> 118:<\/span><span class=\"syntax2\">It<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">is<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">expected<\/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\">daemon<\/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\">runs<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">in<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">same<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">machine<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">where<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">this<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">program<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">runs<\/span><span class=\"syntax2\">.<\/span><br \/><span class=\"gutter\"> 119:<\/span><br \/><span class=\"gutterH\"> 120:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">head2<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">CONFIGURATION<\/span><br \/><span class=\"gutter\"> 121:<\/span><br \/><span class=\"gutter\"> 122:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">over4<\/span><br \/><span class=\"gutter\"> 123:<\/span><br \/><span class=\"gutter\"> 124:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">item<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Identify<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">which<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">process<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">name<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">to<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">put<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">on<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/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\">snmpd<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">conf<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">file<\/span><br \/><span class=\"gutterH\"> 125:<\/span><br \/><span class=\"gutter\"> 126:<\/span><span class=\"syntax2\">ps<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\">e<\/span><span class=\"syntax2\">|<\/span><span class=\"syntax2\">perl<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\">p<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\">i<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\">e<\/span><span class=\"syntax2\">'<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">$<\/span><span class=\"syntax2\">_<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">=<\/span><span class=\"syntax2\">~<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">s<\/span><span class=\"syntax2\">#<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">{<\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\">,<\/span><span class=\"syntax2\">}<\/span><span class=\"syntax2\">#<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">#<\/span><span class=\"syntax2\">g<\/span><span class=\"syntax2\">;<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">$<\/span><span class=\"syntax2\">_<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">=<\/span><span class=\"syntax2\">~<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">s<\/span><span class=\"syntax2\">#<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">#<\/span><span class=\"syntax2\">|<\/span><span class=\"syntax2\">#<\/span><span class=\"syntax2\">g<\/span><span class=\"syntax2\">;<\/span><span class=\"syntax2\">'<\/span><span class=\"syntax2\">|<\/span><span class=\"syntax2\">cut<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\">f5<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\">d<\/span><span class=\"syntax2\">'<\/span><span class=\"syntax2\">|<\/span><span class=\"syntax2\">'<\/span><span class=\"syntax2\">|<\/span><span class=\"syntax2\">sort<\/span><span class=\"syntax2\">|<\/span><span class=\"syntax2\">grep<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\">v<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">CMD<\/span><span class=\"syntax2\">|<\/span><span class=\"syntax2\">grep<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">myprogram<\/span><br \/><span class=\"gutter\"> 127:<\/span><br \/><span class=\"gutter\"> 128:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">item<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">*<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Modify<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">'<\/span><span class=\"syntax2\">snmpd<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">conf<\/span><span class=\"syntax2\">'<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">file<\/span><br \/><span class=\"gutter\"> 129:<\/span><br \/><span class=\"gutterH\"> 130:<\/span><span class=\"syntax2\">proc<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">myprogram<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">1<\/span><br \/><span class=\"gutter\"> 131:<\/span><br \/><span class=\"gutter\"> 132:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">item<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">*<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Restart<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">SNMPD<\/span><br \/><span class=\"gutter\"> 133:<\/span><br \/><span class=\"gutter\"> 134:<\/span><span class=\"syntax2\">service<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">restart<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">snmpd<\/span><br \/><span class=\"gutterH\"> 135:<\/span><br \/><span class=\"gutter\"> 136:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">item<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">*<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Modify<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">this<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">script<\/span><br \/><span class=\"gutter\"> 137:<\/span><br \/><span class=\"gutter\"> 138:<\/span><span class=\"syntax2\">Modify<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">variables<\/span><span class=\"syntax2\">:<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">MAIL_SERVER<\/span><span class=\"syntax2\">,<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">MAIL_SUBJECT<\/span><span class=\"syntax2\">,<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">SNMP_COMMUNITY<\/span><br \/><span class=\"gutter\"> 139:<\/span><br \/><span class=\"gutterH\"> 140:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">back<\/span><br \/><span class=\"gutter\"> 141:<\/span><br \/><span class=\"gutter\"> 142:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">head2<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">HOW<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">TO<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">RUN<\/span><br \/><span class=\"gutter\"> 143:<\/span><br \/><span class=\"gutter\"> 144:<\/span><span class=\"syntax2\">Put<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">an<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">entry<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">like<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">this<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">on<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">cron<\/span><span class=\"syntax2\">:<\/span><br \/><span class=\"gutterH\"> 145:<\/span><br \/><span class=\"gutter\"> 146:<\/span><span class=\"syntax2\">        <\/span><span class=\"syntax2\">#<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Keep<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">an<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">eye<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">on<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">daemon<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">'<\/span><span class=\"syntax2\">myprogram<\/span><span class=\"syntax2\">'<\/span><span class=\"syntax2\">,<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">every<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">10<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">minutes<\/span><br \/><span class=\"gutter\"> 147:<\/span><span class=\"syntax2\">        <\/span><span class=\"syntax2\">*<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">10<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">*<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">*<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">*<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">*<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">opt<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">SimpleWatchDog<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">plx<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">myprogram<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">etc<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">init<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">d<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">mypgrogram<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">restart<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">josevnz<\/span><span class=\"syntax2\">@<\/span><span class=\"syntax2\">domain<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">com<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">&gt;<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">var<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">log<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">myprogram<\/span><span class=\"syntax2\">-<\/span><span class=\"syntax2\">watchdog<\/span><span class=\"syntax2\">.<\/span><span class=\"syntax2\">log<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">2<\/span><span class=\"syntax2\">&gt;<\/span><span class=\"syntax2\">&<\/span><span class=\"syntax2\">1<\/span><br \/><span class=\"gutter\"> 148:<\/span><br \/><span class=\"gutter\"> 149:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">head1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">AUTHOR<\/span><br \/><span class=\"gutterH\"> 150:<\/span><br \/><span class=\"gutter\"> 151:<\/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\"> 152:<\/span><br \/><span class=\"gutter\"> 153:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">head1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">BLOG<\/span><br \/><span class=\"gutter\"> 154:<\/span><br \/><span class=\"gutterH\"> 155:<\/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\"> 156:<\/span><br \/><span class=\"gutter\"> 157:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">head1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">LICENSE<\/span><br \/><span class=\"gutter\"> 158:<\/span><br \/><span class=\"gutter\"> 159:<\/span><span class=\"syntax2\">GPL<\/span><br \/><span class=\"gutterH\"> 160:<\/span><br \/><span class=\"gutter\"> 161:<\/span><span class=\"syntax12\">=<\/span><span class=\"syntax12\">head1<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">VERSION<\/span><br \/><span class=\"gutter\"> 162:<\/span><br \/><span class=\"gutter\"> 163:<\/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\"> <\/span><span class=\"syntax2\">02<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">27<\/span><span class=\"syntax2\">\/<\/span><span class=\"syntax2\">2005<\/span><br \/><span class=\"gutter\"> 164:<\/span><br \/><span class=\"gutterH\"> 165:<\/span><span class=\"syntax12\">=cut<\/span><br \/><\/pre>\n<p>El crontab para nuestro programa:<\/p>\n<blockquote><p># Watchdog for the program smartd<br \/>*\/10 * * * * \/usr\/local\/sysadmin\/SimpleWatchDog.plx NBScpCopier.pl &#8220;\/etc\/init.d\/smartd restart&#8221; angelnegro@domain.com > \/var\/log\/smartd-watchdog.log 2>&amp;1<\/p><\/blockquote>\n<p>Aqui est\u00e1 el <a href=\"http:\/\/prdownloads.sourceforge.net\/elangelnegro\/SimpleWatchDog.plx?download\">c\u00f3digo<\/a> por si quiere bajarse el programita.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este post se parece mucho a uno anterior, el el cual utilizabamos Perl y SNMP para ver si una serie de procesos estaba muerto; Sin embargo en este caso lo que tenemos es un &#8216;watchdog&#8217;, un simple programa que es ejecutado cada cierto tiempoy si detecta que un programa en particular est\u00e1 caido, entonces trata <a class=\"read-more\" href=\"http:\/\/kodegeek.com\/blog\/2005\/03\/10\/echando-codigo-%c2%bfcomo-reiniciar-un-proceso-con-perl-y-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\/595"}],"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=595"}],"version-history":[{"count":0,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/595\/revisions"}],"wp:attachment":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/media?parent=595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/categories?post=595"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/tags?post=595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}