<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
   <head>
		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
	   <link href="/websvn/templates/Claranet/styles.css" rel="stylesheet" media="screen">
      <!--[if gte IE 5.5000]>
      <script type="text/javascript" src="/websvn/templates/Claranet/png.js"></script>
      <![endif]-->
      <title>
         WebSVN
            - Installations-Machines
               - Rev 9 -
         /Scripts/Linux/check-soft-raid.pl
      </title>

   <script>
      function setSubmit()
      {
         if (document.getElementById('comparesubmit'))
         {
            count = 0
            f = document.getElementById('compareform')
            for (i = 0 ; i < f.elements.length ; i++)
            if (f.elements[i].type == 'checkbox' && f.elements[i].checked)
            {
               count += 1
            }
            
            if (count == 2)
            {
               document.getElementById('comparesubmit').disabled = false
            }
            else
            {
               document.getElementById('comparesubmit').disabled = true
            }
         }
      }   
   
      function checkCB(chBox)
      {
         count = 0
         first = null
         f = chBox.form
         for (i = 0 ; i < f.elements.length ; i++)
         if (f.elements[i].type == 'checkbox' && f.elements[i].checked)
         {
            if (first == null && f.elements[i] != chBox)
               first = f.elements[i]
            count += 1
         }
         
         if (count > 2) 
         {
            first.checked = false
            count -= 1
         }
         
         if (count == 2)
         {
            if (document.getElementById('comparesubmit') != null) document.getElementById('comparesubmit').disabled = false
         }
         else
         {
            if (document.getElementById('comparesubmit') != null) document.getElementById('comparesubmit').disabled = true
         }
      }
   </script>

   </head>
   <body onload="setSubmit()">
   <hr>

<div align="right"><form action="/wsvn" method="post" name="projectform"><select name="rep"><option value="0" >AdminInstall</option><option value="1" >analyseur_mail_queue_postfix</option><option value="2" >auth-claranet</option><option value="3" >Backups-Rsync</option><option value="4" >CablesDB</option><option value="5" >cdeliver</option><option value="6" >cdeliver2</option><option value="7" >check_updates</option><option value="8" >Claradmin</option><option value="9" >Claranet-Auth-Sync</option><option value="10" >Claranet-Diagrams</option><option value="11" >Claranet-Mail</option><option value="12" >Claranet-Scripts</option><option value="13" >Command-Center</option><option value="14" >Compaqnet</option><option value="15" >completelDsl</option><option value="16" >Configs-Backups</option><option value="17" >cpop</option><option value="18" >cpop-ng</option><option value="19" >DNS-Scripts</option><option value="20" >EasyBiz-2000</option><option value="21" >EasyBiz-2004</option><option value="22" >Firewalls-Linux</option><option value="23" >FreeBSD-Administration</option><option value="24" >Freesurf-Cleaner</option><option value="25" >Freesurf-Mail</option><option value="26" >IGH</option><option value="27" >IGH_v2</option><option value="28" >imap-ng</option><option value="29" selected>Installations-Machines</option><option value="30" >IP_ACCOUNTING_SWITCH_POLL</option><option value="31" >libEasy</option><option value="32" >Logs-Sync</option><option value="33" >Mail-Backups</option><option value="34" >Mail-Delivery-Stats</option><option value="35" >Mail-Tools</option><option value="36" >Nagios</option><option value="37" >Planning-Astreintes</option><option value="38" >Postfix-Policy-Daemons</option><option value="39" >radius</option><option value="40" >Schemas-Baies</option><option value="41" >SMS-ALARM</option><option value="42" >svn.fr.clara.net</option><option value="43" >Systems-Misc</option></select><input type="submit" value="Go"><input type="hidden" name="selectproj" value="1"><input type="hidden" name="op" value="form"><input type="hidden" name="sc" value="0"></form></div>
<h2>Installations-Machines</h2>
[<a href="/wsvn/Installations-Machines/?rev=0&amp;sc=0">/]</a> [<a href="/wsvn/Installations-Machines/Scripts/?rev=0&amp;sc=0">Scripts/]</a> [<a href="/wsvn/Installations-Machines/Scripts/Linux/?rev=0&amp;sc=0">Linux/]</a> [<b>check-soft-raid.pl</b>] - Rev 9
<p>
<a href="/wsvn/Installations-Machines/Scripts/Linux/check-soft-raid.pl?op=diff&amp;rev=0&amp;sc=0">Compare with Previous</a> - <a href="/wsvn/Installations-Machines/Scripts/Linux/check-soft-raid.pl?op=blame&amp;rev=0&amp;sc=0">Blame</a>
<p>
<hr>
<table width="100%" border=0><tr><td class="row0">
<PRE>
<I><FONT COLOR="#B22222">#!/usr/bin/perl -w
</FONT></I>
<I><FONT COLOR="#B22222">#
</FONT></I><I><FONT COLOR="#B22222">#	Ce script examine tous les devices raid présents dans le fichier /proc/mdstat
</FONT></I><I><FONT COLOR="#B22222">#	et indique ceux dont le status n'est pas &quot;clean&quot;.
</FONT></I><I><FONT COLOR="#B22222">#
</FONT></I><I><FONT COLOR="#B22222">#	Yann Grossel 2006.05.12
</FONT></I><I><FONT COLOR="#B22222">#
</FONT></I>
<B><FONT COLOR="#A020F0">use</FONT></B> strict;

<B><FONT COLOR="#A020F0">my</FONT></B> $mdadm = <B><FONT COLOR="#BC8F8F">'/sbin/mdadm'</FONT></B>;
<B><FONT COLOR="#A020F0">my</FONT></B> $n_dev = 0;

<B><FONT COLOR="#A020F0">my</FONT></B> @problems;

<B><FONT COLOR="#A020F0">open</FONT></B> F, <B><FONT COLOR="#BC8F8F">'/proc/mdstat'</FONT></B>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">or</FONT></B> <B><FONT COLOR="#A020F0">die</FONT></B> <B><FONT COLOR="#BC8F8F">&quot;ERR Can't open /proc/mdstat: $!\n&quot;</FONT></B>;

<B><FONT COLOR="#A020F0">while</FONT></B> (&lt;F&gt;)
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">my</FONT></B> $dev;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">next</FONT></B> <B><FONT COLOR="#A020F0">unless</FONT></B> <B><FONT COLOR="#A020F0">m</FONT></B>/^(md\d+) /o;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$n_dev += 1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dev = $1;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">open</FONT></B> G, <B><FONT COLOR="#BC8F8F">&quot;${mdadm} -D /dev/${dev} |&quot;</FONT></B>;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">while</FONT></B> (&lt;G&gt;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">next</FONT></B> <B><FONT COLOR="#A020F0">unless</FONT></B> <B><FONT COLOR="#A020F0">m</FONT></B>/State : (.*)$/o;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">next</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> $1 <B><FONT COLOR="#A020F0">eq</FONT></B> <B><FONT COLOR="#BC8F8F">'clean'</FONT></B>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">next</FONT></B> <B><FONT COLOR="#A020F0">if</FONT></B> $1 <B><FONT COLOR="#A020F0">eq</FONT></B> <B><FONT COLOR="#BC8F8F">'active'</FONT></B>;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">my</FONT></B> $s = $1;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$s =~ <B><FONT COLOR="#A020F0">s</FONT></B>/clean, //go;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$s =~ <B><FONT COLOR="#A020F0">tr</FONT></B>/a-z/A-Z/;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">push</FONT></B> @problems, <B><FONT COLOR="#BC8F8F">&quot;${dev}=${s}&quot;</FONT></B>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">close</FONT></B> G;
}

<B><FONT COLOR="#A020F0">close</FONT></B> F;

<B><FONT COLOR="#A020F0">if</FONT></B> (<B><FONT COLOR="#A020F0">scalar</FONT></B>(@problems))
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">print</FONT></B> <B><FONT COLOR="#BC8F8F">&quot;ERR &quot;</FONT></B> . <B><FONT COLOR="#A020F0">join</FONT></B>(<B><FONT COLOR="#BC8F8F">&quot; &quot;</FONT></B>, @problems) . <B><FONT COLOR="#BC8F8F">&quot;\n&quot;</FONT></B>;
}
<B><FONT COLOR="#A020F0">else</FONT></B>
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">my</FONT></B> $p = <B><FONT COLOR="#BC8F8F">','</FONT></B>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">if</FONT></B> ($n_dev &gt; 2) { $p = <B><FONT COLOR="#BC8F8F">'s, all'</FONT></B>; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">elsif</FONT></B> ($n_dev &gt; 1) { $p = <B><FONT COLOR="#BC8F8F">'s, both'</FONT></B>; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B><FONT COLOR="#A020F0">print</FONT></B> <B><FONT COLOR="#BC8F8F">&quot;OK (${n_dev} md device${p} clean)\n&quot;</FONT></B>;
}

<B><FONT COLOR="#A020F0">exit</FONT></B> 0;

<I><FONT COLOR="#B22222"># vim: set ts=3 sw=3:
</FONT></I></PRE>
<HR>
<ADDRESS>Generated by <A HREF="http://www.iki.fi/~mtr/genscript/">GNU enscript 1.6.4</A>.</ADDRESS>
</BODY>
</HTML>
</td></tr></table>
<hr>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr><td align="left" class="footer">
<a href="/">Home</a> | <a href="/adm/projects/">Projects</a>
</td><td align="right" class="footer">
contact: <a href="mailto:yg@fr.clara.net">yg@fr.clara.net</a>
</td></tr></table>
</body>
</html>
