<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>nordri&#039;s Blog &#187; safe execution</title>
	<atom:link href="http://www.muspells.net/blog/tag/safe-execution/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.muspells.net/blog</link>
	<description>Estamos trabajando en ello...</description>
	<lastBuildDate>Wed, 04 Jan 2012 16:01:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Control de Comandos</title>
		<link>http://www.muspells.net/blog/2010/06/control-de-comandos/</link>
		<comments>http://www.muspells.net/blog/2010/06/control-de-comandos/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 08:45:00 +0000</pubDate>
		<dc:creator>Fede Diaz</dc:creator>
				<category><![CDATA[Linux Script]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[fail control]]></category>
		<category><![CDATA[safe execution]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://www.muspells.net/blog/?p=462</guid>
		<description><![CDATA[No hay nada más molesto para un sysadmin que correr los scripts en algún sistema y que alguno de los comandos que forman parte del código no esté presente en el sistema. Así, disponemos de comandos que miran que otros comandos están o no están dando el correspondiente aviso y abortando la ejecución. La sintaxis [...]]]></description>
			<content:encoded><![CDATA[<p>No hay nada más molesto para un sysadmin que correr los scripts en algún sistema y que alguno de los comandos que forman parte del código no esté presente en el sistema. Así, disponemos de comandos que miran que otros comandos están o no están dando el correspondiente aviso y abortando la ejecución.</p>
<p><span id="more-462"></span></p>
<p>La sintaxis como sigue:</p>
<pre>command -v $COMANDO </pre>
<p>Un ejemplo:
<pre>$ command -v cp
/bin/cp</pre>
<p>Ahora uno que no existe</p>
<pre>$ command -v prueba
$ $?
1</pre>
<p>Vemos como responde con la ruta al ejecutable en éxito y pone a 1 el flag de error cuando no existe. ¿Cómo lo usamos en un script? Muy fácil
<p>Lo primero que necesitamos es una variable <i>CMDLIST</i> donde listamos los comandos que necesitamos</p>
<pre>CMDLIST="ls cp nmap echo cat";</pre>
<p>y creamos un bucle para comprobar que existen o salimos con algún mensaje de error que indique que comando falta.</p>
<pre>
for i in $CMDLIST
do
  command -v $i >/dev/null &#038;&#038; continue || { echo "$i command not found."; exit 1; }
done
</pre>
<p>Dependiendo de la funcionalidad del script, el echo de comprobar que todos los elementos están nos puede ahorrar algún disgusto como perdida de datos o de tiempo ya que en el peor de los casos, el comando que falta puede ser el último de un programa de lotes que tarde varias horas en completarse.</p>
<div style="height:33px;" class="really_simple_share robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_like" style="width:100px;">
				<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.muspells.net%2Fblog%2F2010%2F06%2Fcontrol-de-comandos%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;colorscheme=light&amp;send=false&amp;height=27" 
						scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:27px;" allowTransparency="true"></iframe>
				</div><div class="really_simple_share_twitter" style="width:110px;">
					<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
						data-text="Control de Comandos. via @nordri" data-url="http://www.muspells.net/blog/2010/06/control-de-comandos/" 
						data-via=""  ></a> 
				</div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.muspells.net/blog/2010/06/control-de-comandos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

