X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=monitor%2Fscanapi.py;h=177affcb16341b6ebc2ca86bb1d76723f6a01de8;hb=fbe2fbd7f5d866205f878e68968dcef14a3812ab;hp=22e3e74fadf449a851e960e656cddc4614e2d8f8;hpb=32e64e33bc81735e22024c5a44510848bb3c88df;p=monitor.git diff --git a/monitor/scanapi.py b/monitor/scanapi.py index 22e3e74..177affc 100644 --- a/monitor/scanapi.py +++ b/monitor/scanapi.py @@ -184,10 +184,10 @@ class ScanNodeInternal(ScanInterface): # commands at once. values = {} nmap = command.CMD() - print "nmap -oG - -P0 -p22,80,806 %s | grep Host:" % nodename - (oval1,eval) = nmap.run_noexcept("nmap -oG - -P0 -p22,80,806 %s | grep Host:" % nodename) - (oval2,eval) = nmap.run_noexcept("nmap -oG - -P0 -p22,80,806 %s | grep Host:" % nodename) - (oval3,eval) = nmap.run_noexcept("nmap -oG - -P0 -p22,80,806 %s | grep Host:" % nodename) + print "nmap -oG - -P0 -p22,80,806 %s | grep -v Down | grep Ports:" % nodename + (oval1,eval) = nmap.run_noexcept("nmap -oG - -P0 -p22,80,806 %s | grep -v Down | grep Ports:" % nodename) + (oval2,eval) = nmap.run_noexcept("nmap -oG - -P0 -p22,80,806 %s | grep -v Down | grep Ports:" % nodename) + (oval3,eval) = nmap.run_noexcept("nmap -oG - -P0 -p22,80,806 %s | grep -v Down | grep Ports:" % nodename) # NOTE: an empty / error value for oval, will still work. values['port_status'] = {} (o1,continue_probe) = nmap_port_status(oval1) @@ -235,10 +235,13 @@ class ScanNodeInternal(ScanInterface): (oval, errval) = ssh.run_noexcept2(""" <<\EOF echo "{" echo ' "kernel_version":"'`uname -a`'",' - echo ' "bmlog":"'`ls /tmp/bm.log`'",' - echo ' "bootcd_version":"'`cat /mnt/cdrom/bootme/ID`'",' + echo ' "bmlog":"'`ls /tmp/bm.log || ls /tmp/source/BootManager.py`'",' + echo ' "bootcd_version":"'`cat /mnt/cdrom/bootme/ID || cat /usr/bootme/ID`'",' + echo ' "boot_server":"'`cat /mnt/cdrom/bootme/BOOTSERVER`'",' + echo ' "install_date":"'`python -c "import os,time,stat; print time.ctime(os.stat('/usr/boot/plnode.txt')[stat.ST_CTIME])" || python -c "import os,time,stat; print time.ctime(os.stat('/usr/boot/cacert.pem')[stat.ST_CTIME])"`'",' echo ' "nm_status":"'`ps ax | grep nm.py | grep -v grep`'",' echo ' "dns_status":"'`host boot.planet-lab.org 2>&1`'",' + echo ' "iptables_status":"'`iptables -t mangle -nL | awk '$1~/^[A-Z]+$/ {modules[$1]=1;}END{for (k in modules) {if (k) printf "%s ",k;}}'`'",' echo ' "princeton_comon_dir":"'`ls -d /vservers/princeton_comon`'",' echo ' "uptime":"'`cat /proc/uptime`'",' @@ -246,8 +249,11 @@ class ScanNodeInternal(ScanInterface): echo ' "princeton_comon_running":"'`ls -d /proc/virtual/$ID`'",' echo ' "princeton_comon_procs":"'`vps ax | grep $ID | grep -v grep | wc -l`'",' echo ' "fs_status":"'`grep proc /proc/mounts | grep ro, ; if [ -x /usr/bin/timeout.pl ] ; then timeout.pl 20 touch /var/log/monitor 2>&1 ; if [ -d /vservers/ ] ; then timeout.pl 20 touch /vservers/monitor.log 2>&1 ; fi ; fi`'",' - echo ' "rpm_version":"'`if [ -x /usr/bin/timeout.pl ] ; then timeout.pl 30 rpm -q NodeManager ; fi`'",' - echo ' "rpm_versions":"'`if [ -x /usr/bin/timeout.pl ] ; then timeout.pl 45 rpm -q -a ; fi`'",' + echo ' "rpm_version":"'`if [ -x /usr/bin/timeout.pl ] ; then /usr/bin/timeout.pl 30 rpm -q NodeManager ; fi`'",' + echo ' "rpm_versions":"'`if [ -x /usr/bin/timeout.pl ] ; then /usr/bin/timeout.pl 45 rpm -q -a | sort ; fi`'",' + echo ' "md5sums":"'`md5sum /etc/yum.conf /etc/yum.myplc.d/myplc.repo /etc/yum.myplc.d/stock.repo | awk '{print $1}'`'",' + echo ' "md5sum_yum":"'`grep -v -E "^#" /etc/yum.myplc.d/myplc.repo | md5sum`'",' + echo ' "nada":"'``'",' echo "}" EOF """) @@ -259,10 +265,14 @@ EOF """) break else: values.update({'kernel_version': "", 'bmlog' : "", 'bootcd_version' : '', + 'boot_server' : '', + 'install_date' : '', 'nm_status' : '', 'fs_status' : '', 'uptime' : '', 'dns_status' : '', + 'md5sums' : '', + 'md5sum_yum' : '', 'rpm_version' : '', 'rpm_versions' : '', 'princeton_comon_dir' : "", @@ -277,7 +287,7 @@ EOF """) continue_slice_check = True oval = values['princeton_comon_dir'] - if "princeton_comon_dir" in oval: + if "princeton_comon" in oval: values['princeton_comon_dir'] = True else: values['princeton_comon_dir'] = False @@ -341,7 +351,7 @@ EOF """) values['ssh_status'] = True if "2.6.17" in oval or "2.6.2" in oval: values['observed_category'] = 'PROD' - if "bm.log" in values['bmlog']: + if "bm.log" in values['bmlog'] or "BootManager" in values['bmlog']: values['observed_status'] = 'DEBUG' else: values['observed_status'] = 'BOOT' @@ -374,6 +384,7 @@ EOF """) values['firewall'] = False + #print "BEFORE:%s" % values # NOTE: A node is down if some of the public ports are not open if values['observed_status'] == "BOOT": # verify that all ports are open. Else, report node as down. @@ -384,6 +395,11 @@ EOF """) values['observed_status'] = 'DOWN' values['firewall'] = True + #if values['port_status']['22'] == "open" and \ + # values['port_status']['80'] == "closed" and \ + # values['port_status']['806'] == "open" : + # email_exception("%s port 80 blocked" % nodename, "possible VSERVER ref blocked") + #if not values['external_dns_status']: # email_exception("%s DNS down" % nodename) @@ -451,8 +467,11 @@ EOF """) print "ALLVERSIONS: %s %s" % (nodename, values['rpm_versions']) print "RPMVERSION: %s %s" % (nodename, values['rpm_version']) print "UPTIME: %s %s" % (nodename, values['uptime']) + print "MD5SUMS: %s %s" % (nodename, values['md5sums']) + print "MD5SUM_YUM: %s %s" % (nodename, values['md5sum_yum']) values = self.evaluate(nodename, values) + #print "%s %s" % (nodename, values) values['date_checked'] = datetime.now() except: @@ -510,13 +529,13 @@ class ScanPCU(ScanInterface): traceback.print_exc() continue_probe = False - if b_except or not continue_probe: return (None, None, None) + if b_except or not continue_probe: return (None, None) #### RUN NMAP ############################### if continue_probe: nmap = command.CMD() - print "nmap -oG - -P0 -p22,23,80,443,5869,9100,16992 %s | grep Host:" % reboot.pcu_name(values['plc_pcu_stats']) - (oval,eval) = nmap.run_noexcept("nmap -oG - -P0 -p22,23,80,443,5869,9100,16992 %s | grep Host:" % reboot.pcu_name(values['plc_pcu_stats'])) + print "nmap -oG - -P0 -p22,23,80,443,623,5869,9100,16992 %s | grep -v Down | grep Ports:" % reboot.pcu_name(values['plc_pcu_stats']) + (oval,eval) = nmap.run_noexcept("nmap -oG - -P0 -p22,23,80,443,623,5869,9100,16992 %s | grep -v Down | grep Ports:" % reboot.pcu_name(values['plc_pcu_stats'])) # NOTE: an empty / error value for oval, will still work. (values['port_status'], continue_probe) = nmap_port_status(oval) else: