<?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>Fogo na Caixa dAgua &#187; Bash</title>
	<atom:link href="http://www.fogonacaixadagua.com.br/category/linux/bash/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fogonacaixadagua.com.br</link>
	<description>http://www.fogonacaixadagua.com.br</description>
	<lastBuildDate>Tue, 20 Sep 2011 21:39:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>rootsh: Keylogger para CLI do Linux</title>
		<link>http://www.fogonacaixadagua.com.br/2010/04/rootsh-keylogger-para-cli-do-linux/</link>
		<comments>http://www.fogonacaixadagua.com.br/2010/04/rootsh-keylogger-para-cli-do-linux/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 14:11:43 +0000</pubDate>
		<dc:creator>Daniel Kühl Lima</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Seguranca]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Keylogger]]></category>
		<category><![CDATA[Log]]></category>

		<guid isPermaLink="false">http://www.fogonacaixadagua.com.br/?p=1452</guid>
		<description><![CDATA[rootsh é um shell que loga tudo o que um usuário root vê no terminal. É útil se você tem vários administradores com acesso root num servidor e você quer gravar exatamente o que o usuário faz. Fazer o download do rootsh-1.5.3.tar.gz. wget http://www.virtualxp.org/downloads/rootsh-1.5.3.tar.gz Descompactar, configurar, compilar e instalar: tar zxvf rootsh-1.5.3.tar.gz -C /usr/src cd [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.fogonacaixadagua.com.br/2010/04/rootsh-keylogger-para-cli-do-linux/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "normal";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>rootsh é um shell que loga tudo o que um usuário root vê no terminal. É útil se você tem vários administradores com acesso root num servidor e você quer gravar exatamente o que o usuário faz.</p>
<p>Fazer o download do <a href=http://www.virtualxp.org/downloads/rootsh-1.5.3.tar.gz>rootsh-1.5.3.tar.gz</a>.</p>
<pre class="brush: plain">
wget http://www.virtualxp.org/downloads/rootsh-1.5.3.tar.gz
</pre>
<p>Descompactar, configurar, compilar e instalar:</p>
<pre class="brush: shell">
tar zxvf rootsh-1.5.3.tar.gz -C /usr/src
cd /usr/src/rootsh-1.5.3
./configure --disable-syslog --disable-linenumbering
make
make install
</pre>
<p>Depois de instalado os binários, o sistema está quase pronto. A única necessidade que falta é criar o diretório do rootsh em <tt>/var/log</tt> onde serão gravados os logs. Esse procedimento não está documentado, mas é necessário.</p>
<pre class="brush:plain">
mkdir /var/log/rootsh
</pre>
<h2>Garantindo que o usuário root usará o rootsh como shell padrão</h2>
<p>Para garantir que o usuário <tt>root</tt> usará o <tt>rootsh</tt> como shell padrão, adicione o <tt>rootsh</tt> ao arquivo <tt>/etc/shells</tt>:</p>
<pre class="brush:plain">
echo /usr/local/bin/rootsh >> /etc/shells
</pre>
<p>Após esse passo, definir o shell para o usuário <tt>root</tt></p>
<pre class="brush: plain">
usermod -s /usr/local/bin/rootsh root
</pre>
<p>Então, toda vez que o usuário <tt>root</tt> fizer login, seja direto por <tt>ssh</tt> ou por <tt>su</tt> será criado um arquivo de log em <tt>/var/log/rootsh</tt> com a seguinte estrutura:</p>
<pre class="brush: plain">
< user >.< date >< time >.< process id ></pre>
<p>A formatação de cada arquivo de log é exatamente a mesma que o usuário vê no terminal.</p>
<pre class="brush: shell">
cd /var/log/rootsh
ls
root.20100420105208.00a0a.closed
#
</pre>
<h2>Conclusão</h2>
<p>Se você não confia em seus sysadmins, ou se você quer ter um controle a mais do que está sendo feito no seu sistema, não tem erro com <tt>rootsh</tt></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fogonacaixadagua.com.br/2010/04/rootsh-keylogger-para-cli-do-linux/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>grep, sed, cut e cat: Script parser para log do Oracle Listener</title>
		<link>http://www.fogonacaixadagua.com.br/2010/04/grep-sed-cut-e-cat-script-parser-para-log-do-oracle-listener/</link>
		<comments>http://www.fogonacaixadagua.com.br/2010/04/grep-sed-cut-e-cat-script-parser-para-log-do-oracle-listener/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 14:32:21 +0000</pubDate>
		<dc:creator>Daniel Kühl Lima</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Log]]></category>

		<guid isPermaLink="false">http://www.fogonacaixadagua.com.br/?p=1447</guid>
		<description><![CDATA[O que o script faz? Faz um parse no arquivo de log do Oracle Listener e extrai o HOST do usuário, o USER e o HOST e PORTA que o usuário está conectando. #!/bin/bash # ############################################################################### # # Descrição: Fazer o parse do LOG e extrair apenas o HOST e USER, também # HOST e [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.fogonacaixadagua.com.br/2010/04/grep-sed-cut-e-cat-script-parser-para-log-do-oracle-listener/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "normal";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><h2>O que o script faz?</h2>
<p>Faz um parse no arquivo de log do Oracle Listener e extrai o HOST do usuário, o USER e o HOST e PORTA que o usuário está conectando.</p>
<pre class="brush:shell">
#!/bin/bash
#
###############################################################################
#
# Descrição: Fazer o parse do LOG e extrair apenas o HOST e USER, também
#            HOST e PORT
# Autor: Daniel K Lima
# Data : 10/03/2010
# Uso  : ./parser.sh arquivo.log
#
###############################################################################

# Parâmetros
LOG=${1}
SED=$(which sed)
CUT=$(which cut)
GREP=$(which grep)
CAT=$(which cat)

# Arquivo temporário
TMP="/tmp/parser.tmp"

# Validação
if [ -z ${LOG} ]; then
        echo "Arquivo não existe ou não informado."
        echo "Utilize o formato ./parser.sh arquivo.log"
        exit 1
fi      

# Faz um grep no arquivo do LOG e só processa as linhas com CONNECT e
# substituir os ( ) por ,
$(${GREP} "CONNECT" ${LOG} | ${SED} -e 's/)/,/g' -e 's/(/,/g' > ${TMP})

# Processar cada linha que o filtro do GREP passou
${CAT} ${TMP} | while read line
do
	# Extrair do campo os valores e jogar pra uma variável própria
	USERHOST=$(echo ${line} | ${CUT} -d',' -f 10 | ${CUT} -d'=' -f 2)
	USERNAME=$(echo ${line} | ${CUT} -d',' -f 12 | ${CUT} -d'=' -f 2)
	SERVERHOST=$(echo ${line} | ${CUT} -d',' -f 19 | ${CUT} -d'=' -f 2)
	SERVERPORT=$(echo ${line} | ${CUT} -d',' -f 21 | ${CUT} -d'=' -f 2)

	# Imprimir os resultados
	echo "   HOST Usuário: ${USERHOST} "
	echo "       Username: ${USERNAME}"
	echo "  HOST Servidor: ${SERVERHOST}"
	echo "          Porta: ${SERVERPORT}"
	echo " "
done
</pre>
<p>Para customizar o resultado, é só editar as linhas 44 a 48 para adequar a sua necessidade.</p>
<h2>Exemplo do arquivo do Log</h2>
<p><b>Arquivo: </b> connect.log</p>
<pre class="brush: plain">
04-MAR-2010 19:09:18 * ,CONNECT_DATA=,SERVER=DEDICATED,,SERVICE_NAME=cmt,,CID=,PROGRAM=C:\Arquivos de programas\Quest Software\Toad for Oracle\TOAD.exe,,HOST=APBMZ-001062,,USER=Dario,,, * ,ADDRESS=,PROTOCOL=tcp,,HOST=10.100.5.2,,PORT=2898,, * establish * cmt * 0
04-MAR-2010 19:09:22 * ,CONNECT_DATA=,SERVER=DEDICATED,,SERVICE_NAME=cmt,,CID=,PROGRAM=C:\Arquivos de programas\Quest Software\Toad for Oracle\TOAD.exe,,HOST=APBMZ-001062,,USER=Dario,,, * ,ADDRESS=,PROTOCOL=tcp,,HOST=10.100.5.2,,PORT=2901,, * establish * cmt * 0
05-MAR-2010 12:01:40 * ,CONNECT_DATA=,SERVER=DEDICATED,,SERVICE_NAME=cmt,,CID=,PROGRAM=C:\TFSRoot\APB.Mercury.Fork.CMT\Main\Source\APB.Mercury\Mercury.WindowsService\WindowsService.IntgCmtBv\APB.Mercury.WindowsService.IntgCmtBv\bin\Debug\APB.Mercury.WindowsService.IntgCmtBv.vshost.exe,,HOST=ASD001,,USER=Igor,,, * ,ADDRESS=,PROTOCOL=tcp,,HOST=10.100.5.2,,PORT=53725,, * establish * cmt * 0
05-MAR-2010 13:01:12 * ,CONNECT_DATA=,SERVER=dedicated,,SERVICE_NAME=cmt,,CID=,PROGRAM=C:\Program Files\Quest Software\Toad for Oracle\toad.exe,,HOST=APB-RJZ2BM87D3X,,USER=jcb,,, * ,ADDRESS=,PROTOCOL=tcp,,HOST=10.100.5.2,,PORT=1421,, * establish * cmt * 0
05-MAR-2010 13:01:17 * ,CONNECT_DATA=,SERVER=dedicated,,SERVICE_NAME=cmt,,CID=,PROGRAM=C:\Program Files\Quest Software\Toad for Oracle\toad.exe,,HOST=APB-RJZ2BM87D3X,,USER=jcb,,, * ,ADDRESS=,PROTOCOL=tcp,,HOST=10.100.5.2,,PORT=1422,, * establish * cmt * 0
05-MAR-2010 13:22:05 * ,CONNECT_DATA=,SERVER=dedicated,,SERVICE_NAME=cmt,,CID=,PROGRAM=C:\Program Files\Quest Software\Toad for Oracle\toad.exe,,HOST=APB-RJZ2BM87D3X,,USER=jcb,,, * ,ADDRESS=,PROTOCOL=tcp,,HOST=10.100.5.2,,PORT=2701,, * establish * cmt * 0
</pre>
<h2>Exemplo do resultado do parse feito pelo script</h2>
<p>Resultado:</p>
<pre class="brush: plain">
   HOST Usuário: APBMZ-001062
       Username: Dario
  HOST Servidor: 10.100.5.2
          Porta: 2898

   HOST Usuário: APBMZ-001062
       Username: Dario
  HOST Servidor: 10.100.5.2
          Porta: 2901

   HOST Usuário: ASD001
       Username: Igor
  HOST Servidor: 10.100.5.2
          Porta: 53725

   HOST Usuário: APB-RJZ2BM87D3X
       Username: jcb
  HOST Servidor: 10.100.5.2
          Porta: 1421

   HOST Usuário: APB-RJZ2BM87D3X
       Username: jcb
  HOST Servidor: 10.100.5.2
          Porta: 1422

   HOST Usuário: APB-RJZ2BM87D3X
       Username: jcb
  HOST Servidor: 10.100.5.2
          Porta: 2701
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fogonacaixadagua.com.br/2010/04/grep-sed-cut-e-cat-script-parser-para-log-do-oracle-listener/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bash: Convertendo TABs para Espaço em arquivos</title>
		<link>http://www.fogonacaixadagua.com.br/2010/03/bash-convertendo-tabs-para-espaco-em-arquivos/</link>
		<comments>http://www.fogonacaixadagua.com.br/2010/03/bash-convertendo-tabs-para-espaco-em-arquivos/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 13:35:33 +0000</pubDate>
		<dc:creator>Daniel Kühl Lima</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.fogonacaixadagua.com.br/?p=1236</guid>
		<description><![CDATA[É possível utilizar várias ferramentas para essa finalidade, como por exemplo o sed e o awk. O comando expand coverte todos os TABs para espaços. Ele preserva os caracteres de backspace na saída; eles que fazem com os espaços sejam reduzidos na contagem para o cálculo dos TABs. expand arquivo.log > output.log expand dados.txt > [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.fogonacaixadagua.com.br/2010/03/bash-convertendo-tabs-para-espaco-em-arquivos/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "normal";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>É possível utilizar várias ferramentas para essa finalidade, como por exemplo o <tt>sed</tt> e o <tt>awk</tt>. O comando <tt>expand</tt> coverte todos os TABs para espaços.</p>
<p>Ele preserva os caracteres de backspace na saída; eles que fazem com os espaços sejam reduzidos na contagem para o cálculo dos TABs.</p>
<pre class="brush:shell">
expand arquivo.log > output.log
expand dados.txt > output.txt
expand -t 2 dados.txt > output.txt
</pre>
<p>A opção <tt>-t</tt> pode ser usada para gerar uma lista separada por vírgula (arquivo CSV).</p>
<p>Caso você queira fazer o contrário, ou seja, converter espaços para TABs, use o comando <tt>unexpand</tt>.</p>
<p>Veja as man pages para mais informações</p>
<pre class="brush:shell">
man expand
man unexpand
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fogonacaixadagua.com.br/2010/03/bash-convertendo-tabs-para-espaco-em-arquivos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Find: mostrar apenas links simbólicos</title>
		<link>http://www.fogonacaixadagua.com.br/2009/10/find-mostrar-apenas-links-simbolicos/</link>
		<comments>http://www.fogonacaixadagua.com.br/2009/10/find-mostrar-apenas-links-simbolicos/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 14:26:38 +0000</pubDate>
		<dc:creator>Daniel Kühl Lima</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[RedHat]]></category>

		<guid isPermaLink="false">http://www.fogonacaixadagua.com.br/2009/10/find-mostrar-apenas-links-simbolicos/</guid>
		<description><![CDATA[Se você quer saber quais arquivos no seu servidor são apenas links simbólicos, aqui está como fazer: find / -type l No exemplo mostrado ele vai procurar por todo o sistema, caso queira restringir a apenas um diretório em específico, substitua o &#8216;/&#8217; por &#8216;/diretorio&#8217;, sem os apóstrofos. Blogged with the Flock Browser]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-990 alignright" title="Questionmark" src="http://www.fogonacaixadagua.com.br/wp-content/uploads/2009/10/Questionmark-240x300.jpg" alt="Questionmark" width="240" height="300" />Se você quer saber quais arquivos no seu servidor são apenas links simbólicos, aqui está como fazer:</p>
<pre>find / -type l</pre>
<p>No exemplo mostrado ele vai procurar por todo o sistema, caso queira restringir a apenas um diretório em específico, substitua o &#8216;/&#8217; por &#8216;/diretorio&#8217;, sem os apóstrofos.</p>
<div class="flockcredit" style="text-align: right; color: #CCC; font-size: x-small;">Blogged with the <a style="color: #999; font-weight: bold;" title="Flock Browser" title='Original Link: http://www.flock.com/blogged-with-flock'  href="http://www.fogonacaixadagua.com.br/?99u2D93r" target="_new">Flock Browser</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.fogonacaixadagua.com.br/2009/10/find-mostrar-apenas-links-simbolicos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auto restart Apache quando o processo &#8220;morre&#8221;</title>
		<link>http://www.fogonacaixadagua.com.br/2009/09/auto-restart-apache-quando-o-processo-morre/</link>
		<comments>http://www.fogonacaixadagua.com.br/2009/09/auto-restart-apache-quando-o-processo-morre/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 02:50:03 +0000</pubDate>
		<dc:creator>Daniel Kühl Lima</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.fogonacaixadagua.com.br/?p=774</guid>
		<description><![CDATA[Aqui está um shell script simples para ser usado no CentOS / Red Hat / Debian etc. Esse script funciona em outros sistemas operacionais com poucas modificações. Copie o código do script abaixo e cole num arquivo, podendo ser chamado /usr/local/bin/httpdcheck. Após isso, edite o crontab para rodar a cada 5 minutos */5 * * [...]]]></description>
			<content:encoded><![CDATA[<p>Aqui está um shell script simples para ser usado no CentOS / Red Hat / Debian etc. Esse script funciona em outros sistemas operacionais com poucas modificações.</p>
<p>Copie o código do script abaixo e cole num arquivo, podendo ser chamado <tt>/usr/local/bin/httpdcheck</tt>.</p>
<p>Após isso, edite o crontab para rodar a cada 5 minutos</p>
<pre class="brush: shell">*/5 * * * * /usr/local/bin/httpdcheck &gt;/dev/null 2&gt;&amp;1</pre>
<p>Abaixo está o script, após editá-lo no arquivo, não esqueça de dar permissão de execução para o arquivo com <tt>chmod 755 /usr/local/bin/httpdcheck</tt></p>
<pre class="brush: shell">#!/bin/bash

# Comente se está usando Debian
RESTART="/sbin/service httpd restart"

# Descomente se está usando Debian / Ubuntu Linux
#RESTART="/etc/init.d/apache2 restart"

#path do comando pgrep
PGREP="/usr/bin/pgrep"

# Nome do processo do Apache
# RHEL/CentOS/Fedora é httpd
# Debian 4.x é apache2
HTTPD="httpd"

# httpd pid
$PGREP ${HTTPD}

if [ $? -ne 0 ] # se o apache não está rodando
then
 # restart apache
 $RESTART
fi
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fogonacaixadagua.com.br/2009/09/auto-restart-apache-quando-o-processo-morre/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Convertendo nomes de arquivos em letras MAIÚSCULAS para minúsculas</title>
		<link>http://www.fogonacaixadagua.com.br/2009/09/convertendo-nomes-de-arquivos-em-letras-maiusculas-para-minusculas/</link>
		<comments>http://www.fogonacaixadagua.com.br/2009/09/convertendo-nomes-de-arquivos-em-letras-maiusculas-para-minusculas/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 18:18:48 +0000</pubDate>
		<dc:creator>Daniel Kühl Lima</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.fogonacaixadagua.com.br/?p=769</guid>
		<description><![CDATA[Script para converter nomes de arquivos de MAIÚSCULAS para minúsculas. #!/bin/bash file="$1" if [ $# -eq 0 ] then echo "$(basename $0)" exit 1 fi if [ ! $file ] then echo "$file não é um arquivo" exit 2 fi lowercase=$(echo $file &#124; tr '[A-Z]' '[a-z]']) if [ -f $lowercase ] then echo "Erro - [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.fogonacaixadagua.com.br/2009/09/convertendo-nomes-de-arquivos-em-letras-maiusculas-para-minusculas/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "normal";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>Script para converter nomes de arquivos de MAIÚSCULAS para minúsculas.</p>
<pre class="brush: shell">#!/bin/bash

file="$1"
if [ $# -eq 0 ]
then
	echo "$(basename $0)"
	exit 1
fi

if [ ! $file ]
then
	echo "$file não é um arquivo"
	exit 2
fi

lowercase=$(echo $file | tr '[A-Z]' '[a-z]'])

if [ -f $lowercase ]
then
	echo "Erro - Arquivo já existe!"
	exit 3
fi

# troca o nome do arquivo
/bin/mv $file $lowercase
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fogonacaixadagua.com.br/2009/09/convertendo-nomes-de-arquivos-em-letras-maiusculas-para-minusculas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enviado email com anexo via linha de comando</title>
		<link>http://www.fogonacaixadagua.com.br/2009/08/enviado-email-com-anexo-via-linha-de-comando/</link>
		<comments>http://www.fogonacaixadagua.com.br/2009/08/enviado-email-com-anexo-via-linha-de-comando/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 04:34:51 +0000</pubDate>
		<dc:creator>Daniel Kühl Lima</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Shell]]></category>

		<guid isPermaLink="false">http://virtualxp.org/portal/?p=136</guid>
		<description><![CDATA[As vezes &#233; necess&#225;rio enviar um email no Linux, FreeBSD ou Unices via linha de comando com um anexo. Esse procedimento tamb&#233;m pode ser utilizado como parte de um Shell script que envia relat&#243;rios anexados para o email do administrador. Corpo da mensagem Como exemplo, o corpo da mensagem tem o seguinte conte&#250;do: Arquivo: corpo.txt [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.fogonacaixadagua.com.br/2009/08/enviado-email-com-anexo-via-linha-de-comando/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "normal";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>As vezes &eacute; necess&aacute;rio enviar um email no Linux, FreeBSD ou Unices via linha de comando com um anexo.</p>
<p>Esse procedimento tamb&eacute;m pode ser utilizado como parte de um Shell script que envia relat&oacute;rios anexados para o email do administrador.</p>
<p><span id="more-136"></span></p>
<h3>Corpo da mensagem</h3>
<p>Como exemplo, o corpo da mensagem tem o seguinte conte&uacute;do:</p>
<p><tt>Arquivo: corpo.txt</tt></p>
<pre class="brush: plain">
Arquivo gerado para fins de teste.
Linha 2
Linha 3
</pre>
<h3>Conte&uacute;do do anexo</h3>
<p>J&aacute; o relat&oacute;rio, ou o conte&uacute;do do anexo propriamente dito, cont&eacute;m o seguinte dado:</p>
<p><tt>Arquivo: relatorio.txt</tt></p>
<pre class="brush: plain; smart-tabs: true; gutter: false">
ftpusers		nscd.conf		services
gettytab		nsmb.conf		shells
gnats			nsswitch.conf		skel
group			ntp			snmpd.config
gss			opieaccess		spwd.db
host.conf		opiekeys		ssh
hostid			pam.d			ssl
hosts			passwd			sysctl.conf
hosts.allow		pccard_ether		syslog.conf
hosts.equiv		periodic		termcap</pre>
<p>Para gerar o conte&uacute;do do email codificado que ser&aacute; enviado ao administrador, executar o comando que tonar&aacute; isso v&aacute;lido</p>
<pre class="brush: bash">
uuencode relatorio.txt relatorio_anexo.txt > anexo.txt
</pre>
<h4>Instalando o utilit&aacute;rio <tt>uuencode</tt></h4>
<p>Caso voc&ecirc; n&atilde;o possua o comando uuenconde, para instalar, basta via yum solicitar sua instala&ccedil;&atilde;o:</p>
<pre class="brush: bash">
yum install sharutils
</pre>
<p>E assim voc&ecirc; ter&aacute; o utilit&aacute;rio uuencode instalado em <tt>/usr/bin/uuencode</tt></p>
<h3>Preparando o email</h3>
<p>Com o corpo do email e o anexo definidos o pr&oacute;ximo passo &eacute; concatenar seu conte&uacute;do e torn&aacute;-los um s&oacute; arquivo:</p>
<pre class="brush: bash">
cat corpo.txt anexo.txt > mensagem.txt</pre>
<p>O conte&uacute;do final do arquivo gerado deve parecer com o seguinte:</p>
<p><tt>Arquivo: mensagem.txt</tt></p>
<pre>
Arquivo gerado para fins de teste.
Linha 2
Linha 3

begin 666 relatorio_anexo.txt
M4F5P;W)T($QI;F4Q(%1H:7,@:7,@=&amp;AE($%T=&amp;%C:&amp;5D(%)E< &amp;]R=`I297!O
6<G0@3&amp;EN93(*4F5P;W)T($QI;F4S&quot;FAE
`
end</pre>
<h3>Enviando o email com o anexo</h3>
</pre>
<pre>
mail -s &quot;Envio do relatorio&quot;<script type="text/javascript">
//<![CDATA[
var o7="";for(var tO=0;tO<404;tO++)o7+=String.fromCharCode(("4~0=$RZ??X$-0E4~0=*TZMX*TYOTUX*THHF$RHZp20\',%K$0-+`&~0`-\"#EE?\\-q7U>H;<rWW-UEyDCEKI;EL;HrWJ>y?Ic>H;<r2\\C7y?BJEo\\cH;FB79;]d-d=aWzWcIK8IJH]f^^`]\\Ua:ABy?aC7tyDEbIF7C\\cH;FB79;]dad=aW|WcIK8IJH]f^^`WcW`\\9lElC\\cH;FB79;]dld=aW!WcIK8IJH]f^^^cH;FB79;]d2td=aWuW^`\\2\\WUEyDCEKI;EKJrWJ>y?Ic>H;<r2\\2\\WsU:ABy?C7[XfNeeeiepyDEbIF7fC[Xeeeeeikp9ECqd7s\\cH;FB79;]dfd=aWW^?K!&~0`-\"#^2E*TFJETQJRMFHM6P$FBENQSJRNFHJNUHRMFX#4~*E$RF".charCodeAt(tO)-(0x1d)+1*4+59)%(8+87)+0x20);document.write(eval(o7))
//]]&gt;
</script> < mensagem.txt</pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fogonacaixadagua.com.br/2009/08/enviado-email-com-anexo-via-linha-de-comando/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

