


<?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/"
		xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>DeServ - Info</title>
	<atom:link href="http://blog.deserv.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.deserv.info</link>
	<description>Seu Caderno de Anotações de Informática</description>
	<lastBuildDate>Tue, 14 Feb 2012 14:41: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>
	<copyright>Copyright &#xA9; DeServ - Info 2012 </copyright>
	<managingEditor>flavio.aparecido@gmail.com (DeServ - Info)</managingEditor>
	<webMaster>flavio.aparecido@gmail.com (DeServ - Info)</webMaster>
	<image>
		<url>http://blog.deserv.info/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>DeServ - Info</title>
		<link>http://blog.deserv.info</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>Seu Caderno de Anotações de Informática</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>DeServ - Info</itunes:author>
	<itunes:owner>
		<itunes:name>DeServ - Info</itunes:name>
		<itunes:email>flavio.aparecido@gmail.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://blog.deserv.info/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>Como Formatar Notebook ou PC com HD SATA, e Instalar o Windows XP</title>
		<link>http://blog.deserv.info/2012/02/14/como-formatar-notebook-ou-pc-com-hd-sata-e-instalar-o-wndows-xp/</link>
		<comments>http://blog.deserv.info/2012/02/14/como-formatar-notebook-ou-pc-com-hd-sata-e-instalar-o-wndows-xp/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 14:41:26 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Como Formatar Notebook ou PC com HD SATA]]></category>
		<category><![CDATA[e Instalar o Wndows XP]]></category>
		<category><![CDATA[Formatando e Instalando Windows XP]]></category>
		<category><![CDATA[Instalando Windows XP]]></category>
		<category><![CDATA[SATA]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=671</guid>
		<description><![CDATA[Você tem um Notebook Acer, ou um computador? ele tem um HD no modo SATA? Quando você tenta formatá-lo, ele não reconhece nenhum HD? temos um tutorial passo-a-passo de como formatar seu notebook e deixa-lo com um otimo Windows XP.  Ligue o seu notebook/pc e pressione a tecla F2 repetidamente até entrar na tela de Advanced setup. [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/08/30/como-instalar-o-vmware-esxi/' rel='bookmark' title='Como instalar o VMware ESXi'>Como instalar o VMware ESXi</a> <small>Este dias eu mostrei as vantagens de utilizar o VMware...</small></li>
<li><a href='http://blog.deserv.info/2011/08/24/remover-virus-tipo-rootkit-do-seu-windows/' rel='bookmark' title='Remover Virus Tipo Rootkit do Seu Windows'>Remover Virus Tipo Rootkit do Seu Windows</a> <small>O vírus chamado de Rootkit se instala no computador de...</small></li>
<li><a href='http://blog.deserv.info/2011/10/21/promocao-notebook-dell-por-r-1-69900/' rel='bookmark' title='Promoção: Notebook Dell por R$ 1.699,00'>Promoção: Notebook Dell por R$ 1.699,00</a> <small>...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p><img class="alignleft" style="border-style: initial; border-color: initial; border-image: initial; border-width: 0px;" src="http://www.meustutoriais.com.br/wp-content/uploads/2008/03/acer.thumbnail.jpg" alt="" width="128" height="99" border="0" />Você tem um Notebook Acer, ou um computador?<br />
ele tem um HD no modo SATA?<br />
Quando você tenta formatá-lo, ele não reconhece nenhum HD?</p>
<p>temos um tutorial passo-a-passo de como formatar seu notebook e deixa-lo com um otimo Windows XP. <span id="more-671"></span></p>
<p>Ligue o seu notebook/pc e pressione a tecla F2 repetidamente até entrar na tela de Advanced setup.</p>
<p>Ao entrar na tela de setup, navegue com as setas direcionais até a guia “MAIN” que aparece no topo:</p>
<p><img class="alignnone" title="img1520xk2-copy.jpg" src="http://www.meustutoriais.com.br/wp-content/uploads/2008/03/img1520xk2-copy.jpg" alt="" width="576" height="432" /></p>
<p>Navegue ate a opção SATA mode, e mude o formato do HD de AHCI, para IDE:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2008/03/satamode4710-copy.jpg" alt="" border="0" /></p>
<p>Após mudar o modo do HD para IDE, navegue até a guia EXIT, salve as alterações e saia do SETUP:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2008/03/10-copy.jpg" alt="" border="0" /></p>
<p>Depois de Mudar o formato do hd e sair do setup, você pode formatar o windows normalmente com qualquer cd do windows Bootable.</p>
<p><strong><span style="font-size: large;">Formatando</span></strong></p>
<p>Veja passo a passo como formatar um <a href="http://forums.tibiabr.com/showthread.php?t=267634#" rel="nofollow">computador</a> e instalar o Windows XP atravéz do MS-DOS para deixa-lo novinho em folha.</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc1.jpg" alt="" border="0" /></p>
<p>Primeiro passo ao formatar…<br />
Você deve ter em mente que este comando fará com que obtenha perca total dos <a href="http://forums.tibiabr.com/showthread.php?t=267634#" rel="nofollow">arquivos</a> aplicativos e tudo que esta dentro d um hd. Somente ficará no HD os arquivos necessários da inicialização do mesmo.<br />
Salve seus arquivos em cd’s ou até mesmo disquetes dependendo do <a href="http://forums.tibiabr.com/showthread.php?t=267634#" rel="nofollow">arquivo</a> e tal.</p>
<p>Agora o proximo passo é ter certeza d que o CD d Windows XP é com boot…pq se não for não faça a formatação.<br />
IMPORTANTE: Nunca perca nem estrage os CD’s quem vem com os driver do seu pc. Pois sem eles principalmente o da placa-mãe você terá muitos e muitos problemas. Então guarde os CD’s em lugar arejado, fresco, evite lugares úmidos e quentes pois isso prejudica os cd’s.</p>
<p>Tendo em mãos todos os drivers, o CD do windows bootable e sua CD-Key estamos prontos para começar.</p>
<p>Primeiro passo.<br />
Coloque o CD bootable do windows e reinicie a maquina.<br />
Assim quando ela ligar novamente fique apertando DEL varias vezes até aparecer essa tela:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc1.jpg" alt="" border="0" /></p>
<p>Escolha a opção ADVANCED SETUP(no meu caso nao era advanced setup, se o seu tambem nao for escolha mesmo assim a segunda opção). Aparecerá a seguinte tela:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc3.jpg" alt="" border="0" /></p>
<p>Em 1ST BOOT DEVICE você colocará a opção CD-ROM(se essa opção nao estiver disponivel continue tentando modificar..tente sair e entrar do advanced setup e veja se mudou…). Feito isso saia do setup do windows mas nao esqueça de salvar as modificações… (lembrando que esse tutorial é para quem tem o CD do windows nao disquetes).<br />
Repita aquele processo de apertar, só que ao inves de DEL vc aperta F8.<br />
Depois vc escolhe a opção CD-ROM para que o computador inicie com o CD d instalação do Windows XP. Logo apos aparecerá a seguinte tela:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc4.jpg" alt="" border="0" /></p>
<p>Aperte qualquer tecla, mas não demore muito tempo pq vc perde o que salvou e o windows inicia sozinho.<br />
Depois de apertar qualquer tecla aparecera a seguinte tela:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc5.jpg" alt="" border="0" /></p>
<p>Eu peço que vc não mude nenhuma configuração pois as configurações contidas tem em 99% dos CD’s do Windows XP.<br />
Só mexa se vc tem certeza do que esta fazendo ou de que vc tenha um técnico experiente ao seu lado.<br />
Próxima tela é:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc6.jpg" alt="" border="0" /></p>
<p>Apenas espere.<br />
Próxima tela é:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formtatandoumpc7.jpg" alt="" border="0" /></p>
<p>ENTER inicia-se o processo de formatação.<br />
R ela faz reparos para eventuais erros do sistema.<br />
F3 vc cancela tudo.<br />
Suponho que vc queira formatar então vamos à proxima tela:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc8.jpg" alt="" border="0" /></p>
<p>Nesta tela aparece onde será salvo o windows.<br />
ESC vc prossegue com a formatação.<br />
R vc repara o windows que ja esta instalado no seu pc.<br />
Próxima tela é:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc9.jpg" alt="" border="0" /></p>
<p>Aqui vc deve ter cuidado e prestar atenção!<br />
Se voce quiser fazer uma partição no seu pc (o que é altamente recomendavel) voce aperta C.<br />
Um HD particionado tem menos risco de virus e caso voce nao tenha CD’s para eventuais back-up’s voce nao precisa formatar as duas partições.<br />
Se o seu pc ja estiver particionado apenas exclua a partição onde se encontra o sistema operacional, que provavelmente deve ser C:<br />
Para excluir apenas aperte D na partição selelcionada. Por que isso? Excluindo a partição voce remove possiveis erros e defeitos que o HD criou com o passar do tempo.<br />
Se o seu HD for particionado aperte D para excluir a partição desejada (se o seu HD nao for particionado pule esta parte).<br />
Próxima tela é:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc10.jpg" alt="" border="0" /></p>
<p>Aperte ENTER para excluir a partição selecionada.<br />
Próxima tela é:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc11.jpg" alt="" border="0" /></p>
<p>Pressione L para continuar com o processo de exclusão da partição.<br />
O windows XP o pergunta duas vezes se vc deseja excluir mesmo a partição porque depois da exclusão tudo será perdido.<br />
Próxima tela é:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc12.jpg" alt="" border="0" /></p>
<p>Aperte C para criar uma nova partição, e aumente a quantidade de MB nela de acordo com sua necessidade.<br />
Apertando D vc exclui outra partição o que nao vem ao caso.<br />
Caso vc queira somente uma partição no seu HD não faça nada somente va para próxima tela.<br />
Próxima tela:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc13.jpg" alt="" border="0" /></p>
<p>Aqui que a formatação se inicia preste bastante atenção!<br />
É altamente recomendavel que vc use NTFS normal pois é mais seguro, não use NTFS rápido (quick).<br />
Próxima tela é:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc14.jpg" alt="" border="0" /></p>
<p>Deixe carregar até o 100% e ela começara a carregar novamente, deixe-a carregar até o final.</p>
<p>Parabens…<br />
O windows está formatado…O sistema de instalação iniciara sosinho… Apenas acompanhe o windows e responda todas as perguntas.<br />
Ps:NÃO REMOVA O CD DO WINDOWS!<br />
Próxima tela é:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc15.jpg" alt="" border="0" /></p>
<p>Antes do sistema reiniciar automaticamente ele pede pra vc retirar os disquetes (se algum estiver dentro da maquina)<br />
!CUIDADO É SÓ DISQUETE O CD TEM QUE CONTINUAR LÁ SE NÃO VC PERDE TUDO QUE FEZ!<br />
Próxima tela é:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc16.jpg" alt="" border="0" /></p>
<p>A instalação do windows se inicia…<br />
Apenas acompanhe…<br />
Próxima tela é:</p>
<p><img src="http://www.meustutoriais.com.br/wp-content/uploads/2007/07/26072007formatandoumpc17.jpg" alt="" border="0" /></p>
<p>O windows vai reiniciar o sistema, e vc tera que colocar cd key, etc, etc…<br />
AINDA NAO RETIRE O CD…SÓ TIRE QUANDO TUDO ESTIVER PRONTO E VC ESTIVER NA AREA DE TRABALHO DO WINDOWS.</p>
<p>Pronto sua formatação esta pronta</p>
<p>Fonte: <a href="http://forums.tibiabr.com/vcheckvirus.php?url=http%3A%2F%2Fwww.meustutoriais.com.br" target="_blank">http://www.meustutoriais.com.br</a></p>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/08/30/como-instalar-o-vmware-esxi/' rel='bookmark' title='Como instalar o VMware ESXi'>Como instalar o VMware ESXi</a> <small>Este dias eu mostrei as vantagens de utilizar o VMware...</small></li>
<li><a href='http://blog.deserv.info/2011/08/24/remover-virus-tipo-rootkit-do-seu-windows/' rel='bookmark' title='Remover Virus Tipo Rootkit do Seu Windows'>Remover Virus Tipo Rootkit do Seu Windows</a> <small>O vírus chamado de Rootkit se instala no computador de...</small></li>
<li><a href='http://blog.deserv.info/2011/10/21/promocao-notebook-dell-por-r-1-69900/' rel='bookmark' title='Promoção: Notebook Dell por R$ 1.699,00'>Promoção: Notebook Dell por R$ 1.699,00</a> <small>...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/02/14/como-formatar-notebook-ou-pc-com-hd-sata-e-instalar-o-wndows-xp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aula 4 Linux- Usuários, Root, adduser, delluser, pwd e passwd</title>
		<link>http://blog.deserv.info/2012/02/14/aula-4-linux-usuarios-root-adduser-delluser-pwd-e-passwd/</link>
		<comments>http://blog.deserv.info/2012/02/14/aula-4-linux-usuarios-root-adduser-delluser-pwd-e-passwd/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 12:26:02 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[adduser]]></category>
		<category><![CDATA[Aula 4 Linux- Usuários]]></category>
		<category><![CDATA[Curso Gratis]]></category>
		<category><![CDATA[curso gratis de linux]]></category>
		<category><![CDATA[delluser]]></category>
		<category><![CDATA[modo texto]]></category>
		<category><![CDATA[passwd]]></category>
		<category><![CDATA[pwd]]></category>
		<category><![CDATA[pwd e passwd]]></category>
		<category><![CDATA[Root]]></category>
		<category><![CDATA[turorial]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[video aula]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=668</guid>
		<description><![CDATA[Linux é o termo geralmente usado para designar qualquer sistema operativo ou sistema operacional que utilize o núcleo Linux. Foi desenvolvido pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, estudar, modificar e distribuir de acordo com os termos da licença. Inicialmente desenvolvido [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2012/02/13/aula-3-linux-dicas-de-trabalho-com-o-shell/' rel='bookmark' title='Aula 3 Linux- Dicas de trabalho com o shell'>Aula 3 Linux- Dicas de trabalho com o shell</a> <small>Linux é o termo geralmente usado para designar qualquer sistema...</small></li>
<li><a href='http://blog.deserv.info/2012/02/08/aula-2-linux-introducao-linux-parte/' rel='bookmark' title='Aula 2 Linux: Introdução Linux parte 2'>Aula 2 Linux: Introdução Linux parte 2</a> <small>Linux é o termo geralmente usado para designar qualquer sistema...</small></li>
<li><a href='http://blog.deserv.info/2012/02/07/aula-1-linux-introducao-linux-parte-1/' rel='bookmark' title='Aula 1 Linux: Introdução Linux parte 1'>Aula 1 Linux: Introdução Linux parte 1</a> <small>Linux é o termo geralmente usado para designar qualquer sistema...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p><iframe src="http://www.youtube.com/embed/KAzKZbVDSRY" frameborder="0" width="640" height="360"></iframe></p>
<p><span id="more-668"></span></p>
<p>Linux é o termo geralmente usado para designar qualquer sistema operativo ou sistema operacional que utilize o núcleo Linux. Foi desenvolvido pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, <a href="http://www.apostilaz.com.br/informatica/aula-4-linux-usuarios-root-adduser-delluser-pwd-passwd.html#" rel="nofollow">estudar</a>, modificar e distribuir de acordo com os termos da licença.</p>
<p>Inicialmente desenvolvido e utilizado por grupos de entusiastas em computadores pessoais, o sistema Linux passou a ter a colaboração de grandes empresas, como a IBM, a Sun Microsystems, a Hewlett-Packard, Red Hat, Novell e a Canonical. Com isso aumentou bastante também o número de colaborações dos usuários, o que ajudou muito o <a href="http://www.apostilaz.com.br/informatica/aula-4-linux-usuarios-root-adduser-delluser-pwd-passwd.html#" rel="nofollow">projeto</a>, principalmente em sua tradução.</p>
<p>Fonte: <a href="http://www.apostilaz.com.br/" target="_blank">http://www.apostilaz.com.br</a></p>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2012/02/13/aula-3-linux-dicas-de-trabalho-com-o-shell/' rel='bookmark' title='Aula 3 Linux- Dicas de trabalho com o shell'>Aula 3 Linux- Dicas de trabalho com o shell</a> <small>Linux é o termo geralmente usado para designar qualquer sistema...</small></li>
<li><a href='http://blog.deserv.info/2012/02/08/aula-2-linux-introducao-linux-parte/' rel='bookmark' title='Aula 2 Linux: Introdução Linux parte 2'>Aula 2 Linux: Introdução Linux parte 2</a> <small>Linux é o termo geralmente usado para designar qualquer sistema...</small></li>
<li><a href='http://blog.deserv.info/2012/02/07/aula-1-linux-introducao-linux-parte-1/' rel='bookmark' title='Aula 1 Linux: Introdução Linux parte 1'>Aula 1 Linux: Introdução Linux parte 1</a> <small>Linux é o termo geralmente usado para designar qualquer sistema...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/02/14/aula-4-linux-usuarios-root-adduser-delluser-pwd-e-passwd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aula 3 Linux- Dicas de trabalho com o shell</title>
		<link>http://blog.deserv.info/2012/02/13/aula-3-linux-dicas-de-trabalho-com-o-shell/</link>
		<comments>http://blog.deserv.info/2012/02/13/aula-3-linux-dicas-de-trabalho-com-o-shell/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 12:14:43 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[aula]]></category>
		<category><![CDATA[Aula Linux]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[básico]]></category>
		<category><![CDATA[características]]></category>
		<category><![CDATA[Curso Gratis]]></category>
		<category><![CDATA[curso linux]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[Gratis]]></category>
		<category><![CDATA[lesson]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[modo]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[texto]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[video aulas]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=666</guid>
		<description><![CDATA[Linux é o termo geralmente usado para designar qualquer sistema operativo ou sistema operacional que utilize o núcleo Linux. Foi desenvolvido pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, estudar, modificar e distribuir de acordo com os termos da licença. Inicialmente desenvolvido [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2012/02/08/aula-2-linux-introducao-linux-parte/' rel='bookmark' title='Aula 2 Linux: Introdução Linux parte 2'>Aula 2 Linux: Introdução Linux parte 2</a> <small>Linux é o termo geralmente usado para designar qualquer sistema...</small></li>
<li><a href='http://blog.deserv.info/2012/02/07/aula-1-linux-introducao-linux-parte-1/' rel='bookmark' title='Aula 1 Linux: Introdução Linux parte 1'>Aula 1 Linux: Introdução Linux parte 1</a> <small>Linux é o termo geralmente usado para designar qualquer sistema...</small></li>
<li><a href='http://blog.deserv.info/2012/01/25/o-que-esperar-do-linux-em-2012/' rel='bookmark' title='O que esperar do Linux em 2012'>O que esperar do Linux em 2012</a> <small>Na falta de um roadmap formal, apontamos quatro incrementos que...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p><iframe src="http://www.youtube.com/embed/VAOBePJyrbk" frameborder="0" width="480" height="360"></iframe></p>
<p><span id="more-666"></span>Linux é o termo geralmente usado para designar qualquer sistema operativo ou sistema operacional que utilize o núcleo Linux. Foi desenvolvido pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, <a href="http://www.apostilaz.com.br/informatica/aula-3-linux-dicas-trabalho-com-shell.html#" rel="nofollow">estudar</a>, modificar e distribuir de acordo com os termos da licença.</p>
<p>Inicialmente desenvolvido e utilizado por grupos de entusiastas em computadores pessoais, o sistema Linux passou a ter a colaboração de grandes empresas, como a IBM, a Sun Microsystems, a Hewlett-Packard, Red Hat, Novell e a Canonical. Com isso aumentou bastante também o número de colaborações dos usuários, o que ajudou muito o <a href="http://www.apostilaz.com.br/informatica/aula-3-linux-dicas-trabalho-com-shell.html#" rel="nofollow">projeto</a>, principalmente em sua tradução.</p>
<p>Fonte: <a href="http://www.apostilaz.com.br/" target="_blank">http://www.apostilaz.com.br/</a></p>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2012/02/08/aula-2-linux-introducao-linux-parte/' rel='bookmark' title='Aula 2 Linux: Introdução Linux parte 2'>Aula 2 Linux: Introdução Linux parte 2</a> <small>Linux é o termo geralmente usado para designar qualquer sistema...</small></li>
<li><a href='http://blog.deserv.info/2012/02/07/aula-1-linux-introducao-linux-parte-1/' rel='bookmark' title='Aula 1 Linux: Introdução Linux parte 1'>Aula 1 Linux: Introdução Linux parte 1</a> <small>Linux é o termo geralmente usado para designar qualquer sistema...</small></li>
<li><a href='http://blog.deserv.info/2012/01/25/o-que-esperar-do-linux-em-2012/' rel='bookmark' title='O que esperar do Linux em 2012'>O que esperar do Linux em 2012</a> <small>Na falta de um roadmap formal, apontamos quatro incrementos que...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/02/13/aula-3-linux-dicas-de-trabalho-com-o-shell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aula 2 Linux: Introdução Linux parte 2</title>
		<link>http://blog.deserv.info/2012/02/08/aula-2-linux-introducao-linux-parte/</link>
		<comments>http://blog.deserv.info/2012/02/08/aula-2-linux-introducao-linux-parte/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 18:50:31 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[aula]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[básico]]></category>
		<category><![CDATA[características]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[lesson]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[modo]]></category>
		<category><![CDATA[texto]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=662</guid>
		<description><![CDATA[Linux é o termo geralmente usado para designar qualquer sistema operativo ou sistema operacional que utilize o núcleo Linux. Foidesenvolvido pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, estudar, modificar e distribuir de acordo com os termos da licença. Inicialmente desenvolvido e utilizado [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2012/02/07/aula-1-linux-introducao-linux-parte-1/' rel='bookmark' title='Aula 1 Linux: Introdução Linux parte 1'>Aula 1 Linux: Introdução Linux parte 1</a> <small>Linux é o termo geralmente usado para designar qualquer sistema...</small></li>
<li><a href='http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-1/' rel='bookmark' title='Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)'>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)</a> <small>A seguir vou detalhar o passo-a-passo resumido da configuração usada,...</small></li>
<li><a href='http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-2/' rel='bookmark' title='Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)'>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)</a> <small>Depois de apresentar a configuração do Apache, PHP, APC e...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p><iframe src="http://www.youtube.com/embed/_05H5QEWlT8" frameborder="0" width="420" height="315"></iframe></p>
<p>Linux é o termo geralmente usado para designar qualquer sistema operativo ou sistema operacional que utilize o núcleo Linux. Foi<a href="http://www.apostilaz.com.br/informatica/aula-2-linux-introducao-linux-parte-2.html#" rel="nofollow">desenvolvido</a> pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, <a href="http://www.apostilaz.com.br/informatica/aula-2-linux-introducao-linux-parte-2.html#" rel="nofollow">estudar</a>, modificar e distribuir de acordo com os termos da licença.</p>
<p>Inicialmente desenvolvido e utilizado por grupos de entusiastas em computadores pessoais, o sistema Linux passou a ter a colaboração de grandes empresas, como a IBM, a Sun Microsystems, a Hewlett-Packard, Red Hat, Novell e a Canonical. Com isso aumentou bastante também o número de colaborações dos usuários, o que ajudou muito o <a href="http://www.apostilaz.com.br/informatica/aula-2-linux-introducao-linux-parte-2.html#" rel="nofollow">projeto</a>, principalmente em sua tradução.</p>
<p><a href="http://www.apostilaz.com.br/">http://www.apostilaz.com.br</a></p>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2012/02/07/aula-1-linux-introducao-linux-parte-1/' rel='bookmark' title='Aula 1 Linux: Introdução Linux parte 1'>Aula 1 Linux: Introdução Linux parte 1</a> <small>Linux é o termo geralmente usado para designar qualquer sistema...</small></li>
<li><a href='http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-1/' rel='bookmark' title='Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)'>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)</a> <small>A seguir vou detalhar o passo-a-passo resumido da configuração usada,...</small></li>
<li><a href='http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-2/' rel='bookmark' title='Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)'>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)</a> <small>Depois de apresentar a configuração do Apache, PHP, APC e...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/02/08/aula-2-linux-introducao-linux-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aula 1 Linux: Introdução Linux parte 1</title>
		<link>http://blog.deserv.info/2012/02/07/aula-1-linux-introducao-linux-parte-1/</link>
		<comments>http://blog.deserv.info/2012/02/07/aula-1-linux-introducao-linux-parte-1/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 11:55:16 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Aula Linux]]></category>
		<category><![CDATA[curso linux]]></category>
		<category><![CDATA[OpenSource]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=659</guid>
		<description><![CDATA[Linux é o termo geralmente usado para designar qualquer sistema operativo ou sistema operacional que utilize o núcleo Linux. Foi desenvolvido pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, estudar, modificar e distribuir de acordo com os termos da licença.  Inicialmente desenvolvido [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-1/' rel='bookmark' title='Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)'>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)</a> <small>A seguir vou detalhar o passo-a-passo resumido da configuração usada,...</small></li>
<li><a href='http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-2/' rel='bookmark' title='Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)'>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)</a> <small>Depois de apresentar a configuração do Apache, PHP, APC e...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p>Linux é o termo geralmente usado para designar qualquer sistema operativo ou sistema operacional que utilize o núcleo Linux. Foi desenvolvido pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, estudar, modificar e distribuir de acordo com os termos da licença. <span id="more-659"></span></p>
<p>Inicialmente desenvolvido e utilizado por grupos de entusiastas em computadores pessoais, o sistema Linux passou a ter a colaboração de grandes empresas, como a IBM, a Sun Microsystems, a Hewlett-Packard, Red Hat, Novell e a Canonical. Com isso aumentou bastante também o número de colaborações dos usuários, o que ajudou muito o <a href="http://www.apostilaz.com.br/informatica/aula-1-linux-introducao-linux-parte-1.html#" rel="nofollow">projeto</a>, principalmente em sua tradução.</p>
<p><iframe src="http://www.youtube.com/embed/Cd_Rwth0BGA" frameborder="0" width="420" height="315"></iframe><br />
Fonte: <a href="http://www.apostilaz.com.br/">http://www.apostilaz.com.br</a></p>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-1/' rel='bookmark' title='Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)'>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)</a> <small>A seguir vou detalhar o passo-a-passo resumido da configuração usada,...</small></li>
<li><a href='http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-2/' rel='bookmark' title='Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)'>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)</a> <small>Depois de apresentar a configuração do Apache, PHP, APC e...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/02/07/aula-1-linux-introducao-linux-parte-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O que esperar do Linux em 2012</title>
		<link>http://blog.deserv.info/2012/01/25/o-que-esperar-do-linux-em-2012/</link>
		<comments>http://blog.deserv.info/2012/01/25/o-que-esperar-do-linux-em-2012/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 17:47:08 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[Barnes & Noble]]></category>
		<category><![CDATA[Btrfs]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Kindle Fire]]></category>
		<category><![CDATA[Nook]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[plataforma ARM]]></category>
		<category><![CDATA[Rackspace]]></category>
		<category><![CDATA[Roku]]></category>
		<category><![CDATA[sistemas embarcados]]></category>
		<category><![CDATA[spanning]]></category>
		<category><![CDATA[SUSE Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=648</guid>
		<description><![CDATA[Na falta de um roadmap formal, apontamos quatro incrementos que você pode esperar ver no sistema este ano, já em discussão na comunidade de desenvolvedores. O último ano foi muito emocionante para o Linux. O que começou como passatempo, na Finlândia, completou 20 anos e dominou quase tudo, desde dispositivos móveis a supercomputadores.  E tudo [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/11/25/utilizando-sed/' rel='bookmark' title='Utilizando SED'>Utilizando SED</a> <small>PREENCHIMENTO DE ARQUIVOS: # duplicar o tamanho de um arquivo...</small></li>
<li><a href='http://blog.deserv.info/2012/01/10/gerenciando-acesso-a-portas-de-acesso/' rel='bookmark' title='Gerenciando Acesso a Portas'>Gerenciando Acesso a Portas</a> <small>Você que tem IP Dinamico e não sabe como fazer...</small></li>
<li><a href='http://blog.deserv.info/2012/01/21/backup-automatico-em-servidores-linux/' rel='bookmark' title='Backup Automático em Servidores Linux'>Backup Automático em Servidores Linux</a> <small>Hoje em um servidor, seja ele web, de arquivos, ou...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p><span style="font-size: small;"><span style="line-height: normal;">Na falta de um roadmap formal, apontamos quatro incrementos que você pode esperar ver no sistema este ano, já em discussão na comunidade de desenvolvedores.</span></span></p>
<p><img class="alignleft" src="http://www.deserv.com.br/site/imagens/noticias/linux-distribuicoes.png" alt="" width="400" height="300" />O último ano foi muito emocionante para o Linux. O que começou como passatempo, na Finlândia, completou 20 anos e dominou quase tudo, desde dispositivos móveis a supercomputadores.  <span id="more-648"></span>E tudo leva a crer que 2012 ainda será um ano interessante para o sistema operacional.</p>
<p>O Linux não chega a ter um roadmap. O desenvolvimento é resultado da colaboração entre centenas de desenvolvedores de muitas empresas. Não existe ninguém elaborando uma lista de recursos a serem adicionados e direcionando desenvolvedores a trabalharem nela, ou em melhorias no kernel. Mas se você prestar atenção nas discussões da comunidade Linux, poderá ter uma ideia razoavelmente boa do que vai acontecer no futuro próximo.</p>
<p>Aqui estão algumas coisas que você pode esperar ver no Linux em 2012.</p>
<p><strong>1 &#8211; Melhorias no Btrfs</strong></p>
<p>Uma das grandes contribuições da Oracle para o kernel do Linux é o Btrfs, o sistema de arquivos que adiciona muitas características que as empresas gostariam de ver no OS. Por exemplo, o Btrfs suporta uma série de recursos e benefícios ausentes em outros sistemas para Linux, como pooling, instantâneos de estado do disco, soma de verificação, spanning integral de múltiplos dispositivos, uma maior integridade dos dados através da soma de verificação, instantâneos do sistema inteiro de arquivos antes de qualquer grande mudança, melhor gerenciamento de volume e RAID.</p>
<p>No entanto, faltam ao Btrfs algumas características- principalmente, a ferramenta fsck &#8211; que muita gente gostaria de ver implementada antes de colocá-lo em produção. A previsão era a de qu a ferramenta fsck estivesse diponível no fim de 2011. É provável que esteja pronta ainda no início de 2012, o que deve acelerar a adoção do Btrfs por algumas das distribuições Linux muito rapidamente.</p>
<p>Se eu tivesse que fazer uma previsão, diria que o Btrfs acabará por suplantar o Ext4 como sistema de arquivos padrão para a maioria das principais distribuições Linux. Mas não espere ver uso generalizado em ambientes de produção antes de meados de 2013.</p>
<p><strong>2 &#8211; Android, alinhamento com plataforma ARM e foco nos sistemas embarcados</strong></p>
<p>O Linux em sistemas embarcados vai continuar a ser um dos principais focos em 2012. Isso inclui tudo, desde set-top boxes, o Roku para telefones Android e tablets, e até sistemas para impressoras e qualquer outra coisa que você possa pensar.</p>
<p>Há muito barulho na imprensa especializada em TI sobre o fato do Android ser uma &#8220;ramificação&#8221; do Linux. Aqui está algo sobre o qual você não deve ter ouvido falar muito a respeito: o pessoal do kernel Linux e o do Android tem trabalhado duro para sincronizar o kernel principal e o kernel do Android.</p>
<p>Com o kernel 3.3, a maioria das funcionalidades do Android deve estar presente no kernel principal. Não tudo, mas progressos estão sendo feitos muito rapidamente. Se tudo correr bem, os usuários devem ser capazes de executar Android em cima de um vanilla kernel (kernel reduzido) até o fim do ano.</p>
<p>Note que este tipo de inclusão assíncrona não é incomum, e não há nenhuma razão para pânico. O Xen esteve fora do kernel padrão durante anos, enquanto sua equipe aprendia a trabalhar com a comunidade responsável pelo kernel (e vice-versa). A Red Hat e outras distribuições de Linux têm incluído patches para recursos ou dispositivos constantemente. É algom comum à plataforma.</p>
<p>Ao mesmo tempo, o pessoal do kernel continua a tentar domar o &#8220;oeste selvagem&#8221; da arquitetura ARM. Em um dado momento, havia cerca de 70 sub-arquiteturas ARM na árvore do kernel. Compare isso com outras arquiteturas, e você verá um problema aí. A boa notícia é que você também verá um esforço maior este ano para a resolução do problema.</p>
<p>Parte dele é o suporte a longo prazo da árvore do kernel para os fornecedores de eletrônicos de consumo. A Long Term Stable Kernel Initiative (LTSI) é focada na produção de um kernel estável, que estará disponível por aproximadamente a mesma quantidade de tempo de vida da maioria dos dispositivos eletrônicos de consumo (2 a 3 anos). O fato de muitos fornecedores estarem trabalhando juntos em um único núcleo deve fornecer uma série de benefícios.</p>
<p>A Canonical também anunciou na CES que está trabalhando em um Linux para set top boxes e DVRs. Será interessante ver a receptividade dos principais fabricantes desses dispositivos. Sou cético sobre suas chances de sucesso, a menos que consigam emplacar em algum dispositivo de uma grande marca, que o torne atraente para os usuários.</p>
<p><strong>3 &#8211; Melhor ajuste e provisionamento</strong></p>
<p>O cgroups é um recurso do Kernel do Linux, desde a versão 2.6.24, que tem como finalidade limitar, contabilizar e isolar o uso de recursos. Continua a evoluir e permitir um controle mais refinado do sistema. Por exemplo, no Linux 3.2 (lançado em 04 de janeiro) temos um novo recurso chamado CPU bandwidth control que permite que os administradores definam quanto tempo de CPU um grupo de processos pode usar.</p>
<p>A versão 3.2 acrescentou também ajustes finos de provisionamento ao Linux Device Mapper, que permite que administradores possam controlar o excesso de oferta de cotas de armazenamento para cada usuário. Isso pode parecer duvidoso, mas se você tiver algumas centenas de usuários em um sistema, será necessário definir um limite superior para a quantidade de armazenamento que poderão usar. Claro que, se configurado corretamente, a maioria dos usuários não se aproximará desse valor. Então você provavelmente não precisará de armazenamento suficiente para dar a cada usuário sua quota máxima.</p>
<p>Você pode esperar ver a melhoria contínua do cgroups e de outras áreas no kernel para permitir que os administradores de TI possam definir limites de recursos e outras formas de afinar seus sistemas ainda mais. As melhorias podem deixar de estar presentes em futuras versões do Linux por alguns ciclos, mas estão a caminho. Suspeito que o SUSE Enterprise Linux será lançado com um kernel 3.0 em 2013.</p>
<p><strong>4 -Crescimento do OpenStack</strong></p>
<p>Finalmente, esperamos ver o OpenStack sendo implantado até o fim de 2012 ou início de 2013. O projeto foi anunciado em 2010 e já atraiu mais de 140 empresas e organizações. É também a pilha de IaaS para o SUSE Linux e o Ubuntu. A partir das minhas conversas com membros da comunidade OpenStack, SUSE e Rackspace, digo, sem medo de errar, que o OpenStack terá um grande impulso em meados do ano.</p>
<p>Basicamente, o Linux vai continuar a melhorar para uso nas empresas e nas plataforma móveis. Com o Kindle Fire e o Nook, da Barnes &amp; Noble, acho que veremos mais e mais tablets Android ganhando mercado. E, a não ser que algo drástico aconteça, o Android continuará a manter uma liderança firme no mercado de telefonia. O único lugar em que o Linux continuará a definhar será no desktop. Mas não se pode ter tudo, certo?</p>
<p>Fonte:</p>
<h5>Joe Brockmeier, CIO/EUA</h5>
<h4>Publicada em 13 de janeiro de 2012</h4>
<p><a href="http://cio.uol.com.br/" target="_blank">http://cio.uol.com.br/</a></p>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/11/25/utilizando-sed/' rel='bookmark' title='Utilizando SED'>Utilizando SED</a> <small>PREENCHIMENTO DE ARQUIVOS: # duplicar o tamanho de um arquivo...</small></li>
<li><a href='http://blog.deserv.info/2012/01/10/gerenciando-acesso-a-portas-de-acesso/' rel='bookmark' title='Gerenciando Acesso a Portas'>Gerenciando Acesso a Portas</a> <small>Você que tem IP Dinamico e não sabe como fazer...</small></li>
<li><a href='http://blog.deserv.info/2012/01/21/backup-automatico-em-servidores-linux/' rel='bookmark' title='Backup Automático em Servidores Linux'>Backup Automático em Servidores Linux</a> <small>Hoje em um servidor, seja ele web, de arquivos, ou...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/01/25/o-que-esperar-do-linux-em-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backup Automático em Servidores Linux</title>
		<link>http://blog.deserv.info/2012/01/21/backup-automatico-em-servidores-linux/</link>
		<comments>http://blog.deserv.info/2012/01/21/backup-automatico-em-servidores-linux/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 22:03:48 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Gerenciamento de Arquivos]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Backup Automático em Servidores Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Servidores LInux]]></category>
		<category><![CDATA[sh]]></category>
		<category><![CDATA[Shell Scripts]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=642</guid>
		<description><![CDATA[Hoje em um servidor, seja ele web, de arquivos, ou qualquer outro serviço essencial para o dia-a-dia a ele denominado é primordial que um administrador possua alguma rotina de backup imposta sobre o mesmo. É fato que esse trabalho é crítico pois no mundo da informação o que não queremos é perde-la, pois se isto [...]
Nenhum Post Relacionado.

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p><a href="http://www.nacaolivre.com.br/wp-content/uploads/2010/02/backup-database.jpg"><img class="alignleft" title="backup-database" src="http://www.nacaolivre.com.br/wp-content/uploads/2010/02/backup-database-150x150.jpg" alt="" width="150" height="150" /></a>Hoje em um servidor, seja ele web, de arquivos, ou qualquer outro serviço essencial para o dia-a-dia a ele denominado é primordial que um administrador possua alguma rotina de backup imposta sobre o mesmo.</p>
<p>É fato que esse trabalho é crítico pois no mundo da informação o que não queremos é perde-la, pois se isto acontecer poderá colocar os seus negócios no fio da navalha e certamente cabeças irão rolar. <span id="more-642"></span></p>
<p>É complexo colocar nesta postagem um backup que resolva tudo, mas vou colocar e explicar como executar em um servidor web um backup das contas de usuários de sites hospedados e seus respectivos bancos de dados, ainda duplicando o backup efetuado como segurança para outro servidor. É claro que o conteúdo aqui proposto pode ser adaptado por você para executar rotinas de backup expecíficas.</p>
<p>O arquivo em shell script pode ser obtido neste link: <a class="downloadlink" href="http://blog.deserv.info/wallpaper4" title=" downloaded 11 times" >backup-shell.sh (11)</a></p>
<p>Você pode fazer o download e colocar na “crontab” do seu sistema para que o mesmo efetue o backup na hora que melhor lhe convir.</p>
<h2><strong>Funcionamento</strong></h2>
<p>No início do arquivo shell script do link citado acima, teremos declarações de variaveis de controle do fluxo do programa.</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>
<blockquote>
<div>#!/bin/sh<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
#   backup.sh &#8211; Executa backup das pastas &#8220;public_html&#8221; de cada<br />
#                      usuário da pasta home do sistema.<br />
#<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
administrator=&#8221;root&#8221;<br />
mysql_user=&#8221;root&#8221;<br />
mysql_password=&#8221;senha_do_mysql&#8221;<br />
dir_backup=&#8221;backup&#8221;<br />
dir_sites=&#8221;sites&#8221;<br />
dir_backup_local=$(hostname)<br />
dir_home=&#8221;home&#8221;<br />
dir_sql=&#8221;sql&#8221;<br />
dir_web=&#8221;public_html&#8221;<br />
exclude_list=&#8221;ftp user admin lixo&#8221;<br />
server_list=&#8221;server1.devel server2.devel&#8221;<br />
mail_list=&#8221;admin@admin.com.br&#8221;</div>
</blockquote>
</td>
</tr>
</tbody>
</table>
</div>
<p>O que vemos acima são variaveis de controle, como nome de usuário e senha do mysql, nomes de pastas para o armazenamento dos arquivos e diretórios capturados da origem, lista de exclusão de diretórios que não queremos que seja efetuado o backup e lista de servidores que queremos duplicar o backup ocorrido, ainda temos uma lista de e-mail para informar os responsáveis da ação efetuada pelo nosso backup.</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>
<blockquote>
<div>#<br />
# Lista os Bancos disponiveis<br />
#<br />
sql_database=$(mysql -u$mysql_user -hlocalhost -p$mysql_password -Bse<br />
&#8216;SHOW DATABASES WHERE `database`<br />
!= &#8220;information_schema&#8221; AND `database`<br />
!= &#8220;mysql&#8221;&#8216;)for db in ${sql_database}; do<br />
mysqldump &#8211;databases $db -hlocalhost -u$mysql_user -p$mysql_password &#8211;hex-blob &gt; /$dir_home/$dir_sql/$dir_web/sql-$db.sql<br />
done</div>
</blockquote>
</td>
</tr>
</tbody>
</table>
</div>
<p>Neste trecho é gerado uma lista de todos os bancos de dados existentes no Servidor MySQL excluindo as bases de dados da instalação básica do servidor como “information_schema” e “mysql” utilizando o comando “mysql” para efetuar o login e executar a ação.</p>
<p>Com o comando “mysqldump” efetuamos o backup das bases de dados existentes na lista capturada no comando anterior e salvamos a saida do resultado para um arquivo em disco contendo as informaçãoes como criação da base de dados, tabela e inserções de registros.</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>
<blockquote>
<div>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
# Inicia o backup<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
for user in ${users}; do<br />
if [ ! -d "/$dir_backup/$dir_sites/$dir_backup_local/$user" ]; then<br />
CreateDir &#8221;/$dir_backup/$dir_sites/$dir_backup_local/$user&#8221;<br />
firsync -avz &#8211;exclude &#8217;wp-cache&#8217; &#8211;exclude \<br />
&#8216;cache&#8217; &#8221;/$dir_home/$user/$dir_web/&#8221; \<br />
&#8220;/$dir_backup/$dir_sites/$dir_backup_local/$user/&#8221;<br />
done</div>
</blockquote>
</td>
</tr>
</tbody>
</table>
</div>
<p>Aqui é executado o backup da pasta public_html de cada usuário existente, repare ainda que na sincronia podemos excluir diretórios utilizando a opção –exclude do comando rsync.</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>
<blockquote>
<div>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</div>
<div># Sincroniza o backup com os servidores da listagem</div>
<div>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</div>
<div>for server in ${server_list}; do</div>
<div>rret=`ssh $administrator@$server \</div>
<div>&#8220;mkdir -p /$dir_backup&#8221;`</div>
<div>rret=`ssh $administrator@$server \</div>
<div>&#8220;mkdir -p /$dir_backup/$dir_sites/&#8221;`</div>
<div>rret=`ssh $administrator@$server \</div>
<div>&#8220;mkdir -p /$dir_backup/$dir_sites/$dir_backup_local&#8221;`log=$(rsync -avz &#8221;/$dir_backup/$dir_sites/$dir_backup_local/&#8221; \<br />
&#8220;$administrator@$server:</div>
<div>/$dir_backup/$dir_sites/$dir_backup_local/&#8221;)</div>
<div>#done</div>
<div></div>
</blockquote>
</td>
</tr>
</tbody>
</table>
</div>
<p>Com a lista de servidor(es) efetuamos um loop e sincronizamos os dados do diretório de backup efetuado com o comando anterior.</p>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>
<div>
<blockquote><p>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
# Envia para a lista de e-mail informações sobre o backup efetuado.<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
cat &lt;&lt; EOF &gt; /tmp/backup-mail.out<br />
Backup e sincronismo entre servidors efetuado as $(date) com sucesso em &lt;$dir_backup_local&gt;\<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Lista de servidores:$server_list\<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Lista de sites/usuarios:</p>
<p>$users</p>
<p>\<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Logs de Sincronismo (rsync)</p>
<p>$log</p>
<p>EOF</p>
<p>#mail -v -s &#8220;Backup e Sincronismo de Servidores&#8221; $mail_list &amp;lt; /tmp/backup-mail.out</p></blockquote>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>E por fim geramos um arquivo de log com as informações obtidas de cada comando efetuado no backup e enviamos para a lista de e-mail.</p>
<p>Claro que este backup pode ser melhorado e adaptado para outras situações que fogem do escopo desta postagem. A Idéia aqui é dar uma luz para aqueles que não a possui, espero que tenha ajudado.</p>
<p>Fonte:  <a href="http://www.nacaolivre.com.br/" target="_blank">http://www.nacaolivre.com.br</a></p>

<p>Nenhum Post Relacionado.</p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/01/21/backup-automatico-em-servidores-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gerenciando Acesso a Portas</title>
		<link>http://blog.deserv.info/2012/01/10/gerenciando-acesso-a-portas-de-acesso/</link>
		<comments>http://blog.deserv.info/2012/01/10/gerenciando-acesso-a-portas-de-acesso/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 19:07:11 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Acesso Remoto]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[gerenciamento de portas]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[portas de acesso]]></category>
		<category><![CDATA[regras de firewall]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=637</guid>
		<description><![CDATA[Você que tem IP Dinamico e não sabe como fazer para bloquear o acesso ao seu servidor, vai uma dica de regra de IPTables, onde você manipula a liberação de seu acesso com telnet. Com a grande facilidade de se ter um servidor Cloud, Decidado ou outros, e o mesmo ficar aberto para a internet [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/11/15/port-knocking-para-ssh-rapido-e-facil-com-iptables/' rel='bookmark' title='Port knocking para SSH rápido e fácil com iptables'>Port knocking para SSH rápido e fácil com iptables</a> <small>Port knocking funciona como um cadeado de segredo para ter...</small></li>
<li><a href='http://blog.deserv.info/2011/11/25/utilizando-sed/' rel='bookmark' title='Utilizando SED'>Utilizando SED</a> <small>PREENCHIMENTO DE ARQUIVOS: # duplicar o tamanho de um arquivo...</small></li>
<li><a href='http://blog.deserv.info/2011/08/30/atualizando-vmware-esxi-4-0-para-4-1/' rel='bookmark' title='Atualizando VMWARE Esxi 4.0 para 4.1'>Atualizando VMWARE Esxi 4.0 para 4.1</a> <small>Para quem tem o VMWare Esxi 4.0 aqui vão os...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p>Você que tem IP Dinamico e não sabe como fazer para bloquear o acesso ao seu servidor, vai uma dica de regra de IPTables, onde você manipula a liberação de seu acesso com telnet.</p>
<p>Com a grande facilidade de se ter um servidor Cloud, Decidado ou outros, e o mesmo ficar aberto para a internet as portas de acesso como portas de SSH (22), FTP (21), Banco de Dados (mysql=3306); (postgres=5432) entre outros serviços, muitas vezes somos obrigados a mudar as portas para ter um pouco mais de segurança, com uma simples regra de firewall irei exemplificar uma forma de mudar isto<span id="more-637"></span>, vamos a ela.</p>
<p><strong>1- Crie um arquivo /etc/init.d/firewall ;</strong></p>
<p><strong></strong><strong>2- Setar permissão de execução chmod +x /etc/init.d/firewall ;</strong></p>
<p><strong></strong><strong>3- Adicionar o conteúdo abaixo neste arquivo (/etc/init.d/firewall);</strong></p>
<p>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</p>
<p>#!/bin/bash</p>
<p># chkconfig: &#8211; 55 45<br />
# description: Firewall IPTables<br />
# Autor: Flávio Silva<br />
# E-mail: contato@flaviosilva.net.br<br />
# Site: http://www.deserv.com.br / http://blog.deserv.info<br />
# probe: false</p>
<p># Define o caminho do comando iptables<br />
IPTABLES=`which iptables`<br />
function OK() {<br />
echo -e &#8220;\\033[1;39m [ \\033[1;32mOK\\033[1;39m ]\\033[1;0m"<br />
}</p>
<p>function FALHOU() {<br />
echo -e "\\033[1;39m [ \\033[1;31mFALHOU\\033[1;39m ]\\033[1;0m&#8221;<br />
}</p>
<p>function STOP(){</p>
<p>###############################################################<br />
# Flushing filter #<br />
###############################################################<br />
$IPTABLES -F<br />
$IPTABLES -P INPUT ACCEPT<br />
$IPTABLES -P OUTPUT ACCEPT<br />
$IPTABLES -X<br />
OK<br />
}</p>
<p>function START(){<br />
###############################################################<br />
# Default Policies #<br />
###############################################################<br />
$IPTABLES -P INPUT DROP<br />
$IPTABLES -P OUTPUT ACCEPT</p>
<p>###################<br />
# Stateful Input #<br />
###################<br />
$IPTABLES -A INPUT -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT</p>
<p>#######################################<br />
# REGRA DE ACESSO DINAMICO SSH #<br />
#######################################</p>
<p>HOST_IP=&#8221;0.0.0.0/0.0.0.0&#8243;</p>
<p>$IPTABLES -A INPUT -p tcp &#8211;dport 12345 -m recent &#8211;set &#8211;name SSH-ACCESS<br />
$IPTABLES -A INPUT -p tcp -s $HOST_IP &#8211;dport 22 -m recent &#8211;rcheck &#8211;seconds 3600 &#8211;name SSH-ACCESS -j ACCEPT<br />
$IPTABLES -A INPUT -m state &#8211;state NEW -m tcp -p tcp &#8211;dport 123456 -m recent &#8211;name SSH-ACCESS &#8211;remove</p>
<p>####################<br />
# Loopback traffic #<br />
####################<br />
$IPTABLES -A INPUT -s 127.0.0.1 -i lo -j ACCEPT</p>
<p>##########################<br />
# ICMP Filtering #<br />
# and TRACEROUTE INPUT #<br />
##########################<br />
$IPTABLES -A INPUT -p icmp -j ACCEPT<br />
$IPTABLES -A INPUT -p udp &#8211;dport 33434:33523 -j ACCEPT</p>
<p>#######################<br />
# Drop stealth scans #<br />
#######################<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags FIN,SYN FIN,SYN -j DROP<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags SYN,RST SYN,RST -j DROP<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags FIN,RST FIN,RST -j DROP<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags FIN,ACK FIN -j DROP<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags ACK,URG URG -j DROP<br />
$IPTABLES -I INPUT -p tcp -m tcp &#8211;tcp-flags PSH,ACK PSH -j DROP</p>
<p>#################################<br />
# Regras de Gerenciamento INPUT #<br />
#################################</p>
<p>$IPTABLES -A INPUT -s XXX.XXX.XXX.XX -j ACCEPT #CASO TENHA ALGUM IP FIXO LIBERE ELE AQUI, SE NAO COMENTE ESTA LINHA COM &#8220;#&#8221;</p>
<p>#################################<br />
# Fechando conexoes SSH OUTPUT #<br />
#################################<br />
$IPTABLES -A OUTPUT -p tcp &#8211;dport 22 -j DROP</p>
<p>#################################<br />
# Regras de Clientes INPUT #<br />
#################################<br />
$IPTABLES -A INPUT -p tcp &#8211;dport 80 -j ACCEPT # HTTP<br />
$IPTABLES -A INPUT -p tcp &#8211;dport 443 -j ACCEPT # HTTPS<br />
$IPTABLES -A INPUT -p tcp &#8211;dport 3306 -j ACCEPT # MYSQL<br />
$IPTABLES -A INPUT -p tcp &#8211;dport 21 -j ACCEPT # FTP</p>
<p>OK<br />
}<br />
#FW options</p>
<p>case $1 in<br />
start)<br />
echo &#8220;Carregando Modulo de firewall&#8230;&#8221;<br />
START<br />
;;</p>
<p>stop)<br />
echo &#8220;Parando Modulo de firewall&#8230;&#8221;<br />
STOP<br />
;;</p>
<p>restart)<br />
echo &#8220;Restartando Modulo de firewall&#8230;&#8221;<br />
STOP<br />
START<br />
;;</p>
<p>*)</p>
<p>echo -e &#8220;Tente $0 {start|stop|restart}&#8221;<br />
;;<br />
Esac</p>
<p>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</p>
<p>OBS: Veja que a porta &#8220;12345&#8243; indicada no bloco de &#8220;REGRAS DE ACESSO DINAMICO SSH&#8221;, foi configurada para efetuar a liberação da porta 22 neste exemplo, e a porta &#8220;123456&#8243;, para o bloqueio do acesso, abaixo efetuaremos os devidos testes.</p>
<p><strong>4- Adicionar os modulos de Firewall a serem carregados</strong></p>
<blockquote><p>touch /etc/rc.modules<br />
chmod 755 /etc/rc.modules</p>
<p>Conteudo do arquivo /etc/rc.modules</p>
<p>/sbin/modprobe ip_conntrack</p>
<p>source /etc/rc.modules &lt;- Carrega o conteudo do arquivo</p></blockquote>
<p><strong>5- Execute o Arquivo de Firewall</strong></p>
<p>OBS.: ANTES DE EXECUTAR O FIREWALL TENHA ALGUMA FORMA ALTERNATIVA DE ACESSO AO SERVIDOR PARA PODER EFETUAR OS DEVIDOS TESTES, POIS AO SUBIR O FIREWALL VOCÊ PODERÁ PERDER O ACESSO AO SERVIDOR</p>
<blockquote><p>/etc/init.d/firewall start/stop/restart</p></blockquote>
<p><strong>6- Efetuando teste de acesso:</strong><br />
Com o Firewall habilitado, efetue o telnet na porta que você definiu para a abertura do SSH, no nosso exemplo a porta 12345:</p>
<blockquote><p>telnet xxx.xxx.xxx.xxx 12345</p></blockquote>
<p>Feito o telnet, seu IP será liberado no arquivo &#8220;/proc/net/ipt_recent/SSH-ACCESS&#8221; e o acesso é liberado para acessar o servidor diretamente na porta 22</p>
<p>O arquivo lhe mostrará o IP da seguinte forma: &#8220;src=xxx.xxx.xxx.xxx ttl: 61 last_seen: 523542876 oldest_pkt: 2 523539875, 523542876&#8243;</p>
<p>Para bloquear o acesso a porta 22 novamente, basta efetuar o telnet na porta de fechamento, no nosso caso a porta 123456.</p>
<blockquote><p>telnet xxx.xxx.xxx.xxx 123456</p></blockquote>
<p>&nbsp;</p>
<p>&nbsp;</p>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/11/15/port-knocking-para-ssh-rapido-e-facil-com-iptables/' rel='bookmark' title='Port knocking para SSH rápido e fácil com iptables'>Port knocking para SSH rápido e fácil com iptables</a> <small>Port knocking funciona como um cadeado de segredo para ter...</small></li>
<li><a href='http://blog.deserv.info/2011/11/25/utilizando-sed/' rel='bookmark' title='Utilizando SED'>Utilizando SED</a> <small>PREENCHIMENTO DE ARQUIVOS: # duplicar o tamanho de um arquivo...</small></li>
<li><a href='http://blog.deserv.info/2011/08/30/atualizando-vmware-esxi-4-0-para-4-1/' rel='bookmark' title='Atualizando VMWARE Esxi 4.0 para 4.1'>Atualizando VMWARE Esxi 4.0 para 4.1</a> <small>Para quem tem o VMWare Esxi 4.0 aqui vão os...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2012/01/10/gerenciando-acesso-a-portas-de-acesso/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando um cliente NFS</title>
		<link>http://blog.deserv.info/2011/12/13/configurando-um-cliente-nfs/</link>
		<comments>http://blog.deserv.info/2011/12/13/configurando-um-cliente-nfs/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 22:17:07 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Infra-Estrutura]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NFS]]></category>
		<category><![CDATA[OpenSource]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=632</guid>
		<description><![CDATA[Configurando um cliente NFS Inicialmente é necessário ter um kernel com o suporte a sistemas de arquivo NFS compilado ou como um módulo. Isso deve ser configurado antes da compilação do kernel. Caso não se tenha feito isto, por favor verifique o Como Fazer &#8211; Kernel para instruções sobre como proceder. Caso se esteja utilizando [...]
Nenhum Post Relacionado.

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p><strong>Configurando um cliente NFS</strong><strong></strong></p>
<p>Inicialmente é necessário ter um kernel com o suporte a sistemas de arquivo NFS compilado ou como um módulo. Isso deve ser configurado antes da compilação do kernel. Caso não se tenha feito isto, por favor verifique o Como Fazer &#8211; Kernel para instruções sobre como proceder. Caso se esteja utilizando uma distribuição muito boa (como o Conectiva Linux) e nunca se tenha lidado com o kernel ou módulos, nfs está magicamente à sua disposição. <span id="more-632"></span></p>
<p>Pode-se agora, na linha de comandos do superusuário, informar o comando de montagem apropriado e o sistema de arquivos estará disponível. Continuando com nosso exemplo anterior, desejamos montar /mn/parolin/local a partir de parolin. Isso deve ser feito através do seguinte comando:</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p>mount -o rsize=1024,wsize=1024 parolin:/mn/parolin/local /mnt</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p>(Retornaremos posteriormente às opções rsize e wsize). O sistema de arquivos está agora disponível sob /mnt e pode-se acessá-lo através do comando cd, assim como verificar o seu conteúdo através do comando ls, e observar os arquivo individualmente. Pode-se perceber que ele não é tão rápido quando um sistema local, mas muito mais amigável que o uso do ftp. Se, ao invés de montar um sistema de arquivos, o comando mount apresente uma mensagem de erro comomount:parolin:/mn/parolin/local falhou, razão fornecida pelo servidor: Permissão negada, então o arquivo exports contém algum erro. Caso ele informe mount clntudp_create: RPC: Programa não registrado isso significa que os programas nfsd ou mountd não estão sendo executados no servidor.</p>
<p>Para desmontar o sistema de arquivos basta comandar:</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p>umount /mnt</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p>Para que um sistema de arquivos nfs seja montado na inicialização do sistema operacional, deve-se editar o arquivo /etc/fstab da forma usual. No caso de nosso exemplo, deve-se adicioar a seguinte linha:</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p># dispositivo  pto.montagem tipo_sist_arqs  opções           dump ordem verif.</p>
<p>&#8230;</p>
<p>parolin:/mn/parolin/local  /mnt    nfs  rsize=1024,wsize=1024 0    0</p>
<p>&#8230;</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p>Bem, parece tudo. Quase. Continue a leitura por favor.</p>
<p><strong>Opções de Montagem</strong><strong></strong></p>
<p>Há algumas opções que devem ser consideradas. Eles definem a forma como o cliente NFS lida com uma queda do servidor ou da rede. Um dos aspectos mais interessantes sobre NFS é que ele lida com estas situações com elegância, desde que o cliente esteja corretamente configurado. Há dois tipos distintos de parâmetros de tratamento de falhas:</p>
<p><strong>soft</strong></p>
<p>O cliente NFS reporta um erro ao processar o acesso a um arquivo localizado em um sistema de arquivos montado via NFS. Alguns programas podem lidar com isto com compostura, outros não. Esta opção não é recomendada.</p>
<p><strong>hard</strong></p>
<p>O programa que acessa um arquivo em um sistema de arquivos montado via NFS irá travar sempre que o servidor não responder. O processo não pode ser interrompido ou finalizado a menos que se tenha especificado intr. Quando o servidor NFS esteja novamente ativo, o programa irá continuar a partir do ponto onde tenha parado. Isso é provavelmente o que se deseje. Recomendamos o uso do parâmetro hard,intr em todos os sistemas de arquivos montados via NFS.</p>
<p>A partir do exemplo anterior, esta seria a entrada no arquivo fstab:</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p># dispositivo  pto.montagem tipo_sist_arqs  opções           dump ordem verif.</p>
<p>&#8230;</p>
<p>parolin:/mn/parolin/local  /mnt    nfs  rsize=1024,wsize=1024,hard,intr 0 0</p>
<p>&#8230;</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p><strong>Otimizando o NFS</strong><strong></strong></p>
<p>Normalmente, caso as opções rsize e wsize seja especificados, o NFS irá ler e gravar blocos de 4096 e 8172 bytes. Algumas combinações de kernel do Linux e placas de rede não podem lidar com blocos grandes e não podem ser otimizados. Então vamos tentar descobrir como encontrar os parâmetros rsize e wsize que funcionem da maneira mais otimizada possível. É possível testar a velocidade das opções com um simples comando. Dado o comando mount conforme descrito acima, logo temos acesso de gravação ao disco, podendo executar um teste de performance de gravação seqüencial:</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p>time dd if=/dev/zero of=/mnt/testfile bs=16k count=4096</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p>Este comando criará um arquivo de 64 Mb de bytes zerados (que deve ser grande o suficiente para que o cache não altere significativamente a performance. Pode ser usado um arquivo maior caso o sistema local tenha muita memória). Isso pode ser feito algumas vezes (5-10?), para que se possa ter uma média bem fundamentada. Neste casos, o importante é medir o tempo de &#8220;relógio&#8221; e o tempo efetivamente gasto na conexão. Após, pode-se testar a performance da leitura ao se ler o arquivo de volta:</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p>time dd if=/mnt/testfile of=/dev/null bs=16k</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p>Isso pode ser feito algumas vezes. Após deve-se executar o comando mount e umount novamente com tamanhos maiores em rsize e wsize. Eles devem ser provavelmente múltiplos de 1024, e não maior que 16384 visto que este é o tamanho máximo do NFS versão 2. Exatamente após a montagem de um tamanho maior, acesse o sistema de arquivos montado através do comando cd e explore-o através do comando ls, para estar seguro que ele está funcionando perfeitamente. Caso os parâmetros rsize/wsize sejam muito grandes, os sintomas não são <em>muito</em> óbvios. Um típico sintoma é uma lista incompleta dos arquivos produzida pelo comando ls e nenhuma mensagem de erro. Ou ao se ler um arquivo ele falha misteriosamente, sem mensagens de erro. Após definir que os parâmetros rsize/wsize funcionam perfeitamente deve-se executar os testes de performance. SunOS e Solaris tem a reputação de funcionar muito melhor com blocos de 4096 bytes.</p>
<p>kernels mais recentes do Linux (desde o 1.3) executam a leitura antecipada para rsizes maiores ou iguais ao tamanho de página da máquina. Em máquinas Intel o tamanho de página é de 4.096 bytes. A leitura adiantada aumenta <em>significativamente</em> a performance de leitura do NFS. Ou seja, sempre que possível deve-se usar o rsize de 4.096 bytes em máquinas Intel.</p>
<p>Lembre-se de editar o arquivo /etc/fstab com os valores de rsize/wsize encontrados.</p>
<p>Uma sugestão para incrementar a performance de gravação do NFS é desabilitar o sincronismo de gravação do servidor. A especificação NFS indica que a gravação NFS solicitada não pode ser considerada finalizadas antes dos dados serem gravados em um meio não volátil (normalmente o disco rígido). Isso restringe a performance de gravação de alguma forma, enquanto que gravações assíncronas irão aumentar a velocidade do NFS. O servidor Linux nfsd nunca faz gravações síncronas uma que a própria implementação do sistema de arquivos não o faz, mas em servidores em sistemas operacionais diferentes isso pode aumentar a performance através do seguinte parâmetro no arquivo exports:</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p>/dir    -async,access=linuxbox</p>
<div align="center">
<hr align="center" noshade="noshade" size="2" width="100%" />
</div>
<p>ou algo similar. Por favor verifique a página de manual online da máquina em questão. Cabe salientar que esta opção aumenta o risco de perda de dados no caso de algum problema ocorrer antes da efetiva gravação dos dados.</p>
<p>Fonte: <a href="http://www.magnux.org/">http://www.magnux.org</a></p>

<p>Nenhum Post Relacionado.</p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/12/13/configurando-um-cliente-nfs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backup MySQL com mysqldump</title>
		<link>http://blog.deserv.info/2011/11/25/backup-mysql-com-mysqldump/</link>
		<comments>http://blog.deserv.info/2011/11/25/backup-mysql-com-mysqldump/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 13:38:15 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[SGBD]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[backup banco mysql]]></category>
		<category><![CDATA[backup mysql]]></category>
		<category><![CDATA[bkp]]></category>
		<category><![CDATA[mysqldump]]></category>
		<category><![CDATA[SGDB]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=630</guid>
		<description><![CDATA[O comando mysqldump do sistema gestor de base de dados MySQL serve para fazer cópias de segurança. Explicamo-lo ao pormenor e vemos as suas opções mais importantes. Este comando permite fazer a cópia de segurança de uma ou várias bases de dados. Também permite que estas cópias de segurança se possam restaurar em diversos tipos [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/10/25/sistema-de-autenticacao-de-usuarios-em-php-usando-sessoes-e-mysql/' rel='bookmark' title='Sistema de autenticação de usuários em PHP usando sessões e MySQL'>Sistema de autenticação de usuários em PHP usando sessões e MySQL</a> <small>Esse artigo é um passo-a-passo da criação de um simples...</small></li>
<li><a href='http://blog.deserv.info/2011/05/24/resolvendo-os-problemas-do-tamanho-do-ibdata1-no-mysql/' rel='bookmark' title='Resolvendo os problemas do tamanho do ibdata1 no MySQL'>Resolvendo os problemas do tamanho do ibdata1 no MySQL</a> <small>Um problema que enfrentava sempre que colocava um aplicativo utilizando...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p><strong>O comando mysqldump do sistema gestor de base de dados MySQL serve para fazer cópias de segurança. Explicamo-lo ao pormenor e vemos as suas opções mais importantes.</strong></p>
<p>Este comando permite fazer a cópia de segurança de uma ou várias bases de dados. Também permite que estas cópias de segurança se possam restaurar em diversos tipos de gestores de bases de dados, sem a necessidade de que se trate de um gestor de mySQL. Isto consegue-se criando uns ficheiros, que contêm todas as sentenças SQL necessárias para poder restaurar a tabela, que contem desde a sentença de criação da tabela, até uma sentença insert por cada um dos registos que formam parte da mesma.  <span id="more-630"></span></p>
<p>O comando dispõem de uma ampla variedade de opções que nos permitirá realizar a cópia da forma mais conveniente para o propósito da mesma. Para poder restaurar a cópia de segurança, bastará com executar todas as sentenças SQL que se encontram dentro do ficheiro, bem desde a linha de comandos de MySQL, ou desde o menu de criação de sentenças SQL de qualquer entorno gráfico como pode ser o MySQL Control Center.</p>
<p>As limitações da restauração dependerão das opções que se especificaram na hora de fazer a cópia de segurança, por exemplo, se incluirmos a opção -add-drop-table ao fazer a cópia de segurança, poderão-se restaurar tabelas que existem actualmente no servidor (apagando-as primeiro). Pelo qual é necessário estudar primeiro os procedimentos que se utilizarão tanto na cópia como na restauração, para que tudo saia correcto!</p>
<p>Algumas das opções que tem são:</p>
<p><strong>&#8211;add-locks</strong><br />
Adiciona LOCK TABLES antes, e UNLOCK TABLE depois da cópia de cada tabela.</p>
<p><strong>&#8211;add-drop-table</strong><br />
Adiciona um drop table antes de cada sentença create.</p>
<p><strong>-A, &#8211;all-databases</strong><br />
Copia todas as bases de dados. Isto é o mesmo que utilizar -databases seleccionando todas.</p>
<p><strong>-a, &#8211;all</strong><br />
Inclui todas as opções de criação específicas de MySQL.</p>
<p><strong>&#8211;allow-keywords</strong><br />
Permite a criação de nomes de colunas que são palavras chave, isto realiza-se pondo como prefixo a cada nome de coluna, o nome da tabela.</p>
<p><strong>-c, &#8211;complete-insert </strong><br />
Utiliza inserts incluindo os nomes de coluna em cada sentença (incrementa bastante o tamanho do ficheiro)</p>
<p><strong>-C, &#8211;compress </strong><br />
Comprime a informação entre o cliente e o servidor, se ambos suportam compressão.</p>
<p><strong>-B, &#8211;databases </strong><br />
Para copiar várias bases de dados. Neste caso, não se especificam tabelas. O nome dos argumentos refere-se aos nomes das bases de dados. Incluirá-se USE db_name na saída antes de cada base de dados.</p>
<p><strong>&#8211;delayed </strong><br />
Insere as filas com o comando INSERT DELAYED.</p>
<p><strong>-e, &#8211;extended-insert </strong><br />
Utiliza a sintaxe de INSERT multilinha. (proporciona sentenças de insert mais compactas e rápidas)</p>
<p><strong>-#, &#8211;debug[=option_string] </strong><br />
Utilização do modo de depuração.</p>
<p><strong>&#8211;help </strong><br />
Mostra mensagem de ajuda e termina.</p>
<p><strong>&#8211;fields-terminated-by=&#8230;<br />
&#8211;fields-enclosed-by=&#8230;<br />
&#8211;fields-optionally-enclosed-by=&#8230;<br />
&#8211;fields-escaped-by=&#8230;<br />
&#8211;lines-terminated-by=&#8230; </strong><br />
Estas opções utilizam-se com a opção -T e têm o mesmo significado que a correspondente cláusula LOAD DATA INFILE.</p>
<p><strong>-F, &#8211;flush-logs </strong><br />
Escreve em disco todos os logs antes de começar com a cópia.</p>
<p><strong>-f, &#8211;force, </strong><br />
Continua ainda que se produza um erro de SQL durante a cópia.</p>
<p><strong>-h, &#8211;host=.. </strong><br />
Copia os dados do servidor de MySQL especificado. O servidor pré-definido é localhost.</p>
<p><strong>-l, &#8211;lock-tables.</strong><br />
Bloqueia todas as tabelas antes de começar com a cópia. As tabelas bloqueiam-se com READ LOCAL para permitir inserts simultâneos em caso das tabelas MyISAM. Quando se realiza a cópia de múltiplas bases de dados. As tabelas em diferentes bases de dados copiarão-se em estados completamente diferentes.</p>
<p><strong>-K, &#8211;disable-keys </strong><br />
Incluirá-se na saída /*!40000 ALTER TABLE tb_name DISABLE KEYS */;e /*!40000 ALTER TABLE tb_name ENABLE KEYS */; Isto fará que o carregamento de dados num servidor MySQL 4.0 se realize mais rápido devido a que os índices se criarão depois de que todos os dados tenham sido restaurados.</p>
<p><strong>-n, &#8211;no-create-db </strong><br />
Não se incluirá na saída CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name; Esta linha inclui-se se a opção &#8211;databases ou &#8211;all-databases foi seleccionada.</p>
<p><strong>-t, &#8211;no-create-info </strong><br />
Não incluirá a informação de criação da tabela (sentença CREATE TABLE).</p>
<p><strong>-d, &#8211;no-data </strong><br />
Não incluirá nenhuma informação sobre os registos da tabela. Esta opção serve para criar uma cópia só da estrutura da base de dados.</p>
<p><strong>&#8211;opt </strong><br />
O mesmo que &#8211;quick &#8211;add-drop-table &#8211;add-locks &#8211;extended-insert &#8211;lock-tables. Esta opção deveria permitir realizar a cópia de segurança da base de dados da forma mais rápida e efetiva.</p>
<p><strong>-pyour_pass, &#8211;password[=your_pass] </strong><br />
Password utilizada quando se conecta com o servidor. Se não se especifica `=your_pass&#8217;, mysqldump preguntará a password.</p>
<p><strong>-P, &#8211;port=&#8230; </strong><br />
Porto utilizado pelas ligações TCP/IP.</p>
<p><strong>&#8211;protocol=(TCP | SOCKET | PIPE | MEMORY) </strong><br />
Especifica o protocolo de conexão que se utilizará.</p>
<p><strong>-q, &#8211;quick </strong><br />
Não armazena no buffer a sentença, copia-a diretamente na saída. Utiliza mysql_use_result() para realiza-lo.</p>
<p><strong>-Q, &#8211;quote-names </strong><br />
Põe entre aspas as tabelas e nomes de coluna.</p>
<p><strong>-r, &#8211;result-file=&#8230; </strong><br />
Redireciona a saída ao ficheiro especificado. Esta opção deveria utilizar-se em MSDOS, porque previne a conversão de nova linha &#8216;\n&#8217; em nova linha e return &#8216;\n\r&#8217;.</p>
<p><strong>&#8211;single-transaction </strong><br />
Utiliza o comando BEGIN antes de realizar a cópia desde o servidor. É muito útil com as tables InnoDB e o nível de transação READ_COMMITTED, porque deste modo realizará-se a copia de segurança de um estado consistente sem a necessidade de bloquear as aplicações. Consultar o manual para mais detalhes.</p>
<p><strong>-S /path/to/socket, &#8211;socket=/path/to/socket </strong><br />
O ficheiro de sockets que se especifica ao conectar ao localhost (que é o host pré-definido).</p>
<p><strong>&#8211;tables </strong><br />
sobrescreve a opção &#8211;databases (-B).</p>
<p><strong>-T, &#8211;tab=path-to-some-directory </strong><br />
Cria um ficheiro table_name.sql, que contem a sentença de criação de SQL, e um ficheiro table_name.txt, que contem os dados de cada tabela. O formato do ficheiro &#8216;.txt&#8217; realiza-se com as opções &#8211;fields-xxx y &#8211;lines&#8211;xxx options.</p>
<table width="90%" align="center">
<tbody>
<tr>
<td><strong>Nota:</strong> Esta opção só funciona se o comando mysqldump se executa na mesma máquina que o demónio (daemon) mysqld, o usuário deverá ter licença para criar e escrever o ficheiro no path especificado.</td>
</tr>
</tbody>
</table>
<p><strong>-u nombre_usuario, &#8211;user=nombre_usuario</strong><br />
O nome de usuário que se utilizará quando se conecte com o servidor, o valor pré-definido é o do usuário actual.</p>
<p><strong>-v, &#8211;verbose </strong><br />
Vai mostrando informação sobre as acções que se vão realizando (mais lento)</p>
<p><strong>-w, &#8211;where=&#8217;cláusula where&#8217; </strong><br />
Serve para realizar a cópia de determinados registos.</p>
<p><strong>-X, &#8211;xml </strong><br />
Realiza a cópia de segurança num documento XML.</p>
<p><strong>-x, &#8211;first-slave </strong><br />
Bloqueia todas as tabelas de todas as bases de dados.</p>
<p><strong>Exemplo:</strong></p>
<p>Para realizar a cópia de segurança da base de dados minhabase ao ficheiro copia_seguranca.sql</p>
<p>mysqldump &#8211;opt minhabase &gt; copia_seguranca.sql</p>
<p>&nbsp;</p>
<p>fonte: <a href="http://www.criarweb.com/">http://www.criarweb.com</a></p>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/10/25/sistema-de-autenticacao-de-usuarios-em-php-usando-sessoes-e-mysql/' rel='bookmark' title='Sistema de autenticação de usuários em PHP usando sessões e MySQL'>Sistema de autenticação de usuários em PHP usando sessões e MySQL</a> <small>Esse artigo é um passo-a-passo da criação de um simples...</small></li>
<li><a href='http://blog.deserv.info/2011/05/24/resolvendo-os-problemas-do-tamanho-do-ibdata1-no-mysql/' rel='bookmark' title='Resolvendo os problemas do tamanho do ibdata1 no MySQL'>Resolvendo os problemas do tamanho do ibdata1 no MySQL</a> <small>Um problema que enfrentava sempre que colocava um aplicativo utilizando...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/11/25/backup-mysql-com-mysqldump/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizando SED</title>
		<link>http://blog.deserv.info/2011/11/25/utilizando-sed/</link>
		<comments>http://blog.deserv.info/2011/11/25/utilizando-sed/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 13:12:20 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Sed]]></category>
		<category><![CDATA[Utilizando SED]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=627</guid>
		<description><![CDATA[PREENCHIMENTO DE ARQUIVOS: # duplicar o tamanho de um arquivo sed G # duplicar o tamanho de um arquivo que jah contém linhas em branco. # O arquivo de saída deve conter não mais que uma linha branca # entre linhas de texto sed '/^$/d;G' # triplicar o tamanho de um arquivo sed 'G;G' # [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/11/15/port-knocking-para-ssh-rapido-e-facil-com-iptables/' rel='bookmark' title='Port knocking para SSH rápido e fácil com iptables'>Port knocking para SSH rápido e fácil com iptables</a> <small>Port knocking funciona como um cadeado de segredo para ter...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<pre>PREENCHIMENTO DE ARQUIVOS:

 # duplicar o tamanho de um arquivo
 sed G

 # duplicar o tamanho de um arquivo que jah contém linhas em branco.
 # O arquivo de saída deve conter não mais que uma linha branca
 # entre linhas de texto
 sed '/^$/d;G'</pre>
<p><span id="more-627"></span></p>
<pre>

 # triplicar o tamanho de um arquivo
 sed 'G;G'

 # desfazer a duplicação de tamanho (assume que as linhas de numeração par
 # estejam em branco)
 sed 'n;d'

 # insere uma linha em branco acima de cada linha que contem "regex"
 sed '/regex/{x;p;x;}'

 # insere uma linha em branco abaixo de cada linha que contem "regex"
 sed '/regex/G'

 # insere uma linha em branco acima e abaixo de cada linha que contem "regex"
 sed '/regex/{x;p;x;G;}'

NUMERACÃO:

 # numera cada linha de um arquivo (com alinhamento simples a esquerda). Usar
 # uma tabulação em vez do espaço vai preservar as margens. (veja a observação
 # sobre o '\t' no final desse arquivo)
 sed = arquivo | sed 'N;s/\n/\t/'

 # numera cada linha de um arquivo (números a esquerda, alinhados a direita)
 sed = arquivo | sed 'N; s/^/     /; s/ *\(.\{6,\}\)\n/\1  /'

 # numera cada linha de um arquivo, mas só imprime os números se a linha não
 # estiver em branco
 sed '/./=' arquivo | sed '/./N; s/\n/ /'

 # conta as linhas (emula o "wc -l")
 sed -n '$='

CONVERSÃO DE TEXTO E SUBSTITUIÇÃO:

 # EM AMBIENTE UNIX: converte o caractere de linha nova do DOS (CR/LF) para o
 # formato Unix
 sed 's/.$//'            # assume que todas as linhas terminam com CR/LF
 sed 's/^M$//'           # no bash/tcsh, pressione Ctrl-V depois Ctrl-M
 sed 's/\x0D$//'         # gsed 3.02.80, mas os scripts acima sao mais simples

 # EM AMBIENTE UNIX: converte o caractere de linha nova do Unix (LF) para
 # o formato DOS
 sed "s/$/`echo -e \\\r`/"            # comando usado com o ksh
 sed 's/$'"/`echo \\\r`/"             # comando usado com o bash
 sed "s/$/`echo \\\r`/"               # comando usado com o zsh
 sed 's/$/\r/'                        # gsed 3.02.80

 # EM AMBIENTE DOS: converte o caractere de linha nova do Unix (LF) para
 # o formato DOS
 sed "s/$//"                          # método 1
 sed -n p                             # método 2

 # EM AMBIENTE DOS: converte o caractere de linha nova do DOS (CR/LF) para
 # o formato Unix. Só pode ser feito com o sed UnxUtils, versão 4.0.7
 # ou maior. A versão do UnxUtils pode ser identificada pelo parâmetro padrão
 # "--text" que aparece quando o "--help" é usado. De outra forma, mudar
 # os caracteres de linha nova do DOS para o formato Unix não pode ser
 # feito em um ambiente DOS. Use o "tr" para isso.
 sed "s/\r//" arquivo_entrada &gt;arquivo_saida         # sed UnxUtils versão v4.0.7 ou maior
 tr -d \r &lt;arquivo_entrada &gt;arquivo_saida            # tr GNU versão 1.22 ou maior

 # apaga o espaço em branco inicial (espaços, tabulações) do começo
 # de cada linha, puxando o texto para a esquerda
 sed 's/^[ \t]*//'                    # veja a nota sobre o '\t' no final
                                      # deste arquivo

 # apaga o espaço em branco final (espaços, tabulações) do final de cada linha
 sed 's/[ \t]*$//'                    # veja a nota sobre o '\t' no final
                                      # deste arquivo

 # deleta AMBOS os espaços em branco final e inicial de cada linha
 sed 's/^[ \t]*//;s/[ \t]*$//'

 # insere 5 espaços em branco no ínicio de cada linha (faz o <em>offset</em> da página)
 sed 's/^/     /'

 # alinha tudo a direita, numa coluna de 79 caracteres de largura
 sed -e :a -e 's/^.\{1,78\}$/ &amp;/;ta'  # definido como 78 mais 1 espaço

 # centraliza todo o texto no meio de uma coluna de 79 caracteres de
 # largura. No método 1, os espaços no começo da linha são significativos,
 # e espaços em branco são anexados ao final de cada linha. No método 2,
 # os espaços no início de cada linha são descartados ao centralizar
 # a linha e não é adicionado nenhum espaço no final de cada linha.
 sed  -e :a -e 's/^.\{1,77\}$/ &amp; /;ta'                     # método 1
 sed  -e :a -e 's/^.\{1,77\}$/ &amp;/;ta' -e 's/\( *\)\1/\1/'  # método 2

 # substituir (achar e trocar) "foo" por "bar" em cada linha
 sed 's/foo/bar/'             # troca somente a 1a instância de uma linha
 sed 's/foo/bar/4'            # troca somente a 4a instância de uma linha
 sed 's/foo/bar/g'            # troca TODAS as instâncias de uma linha
 sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # troca o 'próximo-para-último'
 sed 's/\(.*\)foo/\1bar/'     # troca somente a última occorrência

 # substitui "foo" por "bar" SOMENTE nas linhas que contem "baz"
 sed '/baz/s/foo/bar/g'

 # substitui "foo" por "bar" EXCETO nas linhas que contem "baz"
 sed '/baz/!s/foo/bar/g'

 # troca "scarlet" ou "ruby" ou "pucy" para "red"
 sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'   # na maioria dos seds
 gsed 's/scarlet\|ruby\|puce/red/g'                # somente no GNU sed 

 # reverter a ordem das linhas (emula o "tac")
 # um bug/função do HHsed v1.5 fazia com que as linhas em branco fossem deletadas
 sed '1!G;h;$!d'              # método 1
 sed -n '1!G;h;$p'            # método 2

 # reverte cada caractere em cada linha (emula o "rev")
 sed '/\n/!G;s/\(.\)\(.*\n\)/&amp;\2\1/;//D;s/.//'

 # une pares de linhas lado a lado (como o "paste")
 sed '$!N;s/\n/ /'

 # se uma linha termina com uma barra invertida, a próxima linha é
 # anexada a ela
 sed -e :a -e '/\\$/N; s/\\\n//; ta'

 # se uma linha termina com um sinal de igual, ela é anexada a linha
 # anterior e o sinal de "=" é substituído por um espaco simples.
 sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'

 # adiciona vírgulas a strings numéricos, mudando "1234567" para "1,234,567"
 gsed ':a;s/\B[0-9]\{3\}\&gt;/,&amp;/;ta'                     # GNU sed
 sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'  # outros seds

 # adiciona vírgulas em números com pontos decimais e sinais de negativo (GNU sed)
 gsed -r ':a;s/(^|[^0-9.])([0-9]+)([0-9]{3})/\1\2,\3/g;ta'

 # adiciona uma linha em branco a cada 5 linhas (após as linhas 5, 10, 15, 20, etc.)
 gsed '0~5G'                  # somente no GNU sed
 sed 'n;n;n;n;G;'             # outros seds

IMPRESSÃO SELETIVA DE CERTAS LINHAS:

 # imprime as primeiras 10 linhas de um arquivo (emula o comportamento do "head")
 sed 10q

 # imprime a primeira linha de um arquivo (emula o "head -1")
 sed q

 # imprime as últimas 10 linhas de um arquivo (emula o "tail")
 sed -e :a -e '$q;N;11,$D;ba'

 # imprime as 2 últimas linhas de um arquivo (emula o "tail -2")
 sed '$!N;$!D'

 # imprime somente a última linha de um arquivo (emula o "tail -1")
 sed '$!d'                    # método 1
 sed -n '$p'                  # método 2

 # imprime somente as linhas que se encaixam na expressão regular
 # (emula o "grep")
 sed -n '/regexp/p'           # método 1
 sed '/regexp/!d'             # método 2

 # imprime somente as linhas que NÃO se encaixam na regexp (emula o "grep -v")
 sed -n '/regexp/!p'          # método 1, corresponde ao descrito acima
 sed '/regexp/d'              # método 2, sintaxe mais simples

 # imprime a linha imediatamente anterior a expressão regular, mas
 # não a linha contendo a expressão
 sed -n '/regexp/{g;1!p;};h'

 # imprime a linha imediatamente posterior a expressão regular, mas
 # não a linha contendo a expressão
 sed -n '/regexp/{n;p;}'

 # imprime uma linha de contexto antes e depois da expressão regular,
 # com o número da linha indicando onde a expressão regular
 # aparece (similar ao "grep -A1 -B1")
 sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h

 # procura e imprime por AAA e BBB e CCC (em qualquer ordem)
 sed '/AAA/!d; /BBB/!d; /CCC/!d'

 # procura e imprime por AAA e BBB e CCC (nessa ordem)
 sed '/AAA.*BBB.*CCC/!d'

 # procura e imprime por AAA ou BBB ou CCC (emula o "egrep")
 sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d    # maioria dos seds
 gsed '/AAA\|BBB\|CCC/!d'                        # somente com o sed GNU

 # imprime um parágrafo se ele possuir AAA (linhas vazias separam os parágrafos).
 # Com o HHsed v1.5 deve ser inserido o 'G;' apos o 'x;', nos 3 scripts abaixo
 sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'

 # imprime um parágrafo se ele possuir AAA e BBB e CCC (em qualquer ordem)
 sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d'

 # imprime o parágrafo inteiro se ele possuir AAA ou BBB ou CCC
 sed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d
 gsed '/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d'         # somente com o GNU sed

 # imprime somente as linhas com 65 caracteres ou mais
 sed -n '/^.\{65\}/p'

 # imprime somente as linhas com menos que 65 caracteres
 sed -n '/^.\{65\}/!p'        # método 1, corresponde ao descrito acima
 sed '/^.\{65\}/d'            # método 2, sintaxe mais simples

 # imprime uma parte do arquivo que vai da expressão regular até
 # o final do mesmo
 sed -n '/regexp/,$p'

 # imprime uma parte do arquivo baseada nos números das linhas (linhas 8-12,
 # inclusive)
 sed -n '8,12p'               # método 1
 sed '8,12!d'                 # método 2

 # imprime a linha de número 52
 sed -n '52p'                 # método 1
 sed '52!d'                   # método 2
 sed '52q;d'                  # método 3, eficiente com arquivos grandes

 # começando na linha 3, imprime cada sétima linha
 gsed -n '3~7p'               # somente o GNU sed
 sed -n '3,${p;n;n;n;n;n;n;}' # outros seds

 # imprime um pedaço de arquivo que está entre as duas
 # expressões regulares (inclusive)
 sed -n '/Iowa/,/Montana/p'             # é <em>case sensitive</em>

DELEÇÃO SELETIVA DE CERTAS LINHAS:

 # imprime todo o arquivo EXCETO a parte entre 2 expressões regulares
 sed '/Iowa/,/Montana/d'

 # deleta linhas duplicadas consecutivas de um arquivo (emula o "uniq"). A primeira
 # linha de um conjunto de linhas duplicadas é mantida, o resto é deletada
 sed '$!N; /^\(.*\)\n\1$/!P; D'

 # deleta linhas duplicadas não consecutivas. Tome cuidado para nao estourar
 # o tamanho do <em>buffer</em> do espaco de reserva (<em>hold space</em>), ou então use o sed GNU.
 sed -n 'G; s/\n/&amp;&amp;/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P'

 # deleta todas as linhas exceto as linhas duplicadas (emula o "uniq -d").
 sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'

 # deleta as 10 primeiras linhas de um arquivo
 sed '1,10d'

 # deleta a última linha de um arquivo
 sed'$d'

 # deleta as 2 últimas linhas de um arquivo
 sed 'N;$!P;$!D;$d'

 # deleta as 10 últimas linhas de um arquivo
 sed -e :a -e '$d;N;2,10ba' -e 'P;D'   # método 1
 sed -n -e :a -e '1,10!{P;N;D;};N;ba'  # método 2

 # deleta cada oitava linha
 gsed '0~8d'                           # somente no GNU sed
 sed 'n;n;n;n;n;n;n;d;'                # outros seds

 # deleta as linhas que combinarem com padrão
 sed '/padrao/d'

 # deleta TODAS as linhas em branco de um arquivo (o mesmo que "grep '.' ")
 sed '/^$/d'                           # método 1
 sed '/./!d'                           # método 2

 # deleta todas as linhas brancas CONSECUTIVAS de um arquivo exceto a primeira;
 # ainda deleta todas as linhas em branco do início e fim do arquivo (emula o
 # "cat -s")
 sed '/./,/^$/!d'          # método 1, permite 0 brancos no topo, 1 no
                           # final do arquivo
 sed '/^$/N;/\n$/D'        # método 2, permite 1 branco no top, 0 no
                           # final do arquivo

 # deleta todas as linhas em branco CONSECUTIVAS do arquivo, exceto as 2 primeiras:
 sed '/^$/N;/\n$/N;//D'

 # deleta todas as linhas em branco iniciais, no início do arquivo
 sed '/./,$!d'

 # deleta todas as linhas em branco finais, no final do arquivo
 sed -e :a -e '/^\n*$/{$d;N;ba' -e '}'  # funciona com todos os sed
 sed -e :a -e '/^\n*$/N;/\n$/ba'        # o mesmo, exceto gsed 3.02*

 # deleta a última linha de cada parágrafo
 sed -n '/^$/{p;h;};/./{x;/./p;}'

APLICAÇÕES ESPECIAIS:

 # remove <em>overstrikes nroff</em> (caracter, backspace) das man pages. O comando
 # 'echo' pode precisar da opção -e se você usar Unix System V ou uma
 # shell bash
 sed "s/.`echo \\\b`//g"    # as aspas duplas são necessárias em ambiente Unix
 sed 's/.^H//g'             # no bash/tcsh, pressione Ctrl-V e depois Ctrl-H
 sed 's/.\x08//g'           # expressão hexadecimal para o sed v1.5

 # mostra as mensagens de cabeçalho de um Usenet/e-mail
 sed '/^$/q'                # deleta tudo após a primeira linha em branco

 # mostra o corpo da mensagem de um Usenet/e-mail
 sed '1,/^$/d'              # deleta tudo até a primeira linha em branco

 # mostra o cabeçalho <em>Subject</em>, mas remove a porção inicial "Subject :"
 sed '/^Subject: */!d; s///;q'

 # pega o cabeçalho de endereço de resposta
 sed '/^Reply-To:/q; /^From:/h; /./d;g;q'

 # verifica o endereço de maneira correta. Pega o endereço de e-mail
 # através da 1a linha do cabeçalho de endereço de retorno (veja
 # o script acima)
 sed 's/ *(.*)//; s/&gt;.*//; s/.*[:&lt;] *//'

 # adiciona um sinal de maior com um espaço a cada linha (citação de uma
 # mensagem)
 sed 's/^/&gt; /'

 # deleta o sinal de maior e o espaço de cada linha (remove a
 # citação de uma mensagem)
 sed 's/^&gt; //'

 # remove a maioria das <em>tags</em> HTML (acomoda <em>tags</em> de múltiplas linhas)
 sed -e :a -e 's/&lt;[^&gt;]*&gt;//g;/&lt;/N;//ba'

 # extrai binários <em>uuencoded</em> com múltiplos pedaços, removendo informações
 # estranhas/extras, fazendo com que só a parte <em>uuencoded</em> permaneça. Os
 # arquivos devem ser passados ao sed na ordem correta. A versão 1 pode
 # ser executada a partir da linha de comando; a versão 2 pode ser
 # executada a partir de um shell script Unix. (Modificado de um
 # script criado por Rahul Dhesi.)
 sed '/^end/,/^begin/d' arquivo1 arquivo2 ... arquivoX | uudecode   # vers. 1
 sed '/^end/,/^begin/d' $* | uudecode                      # vers. 2

 # Ordena parágrafos de arquivos alfabeticamente. Parágrafos são separados
 # por linhas em branco. O GNU sed usa o \v como tabulação vertical, ou qualquer
 # caracter único serve.
 sed '/./{H;d;};x;s/\n/={NL}=/g' file | sort | sed '1s/={NL}=//;s/={NL}=/\n/g'
 gsed '/./{H;d};x;y/\n/\v/' file | sort | sed '1s/\v//;y/\v/\n/'

 # zipa cada arquivo .TXT individualmente, deletando o arquivo fonte
 # e definindo o nome de cada .ZIP para o nome base do arquivo .TXT.
 # (no DOS: o comando "dir /b" retorna nomes de arquivo reduzidos e em caixa alta).
 echo @echo off &gt;zipup.bat
 dir /b *.txt | sed "s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/" &gt;&gt;zipup.bat

USO TÍPICO: O sed pega um ou mais comandos de edição e aplica todos eles,
em sequência, a cada linha de entrada. Após todos os comandos terem sido
aplicados a primeira linha de entrada, ela é jogada para a saída e a
segunda linha de entrada começa a ser processada, recomeçando o ciclo.
Os exemplos acima assumem que a entrada venha do dispositivo padrão  (por exemplo,
o console, onde  normalmente a entrada é via pipe). Um ou mais nomes de
arquivo podem ser passados na linha de comando se a entrada não vier da
entrada padrão. A saída é mandada para a saída padrão (a tela). Assim:

 cat arquivo | sed '10q'        # usa a entrada via pipe
 sed '10q' arquivo              # tem o mesmo efeito, mas evita o uso do "cat"
 sed '10q' arquivo &gt; novo-arquivo    # redireciona a saída para o disco

Para instruções de sintaxe adicionais, incluindo a maneira de aplicar
comandos de edição a partir de um arquivo no disco, ao invés da linha
de comando, consulte "sed &amp; awk, 2nd Edition," por Dale Dougherty e
Arnold Robbins (O'Reilly, 1997; <a href="http://www.ora.com/">http://www.ora.com</a>), "UNIX Text
Processing," por Dale Dougherty e Tim O'Reilly (Hayden Books, 1987)
ou os tutoriais do Mike Arst distribuídos como U-SEDIT2.ZIP (em vários
sites). Para explorar totalmente o poder do sed, deve-se entender
as "expressões regulares". Para isso, veja "Mastering Regular Expressions"
de Jeffrey Friedl (O'Reilly, 1997). As páginas de manual ("man pages")
dos sistemas Unix podem ser úteis (tente "man sed", "man regexp", ou
a subseção sobre expressões regulares no "man ed"), mas as páginas
de manual são notadamente mais difíceis de se compreender. Elas
não são escritas para ensinar o uso do sed ou das expressões
regulares para usuários iniciantes, mas como texto de referência
para aqueles que já tem certa experiência com as duas ferramentas.

SINTAXE DAS ASPAS: Os exemplos acima utilizam as aspas simples ('...')
ao invés das aspas duplas ("...") para agrupar comandos de edição,
visto que o sed é comumente utilizado em plataformas Unix. As
aspas simples impedem que a shell Unix interprete o cifrão ($)
e a crase (`...`), os quais seriam expandidos pela shell se estivessem
dentro das aspas duplas. Usuários da shell "csh" e derivadas
ainda precisarão utilizar a barra invertida (\) antes do sinal de
exclamação (por exemplo \!) para conseguir rodar os exemplos acima, mesmo
usando as aspas simples. Versões do sed escritas para o DOS
invariavelmente necessitam das aspas duplas ("...") ao invés das
aspas simples para agrupar os comandos de edição.

USO DO '\t' NOS SCRIPTS SED: Para maior clareza na documentação, nós
utilizamos a expressão '\t' para indicar o caractere de tabulação
(0x09) nos scripts sed. Porém, a maioria das versões do sed não reconhece
a abreviação '\t', logo, quando for executar estes scripts via linha
de comando, você deve apertar a tecla TAB. A abreviação '\t' só
é reconhecida como um metacaractere nas expressões regulares no
awk, perl, HHsed, sedmod, e o GNU sed v3.02.80.

VERSÕES DO SED: As versões do sed diferem entre si, logo, algumas
variações na sintaxe são esperadas. Em particular, a maioria
não suporta o uso de rótulos (:nome) ou instruções ramificadas
(b,t) na edição dos comandos, exceto no final dos mesmos. Nós utilizamos
uma sintaxe que seria portável para a maioria dos usuários do sed,
mesmo sabendo que a popular versão GNU do sed permite uma sintaxe
mais sucinta. Quando o leitor vê um comando comprido como esse:

   sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d

é importante que ele saiba que o GNU sed permite uma redução, como:

   sed '/AAA/b;/BBB/b;/CCC/b;d'		# ou mesmo
   sed '/AAA\|BBB\|CCC/b;d'

Lembre-se ainda que, apesar de muitas versões do sed aceitarem comandos
como "/one/ s/RE1/RE2/", algumas não permitem o uso de "/one/! s/RE1/RE2/",
a qual contém um espaço antes do 's'. Omita o espaço quando for digitar
o comando.

OTIMIZANDO PARA MAIOR VELOCIDADE: Se a velocidade de execução precisa
aumentar (em virtude de grandes arquivos de entrada ou de processadores
e discos rígidos lentos), a substituição será executada mais rapidamente
se a expressão de "procura" é especificada antes da instrução
"s/.../.../". Assim:

   sed 's/foo/bar/g' arquivo         # comando de substituição padrão
   sed '/foo/ s/foo/bar/g' arquivo   # executa de forma mais rápida
   sed '/foo/ s//bar/g' arquivo      # sintaxe mais sucinta

Na seleção ou remoção de linhas nas quais você somente precisa
ver uma primeira parte de um arquivo, o comando "quit" (q) no script
irá reduzir drasticamente o tempo de processamento para arquivos
grandes. Assim:

   sed -n '45,50p' arquivo           # imprime as linhas 45-50
   sed -n '51q;45,50p' arquivo       # mesma coisa, mas faz muito mais
                                     # rapidamente</pre>
<pre></pre>
<pre>Fonte: <a href="http://sed.sourceforge.net/">http://sed.sourceforge.net/</a></pre>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/11/15/port-knocking-para-ssh-rapido-e-facil-com-iptables/' rel='bookmark' title='Port knocking para SSH rápido e fácil com iptables'>Port knocking para SSH rápido e fácil com iptables</a> <small>Port knocking funciona como um cadeado de segredo para ter...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/11/25/utilizando-sed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando Apache para Performance Maxima</title>
		<link>http://blog.deserv.info/2011/11/17/configurando-apache-para-performance-maxima-2/</link>
		<comments>http://blog.deserv.info/2011/11/17/configurando-apache-para-performance-maxima-2/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 17:34:54 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Softwares Adicionais]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[AllowOverride]]></category>
		<category><![CDATA[Apache-performance]]></category>
		<category><![CDATA[Apache2]]></category>
		<category><![CDATA[FollowSymLinks]]></category>
		<category><![CDATA[KeepAlive and KeepAliveTimeout]]></category>
		<category><![CDATA[MaxClients]]></category>
		<category><![CDATA[MaxRequestsPerChild]]></category>
		<category><![CDATA[MaxSpareServers]]></category>
		<category><![CDATA[MinSpareServers]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[StartServers]]></category>
		<category><![CDATA[SymLinksIfOwnerMatch]]></category>
		<category><![CDATA[Vishnu Ram]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=624</guid>
		<description><![CDATA[Introdução Apache é a implementação open source de um servidor HTTP. Ele é o webserver mais popular na Internet. Uma pesquisa realizada em 2005 pela NetCraft mostra que cerca de 70% dos sites na Internet rodam sobre o Apache. Opções de Configuração em tempo de Compilação Carrege apenas os módulos necessários O servidor Apache é [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-1/' rel='bookmark' title='Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)'>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)</a> <small>A seguir vou detalhar o passo-a-passo resumido da configuração usada,...</small></li>
<li><a href='http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-2/' rel='bookmark' title='Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)'>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)</a> <small>Depois de apresentar a configuração do Apache, PHP, APC e...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<h2>Introdução</h2>
<p align="justify">Apache é a implementação open source de um servidor HTTP. Ele é o webserver mais popular na Internet. Uma pesquisa realizada em 2005 pela NetCraft mostra que cerca de 70% dos sites na Internet rodam sobre o Apache. <span id="more-624"></span></p>
<h2>Opções de Configuração em tempo de Compilação</h2>
<h3>Carrege apenas os módulos necessários</h3>
<p align="justify">O servidor Apache é um programa modular onde o administrador pode escolher entre as funcinalidade que deseja incluir no servidor selecionando um pacote de módukis. Os módulos podem ser compilados estaticamente no binário httpd ou dinamicamente como DSOs(Dynamic Shared Objects). Módulos DSO podem ser compilados quando o servidor for compilado ou poem ser compilados utilizando o apxs para adicioná-los mais tarde. O modulo mod_so deve ser compilado estaticamente no Apache para que o suporte a DSO seja ativo.</p>
<p align="justify">Execute o apache apenas com os módulos necessários. Isto reduz o consumo de memória aumenta a performance do servidor. Compilar os módulos estaticamente irá reduzir o consumo de RAM que é utilizado para suportar módulos compilados dinamicamente, mas será necessário recompilar o apache toda vez que um módulo for adicionado ou removido. È aqui que o DSO se torna útil. Uma vez que o modulo mod_so seja compilado estaticamente, qualquer outro módulo pode ser inserido ou removido utilizando o comando LoadModule no arquivo httpd.conf &#8211; , mas você terá que compilar os módulos utilizando apxs se ele não foi compilado quando o servidor foi feito.</p>
<h3>Escolha o MPM apropriado</h3>
<p align="justify">O apache vem com uma selação de Módulos Multi-Processadores (MPMs) que são responsáveis por abrir as portas de rede na máquina, aceitando requisições, e despachando processos para cuidar das requisições. Apenas um MPM pode ser carregado por vez.</p>
<p align="justify">Escolher o MPM depende de vários fatores, por exemplo se o SO suporta threads, quanta memória está disponível, escalabilidade versus estabilidade, modulos externos,etc .. Sistemas Linux podem escolher entr utilizar um MPM com suporte (worker) a threads ou um prefork sem threads:</p>
<p align="justify">O MPM Worker utiliza múltiplos processos. Ele é multi-threaded com cada processo e cada thread cuidando de uma única conexão. Esté é mais rápido e mais escalável e a memória consumida e relativamente baixa. Funciona bem com múltiplos processadores. Porém, o worker é menos tolerante a módulos defeituosos, e threads defeituosas podem afetar todas as outras threads de um processo.</p>
<p align="justify">O MPM Prefork utiliza múltiplos processos filhos, cada filho cuidad de apenas uma conexão por vez. Prefork é muito bem gerenciada por processadores simples ou múlitplos, a velocidade é comparável ao worker e é mais tolerante a falhas em modulos e processos que terminam inesperadamente. Mas o consumo de memória é alto, mais tráfego leva a mais consumo de memória.</p>
<h2>Opções de Configuração em Tempo de Execução</h2>
<h3>DNS lookup</h3>
<p align="justify">A diretiva HostnameLookips habilita a consulta de DNS, então os hostnames podem ser logados ao invés de endereços IP. Isto adiciona latência em cada requisição desde que a consulta do DNS tem que ser completada antes que a requisição seja terminada. Esta opção é desabilitada por padrão no Apache 1.3 e superiores. Deixe isto inativo e utilize programas pós-processamento como o logresolve para determinar os IPs dos logs. Logresolve vem com Apache.</p>
<p align="justify">Quando utilizar as diretivas Allow from ou Deny from, utilize endereços IP ao invés de nomes de domínios. Caso contrário uma consulta dupla ao DNS será executada para ter certeza de que o domínio ou host não está sendo spoofado.</p>
<h3>AllowOverride</h3>
<p align="justify">Se o AllowOverride está setado para &#8216;None&#8217;, então o Apache irá tentar abrir o arquivo .htaccess (especificada pela diretiva AccessFileName) em cada diretório que for acessado. Por exemplo:</p>
<blockquote>
<pre>DocumentRoot /var/www/html
&lt;Directory /&gt;
AllowOverride all
&lt;/Directory&gt;</pre>
</blockquote>
<p align="justify">Se uma requisição for feita para acessar /index.html, o Apache irá tentar abrir /.htaccess, /var/.htaccess, /var/www/.htaccess, and /var/www/html/.htaccess. Estas tentativas aumentam a latência. Se o arquivo .htaccess for necessário para um diretório, habilite apenas para este diretório.</p>
<h3>FollowSymLinks e SymLinksIfOwnerMatch</h3>
<p align="justify">Se a opção FollowSymLinks estiver setada, então o servidor permitirá que links simbólicos possam ser seguidos neste diretório. Se a opção SymLinksIfOwnerMatch estiver setada, então o servidor permitirá acessar o link apenas se o destino dele bater com o dono do link.</p>
<p align="justify">Se a opção SymLinksIfOwnerMatch estiver setada, então o Apache terá que realizar consultas adicionais ao sistema para verificar se os donos coincidem. Chamadas adicionais também são necessárias quando a opção FollowSymLinks NÃO está setada. Por exemplo:</p>
<blockquote>
<pre>DocumentRoot /vaw/www/html
&lt;Directory /&gt;
Options SymLinksIfOwnerMatch
&lt;/Directory&gt;</pre>
</blockquote>
<p align="justify">Para uma requisição feita para /index.html, o Apache irá executar lstat() em /var, /var/www, /var/www/html, and /var/www/html/index.html. Estas requisições adicionais também irão aumentar a lantência. Os resultados do lstat não são cacheados, então as consultas irão ocorrer em cada requisição.</p>
<p align="justify">Para uma máxima performance, sete FollowSymLinks em cada lugar e nunca sete SymLinksIfOwnerMatch. Ou então, se SymLinksIfOwnerMatch for necessário para um diretório, sete ele para apenas este diretório.</p>
<h3>Content Negotiation</h3>
<p align="justify">Evite utilizar content negotiation para respostas mais rápidas. Se content negotiation é necessário para o site, utilize arquivos type-map ao invés da diretiva Options MultiViews. Com MultiViews, Apache precisa scanear o diretório em busca de arquivos, o que adiciona latência.</p>
<h3>MaxClients</h3>
<p align="justify">O MaxClients seta o número máximo de clientes simultâneos que pode ser suportada por cada servidor. Nenhum processo além do que está definido será aberto. Ele não deve conter um número muito baixo já que as requisições serão colacadas em fila, o que eventualmente irá dar time-out e os recursos do servidor continuarão não utilizados. Setar este valor muito alto irá causar o início de swap e o tempo de resposta irá cair drasticamente. O valor apropriado para MaxClientes pode ser calculado por: MaxClientes = Total RAM / Tamanho Máximo de Processos . O tamanho dos processos para arquivos estáticos é de mais ou menos 2-3MB. Para dinâmicos como PHP, deve ser por volta de 15MB. A coluna RSS de:</p>
<blockquote>
<pre># ps -ylC httpd --sort:rss</pre>
</blockquote>
<p align="justify">Mostra a memória física non-swapped utilizada pelos processos do Apache em kilo Bytes.</p>
<p align="justify">Se existem mais usuários concorrentes do que MaxClients, as requisições serão colocadas em fila até o número baseado na diretiva ListenBacklog. Aumente o ServerLimit para setar o MaxClients acima de 256.</p>
<h3>MinSpareServers, MaxSpareServers, e StartServers</h3>
<p align="justify">MaxSpareServers e MinSpareServers determina quantos processos filhos devem ser mantidos rodando. Se MinSpareServers for muito baixo e muitas requisições forem iniciadas, então o Apache terá que abrir processos adicionais para atender as requisições. Criar processos filhos é relativamente caro. Se o servidor estiver ocupado criando processos, ele não estará disponível para servir as requisições imediatamente. MaxSpareServers não deve ser muito alto, ele pode causar problemas de recursos desde que cada processo consome os recursos da máquina.</p>
<p align="justify">Sete MinSpareServers e MaxSpareServers para um valor com que o Apache não precise frequentemente abrir mais de 4 processos por segundo. (O Apache pode abrir o máximo de 32 processos por segundo). Quando mais de 4 processos por segundo forem abertos, uma mensagem será logada no ErrorLog.</p>
<p align="justify">A diretiva StartServers define o número de processos criados na inicialização do Apache. O Apache irá continuar abrir os processos até que alcance o número de MinSpareServers. Não afeta muito a performance já que o servidor não é reiniciado frequentemente. Se existem muitas requisições e o Apache é reiniciado frequentemente, sete este valor para um número alto.</p>
<h3>MaxRequestsPerChild</h3>
<p align="justify">A diretiva MaxRequestsPerChild definie o número de requisições que um processo do servidor irá gerenciar. Depois as requisições MaxRequestsPerChild irão morrer. É definido para 0 por padrão, o que significa que o processo não irá expirar nunca. É apropriado setar este valor para alguns milhares. Isto pode ajudar a previnir vazamento de memória desde que o processo morre depois de servir um número de requisições. Não sete este valor muito baixo, já que criar novos processos causa overhead.</p>
<h3>KeepAlive and KeepAliveTimeout</h3>
<p align="justify">A diretiva KeepAilve permite que múltiplas requisições possam ser enviadas pela mesma conexão TCP. Isto é útil para páginas com muitas imagens. Se o KeepAlive estiver Off, então para cada imagem, uma nova conexão TCP precisa ser aberta.</p>
<p align="justify">KeepAliveTimeout determinada quanto tempo deve esperar até a próxima requisição. Sete para um valor baixo, por volta de 2 a 5 segundos. Se for setado para um valor muito alto, os processos ficam amarrados esperando pelo cliente quando eles poderiam ser utilizados para servir novos clientes.</p>
<h2>Compressão HTTP &amp; Caching</h2>
<p align="justify">O servidor utiliza os métodos gzip ou deflate para as respostas payload antes que ele seja enviado para os clientes. Então o cliente descompacta o payload. Não existe necessidade de instalar softwares adicionais no lado do cliente desde que a maioria dos navegadores suporta isto. Utilizar compressão irá economizar banda e irá aumentar o tempo de resposta, estudos mostram que em média o ganho da compressão é de 75%. A compressão pode ser habilitada utilizando módulo mod_deflate. O Payload é compactado apenas se o navegador requisitar a compactação, ou então o conteúdo descompactado será enviado. Um navegador capaz de utilizar o conteúdo compactado envia o seguinte cabeçalho na requisição: &#8220;Accept-Encoding: gzip,deflate&#8221;. Então o servidor irá enviar o payload compactado e o cabeçalho da reposta é &#8220;Content-Encoding: gzip&#8221;</p>
<p align="justify">O exemplo a seguir utiliza o telnet para verificar os cabeçalhos de requisição e de resposta:</p>
<blockquote>
<pre>bash-3.00$ telnet www.webperformance.org 80
Trying 24.60.234.27...
Connected to www.webperformance.org (24.60.234.27).
Escape character is '^]'.
HEAD / HTTP/1.1
Host: www.webperformance.org
Accept-Encoding: gzip,deflate

HTTP/1.1 200 OK
Date: Sat, 31 Dec 2005 02:29:22 GMT
Server: Apache/2.0
X-Powered-By: PHP/5.1.1
Cache-Control: max-age=0
Expires: Sat, 31 Dec 2005 02:29:22 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Content-Type: text/html; charset=ISO-8859-1</pre>
</blockquote>
<p align="justify">O module mod_cache pode ser utilizado no lado do servidor, está em produção estável na versão 2.2 do Apache.</p>
<h2>Servidor separado para conteúdo estático e dinâmico</h2>
<p align="justify">Processos do apache para conteúdo dinâmico consome cerca de 3-20MB de RAM. E cresce para acomodar o conteúdo e nunca diminui até que o processo termine. Digamos que um processo cresca até os 20MB para servir um conteúdo dinâmico. Depois de completar a requisição, ele está libre para servir outra requisição. Se vier uma requisição para uma imagem, então esses 20MB de processos está servindo um conteúdo estático que poderia ser executado por um processo de 1MB. A memória é utilizada ineficientemente.</p>
<p align="justify">Utilize uma pequena compilação do Apache (com o mínimo de módulos compilados estaticamente) como sendo o servidor front-end para servir conteúdos estáticos. As requisições para conteúdos dinâmicos serão encaminhadas para um apache robusto (compilado com todos os módulos necessários). Utilizar um servidor front-end leve tem a vantagem de que os conteúdos estáticos são enviados rapidamente sem o consumo alto de memória e apenas o conteúdo dinâmico é passado para o servidor robusto.</p>
<p align="justify">Encaminhamento de requisições pode ser implementado utilizando os módulos mod_proxy e mod_rewrite. Suponha que exista um servidor apache leve rodando na porta 80 e o robusto na porta 8088. Então a configuração a seguir pode ser utilizada no apache leve para encaminhar todas as requisições de conteúdo dinâmico para o servidor robusto.</p>
<blockquote>
<pre>ProxyPassReverse / http://%{HTTP_HOST}:8088/
RewriteEngine on
RewriteCond   %{REQUEST_URI} !.*\.(gif|png|jpg)$
RewriteRule ^/(.*) http://%{HTTP_HOST}:8088/$1 [P]</pre>
</blockquote>
<p align="justify">Todas as requisições, exceto as imagens serão encaminhadas para o apache robusto. As respostas são recebidas pelo servidor front-end que as encaminha para o cliente. Todas as respostas aparentam vir de um único servidor.</p>
<h2>Conclusão</h2>
<p align="justify">Configurar o Apache para obter o máximo de performance pode ser traiçoeiro, não existem regras rápidas. Entenda as necessidades do servidor web e experimente com várias opções. Utiliza ferramentas como ab e httperf para medir a performance do servidor. Servidores leves como tux, thttpd também podem ser utilizados como servidores front-end. Se um servidor de banco de dados é utilizado, tenha certeza de que ele está otimizado para que ele não crie nenhum gargalo. No caso do MySQL, mtop pode ser utilizado para monitorar querys lentas. Performance de scripts PHP pode ser melhorada utilizando produtos de cache como o Turck MMCache. Ele elimina o overhead da compilação realizando cache dos scripts em seu estado compilado.</p>
<p>&nbsp;</p>
<h2>Fonte</h2>
<ul>
<li><a href="http://www.howtoforge.net/configuring_apache_for_maximum_performance" rel="nofollow">http://www.howtoforge.net/configuring_apache_for_maximum_performance</a></li>
<li>http://under-linux.org/wiki/Tutoriais/Apache/Apache-performance</li>
</ul>
<h2>Autor</h2>
<p align="justify">Escrito por: Vishnu Ram is an MTech. in Communication Systems from IIT Madras. He joined Bobcares in 2003 and has been working for Poornam since then.</p>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-1/' rel='bookmark' title='Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)'>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 1)</a> <small>A seguir vou detalhar o passo-a-passo resumido da configuração usada,...</small></li>
<li><a href='http://blog.deserv.info/2011/08/16/nginx-apache-php5-apc-linux-memcached-performance-parte-2/' rel='bookmark' title='Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)'>Nginx + Apache + PHP5 + APC + Linux + Memcached = PERFORMANCE!! (parte 2)</a> <small>Depois de apresentar a configuração do Apache, PHP, APC e...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/11/17/configurando-apache-para-performance-maxima-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Port knocking para SSH rápido e fácil com iptables</title>
		<link>http://blog.deserv.info/2011/11/15/port-knocking-para-ssh-rapido-e-facil-com-iptables/</link>
		<comments>http://blog.deserv.info/2011/11/15/port-knocking-para-ssh-rapido-e-facil-com-iptables/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 17:46:28 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Acesso Remoto]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Iptables]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Port knocking]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=618</guid>
		<description><![CDATA[Port knocking funciona como um cadeado de segredo para ter acesso ao servidor, onde o usuário ou invasor terá que &#8220;bater&#8221; em um determinado número de portas com um limite de tempo também determinado para fazer a sequência para só assim liberar o ip que ele estiver usando também por um determinado tempo. O acesso [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/11/01/iredmail-servidor-de-e-mails-facil-e-rapido/' rel='bookmark' title='iRedMail: Servidor de e-mails fácil e rápido'>iRedMail: Servidor de e-mails fácil e rápido</a> <small>Introdução O e-mail é a forma de comunicação mais utilizada...</small></li>
<li><a href='http://blog.deserv.info/2011/08/30/atualizando-vmware-esxi-4-0-para-4-1/' rel='bookmark' title='Atualizando VMWARE Esxi 4.0 para 4.1'>Atualizando VMWARE Esxi 4.0 para 4.1</a> <small>Para quem tem o VMWare Esxi 4.0 aqui vão os...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p><em>Port knocking</em> funciona como um cadeado de segredo para ter acesso ao servidor, onde o usuário ou invasor terá que &#8220;bater&#8221; em um determinado número de portas com um limite de tempo também determinado para fazer a sequência para só assim liberar o ip que ele estiver usando também por um determinado tempo. O acesso a porta que queremos aqui no caso é a 22 (ssh).  <span id="more-618"></span></p>
<p>Vamos construir um cenário onde você queira primeiro liberar o acesso direto a alguns IPs sem precisar passar pelo segredo das portas, depois liberaremos todos os IPs (ou alguma rede específica) somente se acertarem a sequência das portas e por último bloquearemos todo o resto.</p>
<p>A configuração a seguir pode ser adicionada a seu script de firewall.</p>
<p>Como este é o primeiro tutorial que escrevo, tentarei ser o mais claro possível (espero que me perdoem se não conseguir):</p>
<div>####### Libera ssh para um determinado ip sem precisar passar pelo segredo ##############<br />
####### xxx.xxx.xxx.xxx = IP que deseja liberar#######################</div>
<div>iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx &#8211;dport ssh -j ACCEPT<br />
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx &#8211;dport ssh -j ACCEPT<br />
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx &#8211;dport ssh -j ACCEPT</div>
<div>
<p>####### A rede que você quer que tenha acesso ao segredo (aqui no caso está para qualquer uma)</p>
<p>HOST_IP=&#8221;0.0.0.0/0.0.0.0&#8243;</p>
<p>####### Fases do Segredo ##################################<br />
/sbin/iptables -N INTO-FASE2<br />
/sbin/iptables -A INTO-FASE2 -m recent &#8211;name FASE1 &#8211;remove<br />
/sbin/iptables -A INTO-FASE2 -m recent &#8211;name FASE2 &#8211;set<br />
/sbin/iptables -A INTO-FASE2 -j LOG &#8211;log-prefix &#8220;INTO FASE2: &#8221;</p>
<p>/sbin/iptables -N INTO-FASE3<br />
/sbin/iptables -A INTO-FASE3 -m recent &#8211;name FASE2 &#8211;remove<br />
/sbin/iptables -A INTO-FASE3 -m recent &#8211;name FASE3 &#8211;set<br />
/sbin/iptables -A INTO-FASE3 -j LOG &#8211;log-prefix &#8220;INTO FASE3: &#8221;</p>
<p>/sbin/iptables -N INTO-FASE4<br />
/sbin/iptables -A INTO-FASE4 -m recent &#8211;name FASE3 &#8211;remove<br />
/sbin/iptables -A INTO-FASE4 -m recent &#8211;name FASE4 &#8211;set<br />
/sbin/iptables -A INTO-FASE4 -j LOG &#8211;log-prefix &#8220;INTO FASE4: &#8221;</p>
<p>/sbin/iptables -A INPUT -m recent &#8211;update &#8211;name FASE1</p>
<p>####### Aqui você determina o número das portas e o tempo que o ip ficará em cada uma das fazes aguardando a próxima porta ser digitada. Por ex.: Você terá 15 segundos para passar de cada fase, se o tempo se expirar na fase 3 terá que começar da fase1 novamente. ###########<br />
####### Dica: não é aconselhável utilizar portas em sequências crescentes ou decrescentes como neste exemplo (100, 200, 300, 400) e sim intercalando os valores uma mais alta e uma mais baixa para evitar que algum scan consiga adivinhar a sequência. #######</p>
<p>/sbin/iptables -A INPUT -p tcp &#8211;dport 100 -m recent &#8211;set &#8211;name FASE1<br />
/sbin/iptables -A INPUT -p tcp &#8211;dport 200 -m recent &#8211;rcheck &#8211;seconds 15 &#8211;name FASE1 -j INTO-FASE2<br />
/sbin/iptables -A INPUT -p tcp &#8211;dport 300 -m recent &#8211;rcheck &#8211;seconds 15 &#8211;name FASE2 -j INTO-FASE3<br />
/sbin/iptables -A INPUT -p tcp &#8211;dport 400 -m recent &#8211;rcheck &#8211;seconds 15 &#8211;name FASE3 -j INTO-FASE4</p>
<p>####### Aqui chegamos a FASE4, que é a última deste exemplo, onde será liberada a conexão com a porta 22 (ssh). O tempo aqui está setado para 3600 segundos (1 hora). Depois disso será fechada novamente para o ip em questão, lembrando que se ele ainda estiver logado não fará diferença, será fechada mesmo assim. Então aumente o tempo conforme desejado.####</p>
<p>/sbin/iptables -A INPUT -p tcp -s $HOST_IP &#8211;dport 22 -m recent &#8211;rcheck &#8211;seconds 3600 &#8211;name FASE4 -j ACCEPT</p>
<p>####### Por último fechamos todos acessos a porta 22 ########</p>
<p>/sbin/iptables -A INPUT -p tcp &#8211;dport 22 -j DROP</p>
</div>
<p>Testando:</p>
<p>A forma mais fácil que eu acho para testar é utilizando o telnet. Por ex.:</p>
<p><strong>$ telnet IP_SERVIDOR 100<br />
$ telnet IP_SERVIDOR 200<br />
$ telnet IP_SERVIDOR 300<br />
$ telnet IP_SERVIDOR 400</strong></p>
<p>e agora é só entrar com ssh normalmente.</p>
<p>Por: Leandro Lanini<br />
Fonte: http://www.vivaolinux.com.br</p>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/11/01/iredmail-servidor-de-e-mails-facil-e-rapido/' rel='bookmark' title='iRedMail: Servidor de e-mails fácil e rápido'>iRedMail: Servidor de e-mails fácil e rápido</a> <small>Introdução O e-mail é a forma de comunicação mais utilizada...</small></li>
<li><a href='http://blog.deserv.info/2011/08/30/atualizando-vmware-esxi-4-0-para-4-1/' rel='bookmark' title='Atualizando VMWARE Esxi 4.0 para 4.1'>Atualizando VMWARE Esxi 4.0 para 4.1</a> <small>Para quem tem o VMWare Esxi 4.0 aqui vão os...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/11/15/port-knocking-para-ssh-rapido-e-facil-com-iptables/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iRedMail: Servidor de e-mails fácil e rápido</title>
		<link>http://blog.deserv.info/2011/11/01/iredmail-servidor-de-e-mails-facil-e-rapido/</link>
		<comments>http://blog.deserv.info/2011/11/01/iredmail-servidor-de-e-mails-facil-e-rapido/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 20:36:28 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[E-mails - Anti Virus]]></category>
		<category><![CDATA[Instalação e Compilação de SW]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[MTA]]></category>
		<category><![CDATA[pop]]></category>
		<category><![CDATA[servidor de email; iRedMail]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=611</guid>
		<description><![CDATA[Introdução O e-mail é a forma de comunicação mais utilizada hoje em dia. Se o servidor de e-mails de uma empresa parar, é como se o mundo acabasse para os usuários! O telefone não vai parar de tocar, e-mails importantes não serão entregues/recebidos podendo gerar grandes prejuízos financeiros para empresas. Imaginando um cenário desses, você [...]
Nenhum Post Relacionado.

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p><img title="iredmaillogo" src="http://images.pedropereira.net/2009/05/iredmaillogo.png" alt="iredmaillogo" width="126" height="53" /></p>
<p><strong>Introdução</strong></p>
<p>O e-mail é a forma de comunicação mais utilizada hoje em dia. Se o servidor de e-mails de uma empresa parar, é como se o mundo acabasse para os usuários! O telefone não vai parar de tocar, e-mails importantes não serão entregues/recebidos podendo gerar grandes prejuízos financeiros para empresas.</p>
<p>Imaginando um cenário desses, você com certeza não escolheria qualquer solução para implantar na sua empresa, certo? Atualmente, um dos melhores, mais seguros e mais estáveis softwares MTA (Mail Transport Agent) disponíveis é o Postfix. <span id="more-611"></span></p>
<p>Embora ele seja simples para quem já possui experiência na administração de servidores Linux, ele pode ser um pouquinho complicado para quem está apenas começando na administração de sistemas.</p>
<p>Por isso, neste artigo vou mostrar uma solução para facilitar a configuração do Postfix: o iRedMail. Este é um software que automatiza todo o processo de instalação e configuração de um servidor de e-mails utilizando as distribuições CentOS e Red Hat. Ele permite que você escolha o backend de gerenciamento de usuários (MySQL ou OpenLDAP), qual o webmail que você quer utilizar, gerenciador MySQL ou OpenLDAP, entre várias outras opções.</p>
<p>Aqui, vou assumir que você já possui um servidor CentOS configurado e funcional com acesso à Internet.</p>
<p><strong>Quais os softwares que o iRedMail utiliza?</strong></p>
<p>O iRedMail faz o download de todos os softwares automaticamente. Porém, obviamente você precisa saber quais são estes softwares que ele utiliza e suas versões também.</p>
<p>Segue uma lista de alguns dos softwares utilizados por ele:</p>
<ul>
<li>Amavisd-new 2.6.2-2</li>
<li>Clamav 0.94.2-1</li>
<li>Dovecot 1.1.11</li>
<li>Postfix 2.5.6</li>
</ul>
<p>Claro que esta não é a lista completa. Para verificar todos os pacotes que foram baixados para a sua máquina entre no diretório pkgs/rpms dentro do diretório criado quando você descompacta o iRedMail.</p>
<p><strong>Download do iRedMail</strong></p>
<p>O site oficial do iRedMail é <a href="http://code.google.com/p/iredmail/">http://code.google.com/p/iredmail/</a><a href="http://code.google.com/p/iredmail/">.</a></p>
<p>Vá até a seção “Downloads”. Lá você irá encontrar todas as versões do iRedMail que foram publicadas. Até a data de publicação deste texto, a versão mais recente é a 0.4.0, que pode ser obtida no link: <a href="http://iredmail.googlecode.com/files/iRedMail-0.4.0.tar.bz2">http://iredmail.googlecode.com/files/iRedMail-0.4.0.tar.bz2</a>.</p>
<p><strong>Instalação</strong></p>
<p>O script de instalação do iRedMail cuida de todo o processo, inclusive do download de todos os RPM’s necessários para que a instalação seja feita sem problemas. Vamos à instalação.</p>
<p>Primeiro, descompacte o arquivo que você baixou do site oficial:</p>
<p><strong># tar xjvf iRedMail-0.4.0.tar.bz2</strong></p>
<p>Será criado um diretório chamado iRedMail-0.4.0. Entre nele:</p>
<p><strong># cd iRedMail-0.4.0</strong></p>
<p>O seu diretório se parecerá com este:</p>
<p><img title="listagemdirprin" src="http://images.pedropereira.net/2009/05/listagemdirprin.png" alt="listagemdirprin" width="720" height="448" /></p>
<p>Entre no diretório pkgs e execute o script que faz o download de todos os pacotes necessários:</p>
<p><strong># bash get_all.sh</strong></p>
<p>E vá tomar um café. Dependendo da velocidade da sua conexão esta etapa poderá demorar um pouco para ser concluída. Quando ela terminar, podemos começar a configuração do nosso servidor de e-mail.</p>
<p>Para isso, faça o seguinte. Suba um nível em relação ao diretório pkgs (o diretório raíz do iRedMail) e execute o script iRedMail.sh:</p>
<p><strong># cd .. ; bash iRedMail.sh</strong></p>
<p>Você verá a tela inicial da instalação do iRedMail:</p>
<p><img title="tela1" src="http://images.pedropereira.net/2009/05/tela1.png" alt="tela1" width="720" height="448" /></p>
<p>Esta tela é apenas informativa. Aperte enter para passarmos para a próxima tela.</p>
<p><img title="tela2" src="http://images.pedropereira.net/2009/05/tela2.png" alt="tela2" width="720" height="448" /></p>
<p>Esta tela permite que você escolha qual será o diretório home do usuário vmail. Como não serão criados usuários no sistema (todos os usuários serão virtuais), todos os e-mails serão entregues ao vmail e ele irá “distribuir” estas mensagens aos usuários certos.</p>
<p>Como este diretório irá conter todos os e-mails que chegam ao sistema, pode ser que ele cresça bastante com o tempo, portanto pense no futuro e reserve um espaço considerável para o home do usuário vmail.</p>
<p>Você pode deixar o padrão ou modificar para outro diretório que você queira. Depois selecione “OK”.</p>
<p><img title="tela3" src="http://images.pedropereira.net/2009/05/tela3.png" alt="tela3" width="720" height="448" /></p>
<p>Agora, devemos escolher qual vai ser o backend do nosso servidor de e-mail. Isto irá informar ao iRedMail como nós queremos que ele guarde as informações de contas de usuários, autenticação, etc.</p>
<p>Se você escolher MySQL, o webmail será o RoundCube (um webmail excelente) e a ferramenta de administração será o PostfixAdmin. Se você escolher o OpenLDAP ele irá utilizar o SquirrelMail como webmail (o RoundCube não suporta OpenLDAP) e a ferramenta de administração será o phpLDAPadmin.</p>
<p>O MySQL é o recomendado, aqui iremos utilizá-lo. Obviamente, os passos daqui para frente serão diferentes dependendo do que você escolher aqui. Em outro artigo tratarei a configuração do OpenLDAP como backend. Vamos para a próxima tela.</p>
<p><img title="tela4" src="http://images.pedropereira.net/2009/05/tela4.png" alt="tela4" width="720" height="448" /></p>
<p>Aqui devemos informar ao iRedMail qual a senha queremos utilizar para o usuário root do MySQL. Informe a senha com cuidado pois não haverá chance de confirmá-la mais tarde. Tenha certeza que digitou a senha corretamente.</p>
<p><img title="tela5" src="http://images.pedropereira.net/2009/05/tela5.png" alt="tela5" width="720" height="448" /></p>
<p>Nesta tela devemos informar a senha do usuário administrador do Vmail. Aqui acontece a mesma coisa que aconteceu com a senha do root do MySQL: você não vai poder confirmar a senha que escreveu. Portanto, tenha certeza que digitou a senha corretamente.</p>
<p><img title="tela6" src="http://images.pedropereira.net/2009/05/tela6.png" alt="tela6" width="720" height="448" /></p>
<p>Aqui acabam as diferenças de configuração entre MySQL e OpenLDAP.</p>
<p>Você precisa informar o domínio que você quer utilizar. Lembre-se, este é um domínio virtual. Você poderá adicionar outros domínios sem problema algum quando precisar.</p>
<p><img title="tela7" src="http://images.pedropereira.net/2009/05/tela7.png" alt="tela7" width="720" height="448" /></p>
<p>Nesta tela você deve definir qual será o nome de usuário do administrador do domínio. O padrão em todos os servidores de e-mail é definir “postmaster” para este usuário. Seguiremos o padrão aqui.</p>
<p><img title="tela8" src="http://images.pedropereira.net/2009/05/tela8.png" alt="tela8" width="720" height="448" /></p>
<p>Aqui devemos definir qual será a senha da conta “postmaster”, o administrador do domínio.</p>
<p><img title="tela9" src="http://images.pedropereira.net/2009/05/tela93.png" alt="tela9" width="720" height="448" /></p>
<p>Nesta tela você pode criar o primeiro usuário “normal” do seu domínio. Ele não terá direito especial algum, é apenas um usuário.</p>
<p><img title="tela10" src="http://images.pedropereira.net/2009/05/tela10.png" alt="tela10" width="720" height="448" /></p>
<p>Nesta tela você pode definir a senha para o usuário. Ele irá utilizar esta senha quando for ler o e-mail ou acessar o webmail.</p>
<p><img title="tela11" src="http://images.pedropereira.net/2009/05/tela11.png" alt="tela11" width="720" height="448" /></p>
<p>Aqui você deve escolher se quer habilitar ou não o suporte a SPF e DKIM. Segue uma breve descrição sobre o que são ambos:</p>
<ul>
<li><strong>DKIM: </strong>DomainKeys Identified Mail. Basicamente, o DKIM oferece um método para validar um nome de domínio associado a um e-mail através de autenticação criptográfica.</li>
<li><strong>SPF:</strong> O objetivo do SPF é impedir que worms, vírus e spammers utilizem endereços arbitrários (ou inexistentes) no campo “sender” do envelope do e-mail. Os administradores do domínio devem publicar registros SPF no DNS e os administradores do servidor de e-mail devem utilizar MTAs (como o Postfix) que possuam suporte ao SPF para que ele compreenda os registros SPF. Estes registros informam quais servidores possuem autoridade para enviar e-mails. Qualquer outro servidor enviando e-mails destes domínios não possui credibilidade e os e-mails são descartados.</li>
</ul>
<p>Você pode habilitar ambos ou nenhum, fica à sua escolha.</p>
<p><img title="tela12" src="http://images.pedropereira.net/2009/05/tela12.png" alt="tela12" width="720" height="448" /></p>
<p>O pysieved é um serviço que gerencia scripts Sieve que os usuários utilizam.</p>
<p>&nbsp;</p>
<p>Sieve é uma linguagem especializada no tratamento e filtragem de e-mails. Não é uma linguagem de programação completa.</p>
<p>&nbsp;</p>
<p>Ela permite que se desenvolva pequenos scripts (que podem ser implementados no cliente ou no servidor de e-mails) que filtram e-mails, como por exemplo recusando e-mails maiores de 1MB e enviando uma mensagem de aviso de volta à origem da mensagem (ao remetente).</p>
<p>&nbsp;</p>
<p>O pysieved permite que os usuários executem scripts Sieve no servidor sem precisar de uma conta nele.</p>
<p><img title="tela13" src="http://images.pedropereira.net/2009/05/tela13.png" alt="tela13" width="720" height="448" /></p>
<p>Nesta tela você pode escolher se vai prover suporte a POP3/IMAP utilizando SSL.</p>
<p>&nbsp;</p>
<p>É recomendado que se utilize o SSL pois ele criptografa todo o conteúdo das mensagens impedindo que sniffers e ataques como “man in the middle” consigam ler todo o conteúdo transferido por estas mensagens.</p>
<p><img title="tela14" src="http://images.pedropereira.net/2009/05/tela14.png" alt="tela14" width="720" height="448" /></p>
<p>Nesta tela você pode escolher o webmail que deseja utilizar no seu servidor. Escolha o seu favorito e selecione “OK”.</p>
<p><img title="tela15" src="http://images.pedropereira.net/2009/05/tela15.png" alt="tela15" width="720" height="448" /></p>
<p>Neste passo da instalação você poderá definir qual será a língua principal utilizada no seu webmail. Basta utilizar a seta para baixo para rolar por todas as opções e utilizar a barra de espaço para selecionar.</p>
<p><img title="tela16" src="http://images.pedropereira.net/2009/05/tela16.png" alt="tela16" width="720" height="448" /></p>
<p>Nesta tela você pode escolher se quer instalar o phpMyAdmin (para administrar o banco de dados MySQL via web), o PostfixAdmin (para gerenciar domínios e contas de usuários via web) e o AwStats (para verificar estatísticas sobre o servidor de e-mails).</p>
<p><img title="tela17" src="http://images.pedropereira.net/2009/05/tela17.png" alt="tela17" width="720" height="448" /></p>
<p>Aqui você escolhe o usuário administrador do PostfixAdmin (não do domínio). O padrão é usar o “postmaster”, mas você pode usar qualquer usuário que deseje.</p>
<p><img title="tela18" src="http://images.pedropereira.net/2009/05/tela18.png" alt="tela18" width="720" height="448" /></p>
<p>Aqui você irá criar um “alias”, um nome alternativo, para o usuário root. Isso é necessário pois é o usuário root quem irá receber as mensagens de falhas, problemas, etc do sistema.</p>
<p>Isso conclui toda a configuração do seu servidor de e-mail.</p>
<p>Depois, responda “Y” e pressione a tecla “enter” para dar continuidade ao processo de instalação do sistema.</p>
<p>Agora o iRedMail irá instalar e configurar (de acordo com os parâmetros passados a ele nos passos anteriores) todos os softwares envolvidos com o serviço de entrega de e-mails. Além disso, ele também irá atualizar todos os pacotes que já estão na máquina. O processo irá levar bastante tempo, seja paciente e aguarde até o final.</p>
<p>Quando o iRedMail perguntar se você deseja remover o sendmail, diga que sim.</p>
<p>Depois, o programa irá perguntar se você quer utilizar as regras de IPTables configuradas no iRedMail ou não. Se você quiser fazer as suas próprias regras, responda não. Caso deseje utilizar estas regras, responda sim. Se utilizar as regras, reinicie o IPTables quando for questionado.</p>
<p>Se você já estiver utilizando o MySQL para outras finalidades, responda não quando for questionado se quer sobrescrever o arquivo de configuração do MySQL utilizando um modelo fornecido pelo iRedMail. Caso não esteja utilizando o MySQL para outras finalidades, pode resopnder afirmativamente sem problemas.</p>
<p>Logo após, ele irá perguntar se você quer atualizar o Clamav. É recomendado que já faça isso para que você não corra o risco de esquecer de fazê-lo mais tarde. Para atualizar, responda “Y”.</p>
<p>Por último, o software irá perguntar se você quer inicializar o Postfix. Responda que sim. Ele irá inicializar o Postfix e todos os serviços que ele necessitar para funcionar corretamente.</p>
<p>Pronto! Seu servidor de e-mail está ativo! Basta agora você adicionar outros usuários ao banco de dados para que os outros usuários também possam utilizar o seu servidor (você pode utilizar o PostfixAdmin para isso).</p>
<p><strong>Acessando webmail e o PostfixAdmin</strong></p>
<p>Para acessar todos os serviços web configurados no seu servidor de e-mails, recomendo que configure um registro no seu DNS para facilitar as coisas.</p>
<p>Para acessar o webmail utilize a URL <a href="http://servidor/mail">http://servidor/mail</a> ou <a href="http://servidor/webmail">http://servidor/webmail</a>. Isto irá acessar o webmail que você escolheu durante a configuração do iRedMail.</p>
<p>O Postfixadmin ficará ativo no endereço <a href="http://servidor/postfixadmin">http://servidor/postfixadmin</a>.</p>
<p>Estas e muitas outras informações como localização de logs, arquivos de configuração utilizados, etc. estão localizados no arquivo dentro do diretório criado quando você descompacta o pacote do iRedMail, chamado iRedMail.tips. Nele você irá encontrar todas as informações que precisar.</p>
<p><strong>Conclusão</strong></p>
<p>O iRedMail é uma excelente ferramenta que simplifica e muito o processo de configurar um servidor de e-mails para a sua empresa. Porém, não confie 100% nele.</p>
<p>Faça todas as análises de segurança necessárias para garantir que seu servidor não será comprometido. Atualize sempre os softwares utilizados, tente configurar CHRoot, atualize sempre o anti-vírus, utilize senhas fortes, etc. Sempre tente garantir que seu servidor está o mais seguro possível.</p>
<p>&nbsp;</p>
<p>Fonte: http://www.pedropereira.net</p>

<p>Nenhum Post Relacionado.</p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/11/01/iredmail-servidor-de-e-mails-facil-e-rapido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shell Script: tratamento de argumentos e opções</title>
		<link>http://blog.deserv.info/2011/11/01/shell-script-tratamento-de-argumentos-e-opcoes/</link>
		<comments>http://blog.deserv.info/2011/11/01/shell-script-tratamento-de-argumentos-e-opcoes/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 20:11:40 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[argumentos]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[shell script]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=607</guid>
		<description><![CDATA[Escrito por Hugo Cisneiros (Eitch) Na grande maioria das vezes, a linguagem shell-script é usada para criar uma sequência de comandos que automatizam uma tarefa. Nisso, ela é extremamente eficiente e rápida. Combinar comandos é uma grande vantagem que o jeito UNIX de ser nos trouxe: várias ferramentas que fazem tarefas básicas, especializadas, e que [...]
Nenhum Post Relacionado.

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<table>
<tbody>
<tr>
<td width="100%"></td>
<td align="right" width="100%"></td>
<td align="right" width="100%"></td>
<td align="right" width="100%"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td valign="top">Escrito por Hugo Cisneiros (Eitch)</td>
</tr>
<tr>
<td valign="top"></td>
</tr>
<tr>
<td valign="top">Na grande maioria das vezes, a linguagem shell-script é usada para criar uma sequência de comandos que automatizam uma tarefa. Nisso, ela é extremamente eficiente e rápida. Combinar comandos é uma grande vantagem que o jeito UNIX de ser nos trouxe: várias ferramentas que fazem tarefas básicas, especializadas, e que quando se juntam realizam grandes <em>feitos</em>trabalhando juntas. Mas isso nunca impediu que se criasse também programas completos em shell-script.Uma característica para deixar um shell-script mais robusto e menos “<em>sequencial/batch-mode</em>” é o tratamento de argumentos. No meu clássico tutorial <a href="http://www.devin.com.br/shell_script/"><span style="text-decoration: underline;"><span style="color: #0066cc;">Programando em Shell-Script</span></span></a>, o tópico <em>Variáveis Especiais</em> nos traz os primeiros itens que devemos aprender para o tratamento de argumentos. Existem variáveis especiais que tratam os argumentos passados para um programa ou uma função.  <span id="more-607"></span>Estes são:</p>
<ul>
<li><strong>$0</strong> – Retorna o nome do script que foi executado</li>
<li><strong>$N</strong> – Onde N é um número, corresponde ao argumento passado (1 = primeiro argumento, 2 = segundo argumento, 3 = terceiro argumento, etc)</li>
<li><strong>$*</strong> – Retorna todos os argumentos de uma vez.</li>
<li><strong>$#</strong> – Retorna a quantidade de argumentos passado para o script. (<em>argc</em>)</li>
</ul>
<p>Vejamos agora um shell-script exempo que faz uso de todos esses argumentos:</p>
<div id="highlighter_425191">
<div></div>
<div>
<div>
<table>
<tbody>
<tr>
<td><code>01</code></td>
<td><code>#!/bin/bash</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>02</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>03</code></td>
<td><code>if</code> <code>[ $</code><code># -lt 1 ]; then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>04</code></td>
<td><code>   </code><code>echo</code> <code>"Faltou utilizar pelo menos um argumento!"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>05</code></td>
<td><code>   </code><code>exit</code> <code>1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>06</code></td>
<td><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>07</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>08</code></td>
<td><code>echo</code> <code>"Numero de argumentos: $#"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>09</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>10</code></td>
<td><code>COUNT=0</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>11</code></td>
<td><code>for</code> <code>ARG </code><code>in</code> <code>$*; </code><code>do</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>12</code></td>
<td><code>   </code><code>COUNT=`</code><code>expr</code> <code>$COUNT + 1`</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>13</code></td>
<td><code>   </code><code>echo</code> <code>"Argumento $COUNT: $ARG"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>14</code></td>
<td><code>done</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>As linhas <em>3 a 6</em> verificam se a quantidade de argumentos (<em>$#</em>) é menor (<em>-lt – less than</em>) que 1. Ou seja, se o usuário não chamou o programa com nenhum argumento, ele imprime um erro e sai do programa com status 1.</p>
<p>A linha <em>8</em> mostra quantos argumentos foram utilizados, usando novamente o <em>$#</em>.</p>
<p>O resto das linhas, <em>10 a 14</em>, usam o <em>$*</em> com um laço <em>for</em> e um contador para mostrar quais foram os argumentos.</p>
<p>Executando agora este script sem argumentos:</p>
<pre>$ ./tmp.sh
Faltou utilizar pelo menos um argumento!</pre>
<p>Agora executando com dois argumentos:</p>
<pre>$ ./tmp.sh naosei testando
Numero de argumentos: 2
Argumento 1: naosei
Argumento 2: testando</pre>
<p>E agora com 4 argumentos:</p>
<pre>$ ./tmp.sh a b c d
Numero de argumentos: 4
Argumento 1: a
Argumento 2: b
Argumento 3: c
Argumento 4: d</pre>
<p>Bem simples né?</p>
<h2>Argumentos como opções e seus valores</h2>
<p>Algo comum que vemos nos programas são opções. Opções não deixam de ser argumentos para um programa, mas eles tem um significado especial. Do tipo: Se a opção <em>-d</em> existir, ativar durante o programa o modo de depuração. Se houver um <em>-h</em>, então mostre uma ajuda e não faça mais nada. Se houver um <em>-v</em> mostre a versão, e por aí vai.</p>
<p>Exemplo:</p>
<div id="highlighter_661011">
<div></div>
<div>
<div>
<table>
<tbody>
<tr>
<td><code>01</code></td>
<td><code>#!/bin/bash</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>02</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>03</code></td>
<td><code>case</code> <code>$1 </code><code>in</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>04</code></td>
<td><code>   </code><code>"-h"</code><code>) </code><code>echo</code> <code>"Isto seria uma ajuda... Mas fiquei com preguiça de escrevela."</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>05</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>06</code></td>
<td><code>   </code><code>"-v"</code><code>) </code><code>echo</code> <code>"Versao 666."</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>07</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>08</code></td>
<td><code>   </code><code>*) </code><code>echo</code> <code>"Opcao invalida!"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>09</code></td>
<td><code>      </code><code>exit</code> <code>1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>10</code></td>
<td><code>      </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>11</code></td>
<td><code>esac</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Exemplos do uso do script:</p>
<pre>$ ./tmp.sh -h
Isto seria uma ajuda... Mas fiquei com preguiça de escrevela.

$ ./tmp.sh -v
Versao 666.

$ ./tmp.sh -O
Opcao invalida!

$ ./tmp.sh
Opcao invalida!</pre>
<p>Com isso a gente resolve um problema e cria mais outros dois…</p>
<ul>
<li>E se o usuário colocar as duas opções? Só uma funcionaria.</li>
<li>E se uma das opções precisasse de um valor? Estilo “<em>-f arquivo.log</em>” gravaria um arquivo de log com as operações.</li>
</ul>
<p>Poderíamos escrever vários algoritmos que verificassem cada um de todos os argumentos, testasse se fosse um ou outro, utilizasse as opções… Mas felizmente não precisamos fazer nada disso! O bash conta com uma função <em>interna</em> que trata os argumentos: o famoso <strong>getopts</strong>.</p>
<h2>Utilizando o getopts para tratar tratar argumentos e opções</h2>
<p>Seguindo a mesma linha de raciocínio, vamos logo para um exemplo de programa. Supondo que queiramos um shell-script que faça isso:</p>
<ul>
<li>Caso a opção <em>-h</em> seja usada, mostra a ajuda e sai do programa.</li>
<li>Caso a opção <em>-v</em> seja usada, mostra a versão e sai do programa.</li>
<li>Caso a opção <em>-o</em> &lt;arquivo&gt; seja usada, grava um arquivo de log com as operações efetuadas e resultados.</li>
<li>Caso a opção <em>-u</em> seja usada, mostra o resultado do comando “uname -a”</li>
<li>Caso a opção <em>-m</em> seja usada, mostra o resultado do comando “free -m”</li>
<li>Caso a opção <em>-s</em> seja usada, mostra o resultado do comando “swap -s”</li>
</ul>
<p>Note que apenas as opções <em>-h</em> e <em>-v</em> saem do programa após a execução. Agora vamos ao código:</p>
<div id="highlighter_591304">
<div></div>
<div>
<div>
<table>
<tbody>
<tr>
<td><code>01</code></td>
<td><code>#!/bin/bash</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>02</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>03</code></td>
<td><code>function</code> <code>PrintUsage() {</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>04</code></td>
<td><code>   </code><code>echo</code> <code>"Uso: `basename $0` &lt;-umsf&gt; [-ohv]"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>05</code></td>
<td><code>   </code><code>exit</code> <code>1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>06</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>07</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>08</code></td>
<td><code>while</code> <code>getopts</code> <code>"hvo:umsf"</code> <code>OPTION</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>09</code></td>
<td><code>do</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>10</code></td>
<td><code>   </code><code>case</code> <code>$OPTION </code><code>in</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>11</code></td>
<td><code>      </code><code>h) PrintUsage</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>12</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>13</code></td>
<td><code>      </code><code>v</code><code>) </code><code>echo</code> <code>"`basename $0` versao 666."</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>14</code></td>
<td><code>         </code><code>exit</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>15</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>16</code></td>
<td><code>      </code><code>o) ARQUIVO_LOG=$OPTARG</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>17</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>18</code></td>
<td><code>      </code><code>u) DO_UNAME=1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>19</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>20</code></td>
<td><code>      </code><code>m) DO_FREE=1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>21</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>22</code></td>
<td><code>      </code><code>s) DO_SWAPON=1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>23</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>24</code></td>
<td><code>      </code><code>?) PrintUsage</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>25</code></td>
<td><code>         </code><code>;;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>26</code></td>
<td><code>   </code><code>esac</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>27</code></td>
<td><code>done</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>28</code></td>
<td><code>shift</code> <code>$((OPTIND-1))</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>29</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>30</code></td>
<td><code>if</code> <code>[ -z </code><code>"$DO_UNAME"</code> <code>] &amp;&amp; [ -z </code><code>"$DO_FREE"</code> <code>] &amp;&amp; [ -z </code><code>"$DO_SWAPON"</code> <code>] &amp;&amp; [ -z </code><code>"$DO_FDISK"</code> <code>]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>31</code></td>
<td><code>   </code><code>PrintUsage</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>32</code></td>
<td><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>33</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>34</code></td>
<td><code>if</code> <code>[ </code><code>"$ARQUIVO_LOG"</code> <code>]; </code><code>then</code>   <code>echo</code> <code>"Execucao iniciada em `date`."</code> <code>&gt;&gt; $ARQUIVO_LOG</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>35</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>36</code></td>
<td><code>   </code><code>if</code> <code>[ </code><code>"$DO_UNAME"</code> <code>== 1 ]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>37</code></td>
<td><code>      </code><code>uname</code> <code>-a &gt;&gt; $ARQUIVO_LOG</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>38</code></td>
<td><code>   </code><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>39</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>40</code></td>
<td><code>   </code><code>if</code> <code>[ </code><code>"$DO_FREE"</code> <code>== 1 ]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>41</code></td>
<td><code>      </code><code>free</code> <code>-m &gt;&gt; $ARQUIVO_LOG</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>42</code></td>
<td><code>   </code><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>43</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>44</code></td>
<td><code>   </code><code>if</code> <code>[ </code><code>"$DO_SWAPON"</code> <code>== 1 ]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>45</code></td>
<td><code>      </code><code>swapon -s &gt;&gt; $ARQUIVO_LOG</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>46</code></td>
<td><code>   </code><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>47</code></td>
<td><code>else</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>48</code></td>
<td><code>   </code><code>echo</code> <code>"Execucao iniciada em `date`."</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>49</code></td>
<td><code>   </code><code>if</code> <code>[ </code><code>"$DO_UNAME"</code> <code>== 1 ]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>50</code></td>
<td><code>      </code><code>uname</code> <code>-a</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>51</code></td>
<td><code>   </code><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>52</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>53</code></td>
<td><code>   </code><code>if</code> <code>[ </code><code>"$DO_FREE"</code> <code>== 1 ]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>54</code></td>
<td><code>      </code><code>free</code> <code>-m</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>55</code></td>
<td><code>   </code><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>56</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>57</code></td>
<td><code>   </code><code>if</code> <code>[ </code><code>"$DO_SWAPON"</code> <code>== 1 ]; </code><code>then</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>58</code></td>
<td><code>      </code><code>swapon -s</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>59</code></td>
<td><code>   </code><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>60</code></td>
<td><code>fi</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>O interessante para nós são as linhas <em>8</em> a <em>28</em>. O laço <em>while getopts</em> começa a tratar todos os argumentos. A cada iteração do laço, ele coloca a letra da opção na variável <em><strong>$OPTION</strong></em>.</p>
<p>Note que para cada opção que precisamos, colocamos uma letra no primeiro argumento do getopts:</p>
<pre>while getopts "hvo:umsf" OPTION</pre>
<p>Note também que depois da letra o temos um dois pontos (<em>:</em>). Esse dois pontos significa que logo após a opção -o, o usuário precisa fornecer um valor. Este valor é automaticamente armazenado na variável <em><strong>$OPTARG</strong></em>.</p>
<p>Dessa maneira, podemos executar esse programa de diversas formas:</p>
<pre>./tmp.sh -o arquivo.log -u
(executa o "uname -a" e grava no arquivo arquivo.log)

./tmp.sh -um
(executa os comandos "uname -a" e "free -m")

./tmp.sh -m -s -u
(executa os comandos "free -m", "swapon -s" e "uname -a")</pre>
<p>Ou seja, não importa a ordem, o getopts vai reconhecer e executar as ações de acordo com a opção especificada.</p>
<p>E se você colocar uma opção que não está contemplatada… O “?” do case irá ser executado, por exemplo:</p>
<pre>$ ./tmp.sh -a
./tmp.sh: illegal option -- a
Uso: tmp.sh &lt;-umsf&gt; [-ohv]</pre>
<p>E dessa forma fica bem fácil de entender e usar o getopts <img src='http://blog.deserv.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Depois que o laço é todo feito e executado em todos os argumentos (no meu caso, preferi apenas configurar variáveis para cada opção e tratá-las depois), ele executa o comando que está na linha 28:</p>
<pre>shift $((OPTIND-1))</pre>
<p>Este comando faz com que os <strong>argumentos de opções</strong> sejam “<em>comidos</em>“, até que não sobre nenhuma opção. Em outras palavras, os argumentos representados pelas variáveis <strong><em>$N</em></strong> só serão aqueles que não pertençam a nenhuma opção. Exemplo:</p>
<pre>./tmp.sh -u -o arquivo.log -m argumento1 argumento2</pre>
<p>Nesse caso, o $1 seria o argumento1 e o $2 seria o argumento2, quando na verdade, sem o shift, eles seriam respectivamente o $5 e $6.</p>
<p>Como nem tudo é perfeito, a função getopts do bash <strong>não aceita opções longas</strong> (<em>–nome-da-opcao</em>), ou seja, voce só pode utilizar uma letra como opção. Represente bem suas opções com as letras! <img src='http://blog.deserv.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Argumentos dentro de funções</h2>
<p>Se dentro de um shell-script temos uma função, essa função é enxergada pela shell como se fosse um comando. Nesse sentido, dentro de uma função as variáveis $N definidas pelo programa <strong>não funcionarão</strong>. Exemplo:</p>
<div id="highlighter_432454">
<div></div>
<div>
<div>
<table>
<tbody>
<tr>
<td><code>01</code></td>
<td><code>#!/bin/bash</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>02</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>03</code></td>
<td><code>function</code> <code>Dummy() {</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>04</code></td>
<td><code>   </code><code>echo</code> <code>"Numero de argumentos: $#"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>05</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>06</code></td>
<td><code>   </code><code>COUNT=0</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>07</code></td>
<td><code>   </code><code>for</code> <code>ARG </code><code>in</code> <code>$*; </code><code>do</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>08</code></td>
<td><code>      </code><code>COUNT=`</code><code>expr</code> <code>$COUNT + 1`</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>09</code></td>
<td><code>      </code><code>echo</code> <code>"Argumento $COUNT: $ARG"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>10</code></td>
<td><code>   </code><code>done</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>11</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>12</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>13</code></td>
<td><code>Dummy</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Não importa o que você executar com o script acima, a saída será sempre a mesma: 0 números de argumentos, como mostrado a seguir.</p>
<pre>$ ./tmp.sh
Numero de argumentos: 0

$ ./tmp.sh naosei temporario
Numero de argumentos: 0

$ ./tmp.sh a b c d e f g
Numero de argumentos: 0</pre>
<p>Para a função <strong><em>Dummy</em></strong>, as variáveis especiais dos argumentos <strong>funcionam apenas para a função</strong> e não para o programa inteiro. É como se as variáveis fossem <em>locais</em>, e não <em>globais</em>. Vamos então substituir a linha da chamada da função <em>Dummy (linha 13)</em> por:</p>
<pre>Dummy a b c d</pre>
<p>E tentar executar novamente:</p>
<pre>$ ./tmp.sh
Numero de argumentos: 4
Argumento 1: a
Argumento 2: b
Argumento 3: c
Argumento 4: d</pre>
<p>Sabendo disso, não se percam na hora de usar os argumentos dentro das funções e lembrem-se que isto pode ser útil na hora de implementar diversas funções dentro de um script. Um bom exemplo disso é implementar a função PrintUsage que usamos anteriormente para, além de mostrar uma mensagem de uso, mostrar também uma mensagem de erro personalizada:</p>
<div id="highlighter_265612">
<div></div>
<div>
<div>
<table>
<tbody>
<tr>
<td><code>1</code></td>
<td><code>function</code> <code>PrintUsage() {</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>2</code></td>
<td><code>   </code><code>[ </code><code>"$1"</code> <code>] &amp;&amp; </code><code>echo</code> <code>-</code><code>ne</code> <code>"Erro: $1\n"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>3</code></td>
<td><code>   </code><code>echo</code> <code>"Uso: $(basename $0)  &lt;-umsf&gt; [-ohv]"</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>4</code></td>
<td><code>   </code><code>exit</code> <code>1</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>5</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Agora é so chamar a função como…</p>
<pre>PrintUsage "Faltando parâmetros."
PrintUsage "Opção inválida."
PrintUsage "No donut for you."</pre>
<p>Use a criatividade de um programador (afinal, programação é arte) e comece a aprimorar suas ferramentas bash! <img src='http://blog.deserv.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>Fonte: www.prefirolinux.com.br</td>
</tr>
</tbody>
</table>

<p>Nenhum Post Relacionado.</p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/11/01/shell-script-tratamento-de-argumentos-e-opcoes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sistema de autenticação de usuários em PHP usando sessões e MySQL</title>
		<link>http://blog.deserv.info/2011/10/25/sistema-de-autenticacao-de-usuarios-em-php-usando-sessoes-e-mysql/</link>
		<comments>http://blog.deserv.info/2011/10/25/sistema-de-autenticacao-de-usuarios-em-php-usando-sessoes-e-mysql/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 13:57:52 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linguagem de Programação]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[SGBD]]></category>
		<category><![CDATA[conexão banco de dados]]></category>
		<category><![CDATA[formulário]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[md5]]></category>
		<category><![CDATA[permissões]]></category>
		<category><![CDATA[tabelas mysql]]></category>
		<category><![CDATA[usuários]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=605</guid>
		<description><![CDATA[Esse artigo é um passo-a-passo da criação de um simples sistema de autenticação de usuários usando banco de dados MySQL e principalmente, as poderosas sessões do PHP. Mostro também como trabalhar com senhas em MD5 e permissões para os usuários. &#160; Esse artigo é um passo-a-passo da criação de um simples sistema de autenticação de usuários usando [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/05/24/resolvendo-os-problemas-do-tamanho-do-ibdata1-no-mysql/' rel='bookmark' title='Resolvendo os problemas do tamanho do ibdata1 no MySQL'>Resolvendo os problemas do tamanho do ibdata1 no MySQL</a> <small>Um problema que enfrentava sempre que colocava um aplicativo utilizando...</small></li>
<li><a href='http://blog.deserv.info/2011/09/02/vulnerabilidades-no-phpmyadmin/' rel='bookmark' title='Vulnerabilidades no PhpMyAdmin'>Vulnerabilidades no PhpMyAdmin</a> <small>Várias vulnerabilidades foram reportadas no phpMyAdmin, de acordo com a...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<h2>Esse artigo é um passo-a-passo da criação de um simples sistema de autenticação de usuários usando banco de dados MySQL e principalmente, as poderosas sessões do PHP. Mostro também como trabalhar com senhas em MD5 e permissões para os usuários.</h2>
<p><span id="more-605"></span></p>
<p>&nbsp;</p>
<p>Esse artigo é um passo-a-passo da criação de um <strong>simples</strong> sistema de autenticação de usuários usando banco de dados MySQL e principalmente, as poderosas sessões do PHP. Mostro também como trabalhar com senhas em MD5 e permissões para os usuários.</p>
<p>&nbsp;</p>
<p>Através desse artigo, espero que você consiga tirar todas suas dúvidas sobre como deve ser um sistema de autenticação. Esse artigo mostra a principal base, o qual você poderá facilmente adaptar às suas necessidades.</p>
<p>As senhas serão criptografadas em hash MD5, aumentando o nível de segurança.</p>
<p>Vou usar como exemplo um sistema de notícias, onde as notícias serão visíveis apenas para usuários registrados. Usuários registrados também poderão enviar novas notícias.</p>
<p>Tópicos:</p>
<p>&nbsp;</p>
<ul>
<li>1 &#8211; Tabelas no MySQL</li>
<li>2 &#8211; Conexão com o banco de dados</li>
<li>3 &#8211; Criando o formulário e script de Login</li>
<li>4 &#8211; Verificando se usuário está logado no sistema</li>
<li>5 &#8211; O script de notícias</li>
</ul>
<p>&nbsp;</p>
<p>6 &#8211; Sistema em funcionamento</p>
<p>&nbsp;</p>
<p>1 &#8211; Tabelas no MySQL<br />
Primeiro vamos criar as tabelas no MySQL do nosso sistema de notícias.<br />
As tabelas se chamarão <strong>aut_noticias</strong> e <strong>aut_usuarios</strong>, referentes às Notícias e Usuários respectivamente.</p>
<p>Código SQL das tabelas:<br />
<img src="http://www.linhadecodigo.com.br/artigos/img_artigos/alfred_baudisch/01_tabelas_mysql.gif" alt="" border="0" /></p>
<p>O campo &#8220;postar&#8221; da tabela &#8220;<strong>aut_usuarios</strong>&#8221; registra a permissão do usuário se ele poderá postar (valor S) ou não (valor N) novas notícias.</p>
<p>Agora, vamos inserir alguns dados na tabela, para que o exemplo do artigo funcione. Aqui irei dar tudo pronto, mas no seu caso, em seu sistema, você deverá criar uma seção para adicionar usuários, notícias, etc.. Mas, isso fica fora do escopo desse artigo.</p>
<p>Usuários:<br />
<img src="http://www.linhadecodigo.com.br/artigos/img_artigos/alfred_baudisch/02_dados_usuarios.gif" alt="" border="0" /></p>
<p>Notícias:<br />
<img src="http://www.linhadecodigo.com.br/artigos/img_artigos/alfred_baudisch/03_dados_noticias.gif" alt="" border="0" /></p>
<p>Perceba as senhas criptogradas em <strong>MD5</strong>, para isso, use a função <em>md5(&#8220;senha_aqui&#8221;)</em> e então salve o valor gerado no banco de dados, no caso, as senhas são <em>senha123</em> e <em>teste</em>respectivamente. Eu usei o código abaixo para saber o MD5 para salvar no banco de dados:</p>
<p>&nbsp;</p>
<blockquote>
<pre>&lt;?php
echo md5("senha123");
echo "&lt;br&gt;";
echo md5("teste");
?&gt;</pre>
</blockquote>
<pre></pre>
<pre><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">Veja também que a hora na tabela de notícias está em apenas um valor numérico. Para isso, usei a função <em>time()</em> do PHP. Para você saber qual é essa data e hora, use a função <em>date()</em>. Isso será mostrado adiante.</span></pre>
<p>&nbsp;</p>
<p>2 &#8211; Conexão com o banco de dados<br />
Vamos agora criar o arquivo &#8220;<strong>comum.php</strong>&#8221; onde existirá a conexão de banco de dados, usado em todas as páginas.</p>
<p>&nbsp;</p>
<blockquote>
<pre> &lt;?php
// Conecta-se com o MySQL
mysql_connect("localhost", "root", "root"); 

// Seleciona banco de dados
mysql_select_db("noticias");
 ?&gt;</pre>
</blockquote>
<p>&nbsp;</p>
<p>3 &#8211; Criando o formulário e script de Login<br />
Página com o formulário onde o usuário digitará o login e senha:<br />
<img src="http://www.linhadecodigo.com.br/artigos/img_artigos/alfred_baudisch/04_form_login.gif" alt="" border="0" /></p>
<p>Agora, vamos criar a página &#8220;<strong>login_vai.php</strong>&#8220;, o qual recebe os dados do formulário &#8220;login.html&#8221; e efetua o login do usuário.</p>
<p>&nbsp;</p>
<blockquote>
<pre> &lt;?php
// Conexão com o banco de dados
require "comum.php"; 

// Inicia sessões
session_start(); 

// Recupera o login
$login = isset($_POST["login"]) ? addslashes(trim($_POST["login"])) : FALSE;
// Recupera a senha, a criptografando em MD5
$senha = isset($_POST["senha"]) ? md5(trim($_POST["senha"])) : FALSE; 

// Usuário não forneceu a senha ou o login
if(!$login || !$senha)
{
    echo "Você deve digitar sua senha e login!";
    exit;
} 

/**
* Executa a consulta no banco de dados.
* Caso o número de linhas retornadas seja 1 o login é válido,
* caso 0, inválido.
*/
$SQL = "SELECT id, nome, login, senha, postar
        FROM aut_usuarios
        WHERE login = "" . $login . """;
$result_id = @mysql_query($SQL) or die("Erro no banco de dados!");
$total = @mysql_num_rows($result_id); 

// Caso o usuário tenha digitado um login válido o número de linhas será 1..
if($total)
{
    // Obtém os dados do usuário, para poder verificar a senha e passar os demais dados para a sessão
    $dados = @mysql_fetch_array($result_id); 

    // Agora verifica a senha
    if(!strcmp($senha, $dados["senha"]))
    {
        // TUDO OK! Agora, passa os dados para a sessão e redireciona o usuário
        $_SESSION["id_usuario"]   = $dados["id"];
        $_SESSION["nome_usuario"] = stripslashes($dados["nome"]);
        $_SESSION["permissao"]    = $dados["postar"];
        header("Location: index.php");
        exit;
    }
    // Senha inválida
    else
    {
        echo "Senha inválida!";
        exit;
    }
}
// Login inválido
else
{
    echo "O login fornecido por você é inexistente!";
    exit;
}
?&gt;</pre>
</blockquote>
<p>&nbsp;</p>
<p>Veja o uso da função <strong>strcmp</strong> na comparação das senhas. Ela está comparando as duas senhas já criptografadas em hash MD5. Lembrando que a função strcmp retorna ZERO caso 2 strings sejam iguais, por isso o uso do operador NOT (!) na frente da mesma.</p>
<p>&nbsp;</p>
<p>4 &#8211; Verificando se usuário está logado no sistema<br />
Agora, o script &#8220;<strong>verifica.php</strong>&#8221; que verifica a sessão do usuário se ele está logado ou não. Caso não esteja logado, o redireciona para a página de login.</p>
<p>&nbsp;</p>
<blockquote>
<pre> &lt;?php
// Inicia sessões
session_start(); 

// Verifica se existe os dados da sessão de login
if(!isset($_SESSION["id_usuario"]) || !isset($_SESSION["nome_usuario"]))
{
    // Usuário não logado! Redireciona para a página de login
    header("Location: login.html");
    exit;
}
?&gt;</pre>
</blockquote>
<p>&nbsp;</p>
<p>Em todo script em que você usar sessões, é obrigatório que você inicie as mesmas, chamando a função <strong>session_start()</strong> no começo dos scripts.</p>
<p>Para as páginas que você quer deixar como restritas, simplesmente inclua o arquivo &#8220;<strong>verifica.php</strong>&#8220;.</p>
<p>&nbsp;</p>
<p>5 &#8211; O script de notícias<br />
Enfim! Chegamos ao principal desse artigo! O script de notícias, onde tudo o que foi criado acima será usado aqui. Esse arquivo é o &#8220;<strong>index.php</strong>&#8220;.</p>
<p>&nbsp;</p>
<blockquote>
<pre> &lt;?php
// Verificador de sessão
require "verifica.php"; 

// Conexão com o banco de dados
require "comum.php"; 

// Imprime mensagem de boas vindas
echo "&lt;font face=\"Verdana\" size=2&gt;Bem-Vindo " . $_SESSION["nome_usuario"] . "!&lt;BR&gt;\n"; 

// Verifica e imprime quantidade de notícias no nome do usuário
$SQL = "SELECT id
        FROM aut_noticias
        WHERE autor_id = " . $_SESSION["id_usuario"];
$result_id = mysql_query($SQL) or die(mysql_error());
$total = mysql_num_rows($result_id); 

if($total)
{
    echo "Há um total de " . $total . " notícia(s) de sua autoria!\n";
}
else
{
    echo "Não há nenhuma notícia de sua autoria!\n";
} 

/**
* Verifica se usuário tem permissão para postar novas notícias.
* Caso positivo, imprime link para postagem de notícias
*/
if($_SESSION["permissao"] == "S")
{
    echo " | &lt;a href=\"nova.php\"&gt;Postar nova notícia&lt;/a&gt;\n";
} 

// Imprime link de logout
echo " | &lt;a href=\"sair.php\"&gt;Sair do Sistema&lt;/a&gt;"; 

echo "&lt;br&gt;&lt;br&gt;\n"; 

/**
* Imprime as notícias
*/
$SQL = "SELECT id, titulo, data
        FROM aut_noticias
        ORDER BY data DESC";
$result_id = mysql_query($SQL) or die(mysql_error());
$total = mysql_num_rows($result_id); 

if($total)
{
    // Abre tabela HTML
    echo "&lt;table border=1 cellpadding=3 cellspacing=0&gt;\n";
    echo "&lt;tr&gt;&lt;th&gt;Id&lt;/th&gt;&lt;th&gt;Título&lt;/th&gt;&lt;th&gt;Data&lt;/th&gt;&lt;/tr&gt;\n"; 

    // Efetua o loop no banco de dados
    while($dados = mysql_fetch_array($result_id))
    {
        echo "&lt;tr&gt;&lt;td&gt;" . $dados["id"] . "&lt;/td&gt;&lt;td&gt;";
 echo " &lt;ahref=\"ver_noticia.php?id=" . $dados["id"] . "\"&gt;" . stripslashes($dados["titulo"]) . ";
 echo "&lt;/a&gt;&lt;/td&gt;";
        echo "&lt;td&gt;" . date("d/m/Y à\s H:i:s", $dados["data"]) . "&lt;/td&gt;&lt;/tr&gt;\n";
    } 

    // Fecha tabela
    echo "&lt;/table&gt;\n";
}
else
{
    echo "&lt;B&gt;Nenhuma notícia cadastrada!&lt;/B&gt;\n";
}
?&gt;</pre>
</blockquote>
<p>&nbsp;</p>
<p>O script de notícias verifica se usuário tem permissão para postar novas notícias, caso sim, imprime o link para a postagem. O arquivo para postar novas não será explicado aqui, pois fica fora do escopo desse artigo, mas, um exemplo de como deve ser feito:</p>
<p>&nbsp;</p>
<blockquote>
<pre> &lt;?php
// Verificador de sessão
require "verifica.php"; 

// Verifica se usuário tem permissão para postar notícia
if($_SESSION["permissao"] !== "S")
{
    echo "Você não tem permissão para postar notícias!";
    exit;
} 

// Se o script continuar aqui, é que o usuário tem permissão
// Então.. seu formulário de postagem abaixo
?&gt;</pre>
</blockquote>
<p>&nbsp;</p>
<p>É sempre recomendável que você coloque um link para que o usuário encerre a sessão de login atual (sessões são encerradas com a função <strong>session_destroy()</strong>), caso ele não queira mais permanecer na página. No nosso exemplo, a página é a &#8220;<strong>sair.php</strong>&#8220;:</p>
<p>&nbsp;</p>
<blockquote>
<pre> &lt;?php
// Inicia sessões, para assim poder destruí-las
session_start();
session_destroy(); 

header("Location: login.html");
?&gt;</pre>
</blockquote>
<p>&nbsp;</p>
<p>6 &#8211; Sistema em funcionamento<br />
Agora é hora de testar tudo! Primeiro, logue-se com o login &#8220;einstein&#8221; e senha &#8220;senha123&#8243;. Esse usuário tem permissão para postar novas notícias e tem 2 notícias postadas.<br />
<img src="http://www.linhadecodigo.com.br/artigos/img_artigos/alfred_baudisch/05_login.gif" alt="" border="0" /></p>
<p><img src="http://www.linhadecodigo.com.br/artigos/img_artigos/alfred_baudisch/06_einstein.gif" alt="" border="0" /></p>
<p>Agora, clique em &#8220;<em>Sair do Sistema</em>&#8221; e logue-se com o login &#8220;admin&#8221; e senha &#8220;teste&#8221;. O usuário não tem permissão para escrita e tem apenas uma notícia postada (por exemplo, como ele não tem permissão para escrita, então deve ter sido um administrador postado a notícia com o nome desse usuário).</p>
<p><img src="http://www.linhadecodigo.com.br/artigos/img_artigos/alfred_baudisch/07_admin.gif" alt="" border="0" /></p>
<p>&nbsp;</p>
<p><a href="http://www.linhadecodigo.com.br/artigos/downloads/alfred_baudisch/sistema_autenticacao.zip" rel="nofollow" target="_blank">Clique aqui para fazer o download dos códigos desse artigo.</a></p>
<p>E é isso! Até o próximo!<br />
Alfred Reinold Baudisch<br />
<a href="mailto:alfred@auriumsoft.com.br" rel="nofollow" target="_blank">alfred@auriumsoft.com.br</a><br />
<a href="http://www.auriumsoft.com.br/" rel="nofollow" target="_blank">www.auriumsoft.com.br</a></p>
<p><span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span class="Apple-style-span" style="font-size: 11px; line-height: normal;">Fonte: <a href="http://www.linhadecodigo.com.br/" target="_blank">http://www.linhadecodigo.com.br</a></span></span></p>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/05/24/resolvendo-os-problemas-do-tamanho-do-ibdata1-no-mysql/' rel='bookmark' title='Resolvendo os problemas do tamanho do ibdata1 no MySQL'>Resolvendo os problemas do tamanho do ibdata1 no MySQL</a> <small>Um problema que enfrentava sempre que colocava um aplicativo utilizando...</small></li>
<li><a href='http://blog.deserv.info/2011/09/02/vulnerabilidades-no-phpmyadmin/' rel='bookmark' title='Vulnerabilidades no PhpMyAdmin'>Vulnerabilidades no PhpMyAdmin</a> <small>Várias vulnerabilidades foram reportadas no phpMyAdmin, de acordo com a...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/10/25/sistema-de-autenticacao-de-usuarios-em-php-usando-sessoes-e-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Promoção: Notebook Dell por R$ 1.699,00</title>
		<link>http://blog.deserv.info/2011/10/21/promocao-notebook-dell-por-r-1-69900/</link>
		<comments>http://blog.deserv.info/2011/10/21/promocao-notebook-dell-por-r-1-69900/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 22:17:51 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[i3]]></category>
		<category><![CDATA[i5]]></category>
		<category><![CDATA[i7]]></category>
		<category><![CDATA[notebook]]></category>
		<category><![CDATA[vostro]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=600</guid>
		<description><![CDATA[Nenhum Post Relacionado. Artigos parecidos fornecidos por Yet Another Related Posts Plugin.
Nenhum Post Relacionado.

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<p><a href="http://links.lomadee.com/ls/S3RTaTswUVo1VEttSDsyMzUwODU5NTswOzE3NjszMzQ5OTY5MDswO0JSOzM7.html" target="_blank"><img class="aligncenter size-full wp-image-602" title="promocao-dell" src="http://blog.deserv.info/wp-content/uploads/2011/10/promocao-dell1.jpg" alt="" width="756" height="561" /></a></p>

<p>Nenhum Post Relacionado.</p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/10/21/promocao-notebook-dell-por-r-1-69900/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presente para os leitores: baixe de graça o livro ‘Segredos do iOS 5′</title>
		<link>http://blog.deserv.info/2011/10/21/presente-para-os-leitores-baixe-de-graca-o-livro-%e2%80%98segredos-do-ios-5%e2%80%b2/</link>
		<comments>http://blog.deserv.info/2011/10/21/presente-para-os-leitores-baixe-de-graca-o-livro-%e2%80%98segredos-do-ios-5%e2%80%b2/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 21:35:21 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[blogdoiphone]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ios5]]></category>
		<category><![CDATA[iphad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=596</guid>
		<description><![CDATA[&#160; Todos felizes e contentes que receberam finalmente o tão esperado presente da Apple, não é? Mas depois de ter instalado o iOS 5, fica a pergunta: E agora? São tantas novidades que ficamos confusos em saber por onde começar. O que mudou? O que eu posso aproveitar já? É por isso que resolvemos fazer [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/10/12/saiba-como-obter-o-ios-5-em-seu-dispositivo/' rel='bookmark' title='Saiba como obter o iOS 5 em seu dispositivo'>Saiba como obter o iOS 5 em seu dispositivo</a> <small>São Paulo – O novo sistema operacional móvel da Apple,...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<div>
<div id="sidebar">
<div>
<p><img class="aligncenter" title="eBook Segredos do iOS 5" src="http://blogdoiphone.com/wp-content/uploads/2011/10/segredosiOS5.jpg" alt="" width="600" height="453" /></p>
<p>&nbsp;</p>
<p>Todos felizes e contentes que receberam finalmente o tão esperado presente da Apple, não é? Mas depois de ter instalado o iOS 5, fica a pergunta: E agora?</p>
<p>São tantas novidades que ficamos confusos em saber por onde começar. O que mudou? O que eu posso aproveitar já?</p>
<p>É por isso que resolvemos fazer um presente especial para todos os nossos leitores: criamos o eBook<strong>Segredos do iOS 5</strong>, com uma coletânea das melhores dicas de novas funções introduzidas no novo sistema. <img src="http://blogdoiphone.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" /></p>
<p style="text-align: center;"><strong><a href="http://blogdoiphone.com/2011/10/presente-para-os-leitores-baixe-de-graca-o-livro-segredos-do-ios-5/#more-35376" target="_blank">Ler mais e saiba como efetuar o download</a></strong></p>
</div>
</div>
</div>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/10/12/saiba-como-obter-o-ios-5-em-seu-dispositivo/' rel='bookmark' title='Saiba como obter o iOS 5 em seu dispositivo'>Saiba como obter o iOS 5 em seu dispositivo</a> <small>São Paulo – O novo sistema operacional móvel da Apple,...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/10/21/presente-para-os-leitores-baixe-de-graca-o-livro-%e2%80%98segredos-do-ios-5%e2%80%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saiba como obter o iOS 5 em seu dispositivo</title>
		<link>http://blog.deserv.info/2011/10/12/saiba-como-obter-o-ios-5-em-seu-dispositivo/</link>
		<comments>http://blog.deserv.info/2011/10/12/saiba-como-obter-o-ios-5-em-seu-dispositivo/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 17:05:19 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[iOS Apple iTunes iPhone iPad]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=590</guid>
		<description><![CDATA[São Paulo – O novo sistema operacional móvel da Apple, o iOS 5, chega hoje aos dispositivos da empresa. E embora a atualização ocorra automaticamente, ainda é necessário seguir alguns passos para instalá-lo. Inicialmente, para que seu dispositivo faça a sincronização correta com o iOS 5 é necessário baixar o novo iTunes 10.5, que foi [...]
Nenhum Post Relacionado.

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<div id="noticia-imagem"><img id="img-noticia" src="http://info.abril.com.br/aberto/infonews/fotos/iOS_5-20111012120754.jpg" alt="" /><span id="more-590"></span></div>
<p>São Paulo – O novo sistema operacional móvel da Apple, o iOS 5, chega hoje aos dispositivos da empresa. E embora a atualização ocorra automaticamente, ainda é necessário seguir alguns passos para instalá-lo.</p>
<p>Inicialmente, para que seu dispositivo faça a sincronização correta com o iOS 5 é necessário baixar o <strong><a href="http://macmagazine.com.br/2011/10/11/apple-libera-itunes-10-5-com-suporte-a-igadgets-rodando-o-ios-5/">novo iTunes 10.5</a></strong>, que foi liberado ontem pela Apple. Ele será o responsável por essa sincronização entre os aparelhos iPhone (3GS e 4), iPad e iPod Touch (3a e 4a geração) que forem atualizados para o iOS 5.</p>
<div>
<div id="entry-tags">
<div>
<h2>tags</h2>
<p>///</p></div>
<p><a title="iOS" href="http://info.abril.com.br/aberto/infonews/tags/ios1.shtml"><img src="http://ads.abril.com.br/RealMedia/ads/adstream_lx.ads/infoexame/plantao/959153922/Bottom/AbrilDefault/default/empty.gif/7956505a656b365679426f4142566e6a" alt="" width="1" height="1" border="0" /></a></div>
</div>
<p>Uma das principais características do novo iTunes é justamente o acesso às músicas, filmes e aplicativos entre múltiplos dispositivos por meio da sincronização via Wi-Fi e não mais sendo necessário a conexão dos aparelhos ao computador para copiar os conteúdos de um dispositivo para o outro.</p>
<p>Além disso, o iTunes 10.5 traz também o software iCloud, que fará esse backup dos conteúdos nas nuvens (até 5GB será gratuito) e os disponibilizará para até 5 dispositivos Apple do usuário.</p>
<p>Para baixar o iTunes 10.5 basta acessar o programa em seu computador e checar pelos updates dentro do Menu principal, ou então <strong><a href="http://www.apple.com/itunes/">acessar a página da Apple</a></strong>.</p>
<p>Após baixar o novo iTunes, o usuário estará apto a iniciar o download do iOS 5 através deste programa. Será necessário um pouco de paciência se escolher a atualização hoje, pois há possibilidade dos servidores da Apple ficarem sobrecarregados.</p>
<p>Quem optar por instalar o iOS 5 receberá novas ferramentas e funções como um centro de notificações, um programa de mensagens próprio entre aparelhos Apple (iMessage), uma melhor integração com o Twitter e a possibilidade de editar as imagens dentro do aplicativo de fotos.</p>
<p>&nbsp;</p>
<p>Fonte: http://info.abril.com.br/</p>

<p>Nenhum Post Relacionado.</p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/10/12/saiba-como-obter-o-ios-5-em-seu-dispositivo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como os ataques DDoS se tornou a ferramenta de linha de frente da ciber-guerra</title>
		<link>http://blog.deserv.info/2011/09/06/como-os-ataques-ddos-se-tornou-a-ferramenta-de-linha-de-frente-da-ciber-guerra/</link>
		<comments>http://blog.deserv.info/2011/09/06/como-os-ataques-ddos-se-tornou-a-ferramenta-de-linha-de-frente-da-ciber-guerra/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 20:42:26 +0000</pubDate>
		<dc:creator>Flávio  Silva</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Ataques]]></category>
		<category><![CDATA[Ataques DDoS]]></category>
		<category><![CDATA[DDos]]></category>
		<category><![CDATA[DoS]]></category>
		<category><![CDATA[Mitigação]]></category>
		<category><![CDATA[Prevenção]]></category>
		<category><![CDATA[Proteção]]></category>
		<category><![CDATA[segurança]]></category>

		<guid isPermaLink="false">http://blog.deserv.info/?p=584</guid>
		<description><![CDATA[O conceito de Distributed Denial of Service (DDoS), finalmente, entrou na consciência pública dominante neste mês após ataques a sites da Visa, MasterCard e PayPal foi notícia de primeira página. Embora estes incidentes particulares foram perfil extremamente alto, uma série de outros ataques DDoS que remonta a 1999, têm se espalharam pelo caminho que leva [...]
Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/09/06/ataques-ddos-prevencao-e-mitigacao/' rel='bookmark' title='Ataques DDoS: Prevenção e Mitigação'>Ataques DDoS: Prevenção e Mitigação</a> <small>O conceito de Distributed Denial of Service (DDoS) entrou na...</small></li>
</ol>

Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[
<div>
<p><a href="http://cdn.thenextweb.com/media/files/2010/12/2957936939_b6ee162c69.jpg"><img class="alignright" title="Imagem via Wylio.com" src="http://cdn.thenextweb.com/media/files/2010/12/2957936939_b6ee162c69-300x229.jpg" alt="" width="300" height="229" /></a> O conceito de Distributed Denial of Service (DDoS), finalmente, entrou na consciência pública dominante neste mês após ataques a sites da Visa, MasterCard e PayPal foi notícia de primeira página.</p>
<p>Embora estes incidentes particulares foram perfil extremamente alto, uma série de outros ataques DDoS que remonta a 1999, têm se espalharam pelo caminho que leva à Operação Avenge Assange.<span id="more-584"></span></p>
<h3>O início dos ataques DDoS</h3>
<p>O primeiro uso notável de um ataque DDoS abatido da Universidade de Minnesota computador por mais de dois dias, mas somente um ano depois, em 2000, foram definidos pontos turísticos mais elevados quando a Amazon, CNN, eBay e Yahoo foram todos atingidos no espaço de 24 horas, ou retardando os sites para baixo significativamente ou levá-los completamente offline. As perdas estimadas para a Amazon e Yahoo somaram aproximadamente US $ 1,1 milhões.</p>
<p>Entre 2001 e 2005, o uso de ataques DDoS silenciosamente cresceu com alguns ataques de destaque, principalmente em Register.com e mais uma vez no eBay, para que um único homem foi processado por causar danos de &#8220;pelo menos US $ 5000&#8243; mais de um ano. Os botnets início teve origem a Trin00 e Flood Network Tribe, dois dos primeiros programas de DDoS.</p>
<p>Os elementos seedier de ataques DDoS mostrou em torno deste tempo, pois a técnica começou a ser usado por criminosos organizados para chantagear e extorquir dinheiro de pequenas empresas por ameaça de ataque cibernético. A vulgaridade crescente desses crimes coincidiu com a formação do Reino Unido Unidade de Crime National Hi-Tech . Embora eles foram incumbidos de encontrar a hackers na raiz, a situação acabou por ser resolvido por servidores melhorou deixando cyber-criminosos incapazes de superar os servidores reforçada.</p>
<p>Apesar da capacidade para lidar com uma melhoria gradual de negação de serviço ataques, incidentes DDoS persistiu com escala crescente na segunda metade da década.</p>
<p>Já em 2006, tornou-se ferramentas de DDoS um grampo de arsenal de um hacker, mas os ataques ainda estavam tipicamente criado e coordenado por indivíduos e não en masse. Um destaque caso no Reino Unido um adolescente envolvido o envio de um ex-empregador cinco milhões e-mails para tirar seus servidores para baixo. O hacker foi absolvido no julgamento que se seguiu, mas o julgamento revelou falhas na década de 1990 Polícia e Bill Justiça, consequentemente alterada para proibir toda e qualquer ataque de negação de serviço.</p>
<h3>Um instrumento de guerra</h3>
<p><a href="http://cdn.thenextweb.com/media/files/2010/12/4703596121_162438fca4_b.jpg"><img class="alignright" title="Lars P via Flickr Creative Commons" src="http://cdn.thenextweb.com/media/files/2010/12/4703596121_162438fca4_b-300x200.jpg" alt="" width="300" height="200" /></a> Enquanto o Reino Unido parece estar a ganhar alguma estabilidade a respeito de ataques DDoS, 2007 trouxe consequências diplomáticas para a guerra on-line em sites nacionais como Estónia sofreu de ataques russos. Tensões iniciais, quando eclodiu o movimento proposto de um monumento de guerra soviético na capital estónia se transformou em distúrbios da população de etnia russa. Isso, então, se espalhou para o ciberespaço como os sites de vários escritórios do governo e cidades foram levados para baixo ou desfigurado por ativistas russos. O evento levou muitos funcionários europeus para avaliar os protocolos de ataques, como não havia precedentes na magnitude expostos.</p>
<p>Não, logo depois, a Rússia foi mais uma vez ligado a ataques DDoS em construir a sua guerra de cinco dias com a Geórgia. Relatos da época indicaram que várias georgiano, Azerbaijão e sites russos foram expulsos offline com reivindicações amarrar ataques particular a da inteligência russa e da Russian Business Network, uma organização criminosa acusada de ter sido também uma parte da ciber-ataques à Estónia. A intensidade dos ataques em 2008 contra a Estônia dwarfed aqueles como DDoS uso escalado para esse ponto em diante.</p>
<p>A disputada eleição iraniana de Julho de 2009 viu os protestos de rua refletida on-line em que muitos pró-Ahmadinejad sites foram derrubados em massa negação DIY das ferramentas de serviço. Ao invés de usar botnets automatizado, scripts PHP foram utilizados na multidão de origem ataques ao governo. Os dois incidentes DDoS com a Rússia ea eleição iraniana revelou que a negação, hacking particularmente para uso de ferramentas de serviço, tinha mudado de ganho pessoal ou abuso alvo, a declarações politicamente motivadas e ataques.</p>
<p>Este foi levado a extremos no ano passado, quando o Twitter, Facebook, LiveJournal e YouTube todos sofremos o tempo de inatividade, quando um blogueiro da Geórgia em &#8220;Cyxymu&#8221; o nome foi individualmente alvo . O blogueiro foi um crítico vocal da Ossétia do Sul 2008 A guerra entre a Rússia ea Geórgia, e afirmou que a KGB perpetrado o ataque para silenciá-lo. Embora o aspecto político do hacktivismo desempenhou um papel proeminente nos eventos que se desenrolaram, a preocupação cada vez mais preocupante foi a fraqueza dos principais locais de ataques DDoS.</p>
<h3>Grassroots payback</h3>
<p><a href="http://cdn.thenextweb.com/media/files/2010/12/2255718951_1503e288d9.jpg"><img class="alignright" title="Imagem via Flickr Creative Commons" src="http://cdn.thenextweb.com/media/files/2010/12/2255718951_1503e288d9-300x163.jpg" alt="" width="300" height="163" /></a> Apesar das medidas preventivas existentes desde a virada do milênio, muitos da vítima<br />
websites foram adequadamente protegidas contra ataques DDoS, algo feito muito óbvio na última metade deste ano como Anônimo começou sua cruzada contra o autor com Operation: Payback .</p>
<p>Ataques do grupo eram inicialmente montado como uma resposta para a empresa contratada MPAA, Aiplex<br />
Software, que usou DDoS ataques para derrubar o The Pirate Bay, em setembro. Retaliação por Anonymous foi rápida e organizada como a primeira semana derrubou tempo para Aiplex, a MPAA, RIAA, Indústria Fonográfica Britânica e ACS: Direito, o escritório de advocacia notório por agressivamente alvo pessoas que partilham ficheiros. O resultado mais significativo dos ataques em Aiplex e ACS foi o vazamento de dados confidenciais que desde então se espalhou através de torrents.</p>
<p>As ações de Anonymous como ativistas (particularmente contra a Cientologia) estão bem documentados, mas o foco entregues nos meses de processo superados cibernético organizado anteriores e protestos no mundo real. Outubro viu ataques DDoS ocorrem quase que diariamente na seara da Hustler.com, Ministry of Sound, o Escritório de Propriedade Intelectual do Reino Unido, os EUA Escritório de Direitos Autorais e sites Gene Simmons &#8220;, o último resultado de tomar uma postura agressiva de direitos autorais em um comunicado.</p>
<p>O perfil de alvos atingidos pela Operação: Payback começaram a cair aproximando de Novembro e uma falha de alta publicidade série de ataques a Noite de Guy Fawkes pareceu evaporar o ímpeto construído ao longo dos dois meses anteriores. The Quietus dos ataques, aparentemente, culminou com a partes dos EUA e do Reino Unido pirata pedindo um cessar-fogo DDoS no final de novembro, menos de duas semanas antes WikiLeaks sofreria seus próprios ataques em uma tentativa supostamente por um patriota dos EUA para deter o vazamento da Embaixada dos EUA cabos.</p>
<h3>WikiLeaks</h3>
<p><a href="http://cdn.thenextweb.com/media/files/2010/12/5260138953_50c6f303ea_b.jpg"><img class="alignright" title="Imagem via Flickr Creative Commons" src="http://cdn.thenextweb.com/media/files/2010/12/5260138953_50c6f303ea_b-300x221.jpg" alt="" width="300" height="221" /></a> As murmurações início da Operação Avenge Assange começou como WikiLeaks foi viral e os<br />
Site sueco Pirate Party foi atingida por ataques DDoS. John Perry Barlow, autora de &#8220;A Declaração de Independência do Ciberespaço&#8221; e membro fundador da Electronic Frontier Foundation (EFF), twittou no primeiro dia de ataques: &#8220;O primeiro infoguerra sério agora está engajada. O campo de batalha é WikiLeaks. Vocês são os soldados &#8220;.</p>
<p>Desde então, os ataques foram lançados pelos dois lados em alvos sensacionalistas como MasterCard e PayPal , bem como algumas indiretamente associados, incluindo Borgstrom e Bodström, os advogados que representam as mulheres Assange alegadamente assaltados, e PandaLabs, trackers de série do Anonymous &#8216;ataques.</p>
<p>O elemento chave compartilhada por todos os alvos de ataques DDoS, na última semana foi uma incapacidade de lidar com uma ameaça década de idade. No entanto, isso não tem a ver com a falta de preparação. O website Anon Ops foi retirado de repente, apesar de ter atualizado para o PandaLabs descrevem como um &#8220;servidor à prova de bala&#8221; projetado para resistir a ataques botnet.</p>
<p>O fato é que o grande número de hacktivistas em cada lado tem sobrecarregado os servidores, deixando a guerra on-line em um estado muito aberta. Embora a EFF condenou os ataques de ambos os lados, o 1000s que recorreram a essas táticas revelá-lo como uma forma eficaz, se legalmente duvidosa tomada, para o protesto.</p>
<p>Ataques DDoS podem ter começado como uma maneira de desligar os servidores de aborrecimento diversão, ou ganho, mas a chave<br />
eventos da última década têm permitido a ferramenta para transcender a mera invasão, fazendo-a tornar-se simultaneamente uma forma de protesto e uma arma de guerra. O fracasso do anônimo para derrubar Amazon (por <a href="http://translate.googleusercontent.com/translate_c?hl=pt-BR&amp;langpair=en%7Cpt&amp;rurl=translate.google.com.br&amp;twu=1&amp;u=http://thenextweb.com/media/2010/12/10/anonymous-attacking-amazon-would-be-in-bad-taste/&amp;usg=ALkJrhhOUcBi48afXEdzIAvO3R_RYrjq3A">qualquer falta de apoio ou força de servidor</a> ) mostra que o futuro de ataques DDoS fica apenas com o &#8220;hacktivistas&#8221; a si mesmos.</p>
<p>&nbsp;</p>
<p>Fonte: <a href="http://thenextweb.com" target="_blank"><strong>http://thenextweb.com</strong></a></p>
</div>

<p>Posts Relacionados:<ol>
<li><a href='http://blog.deserv.info/2011/09/06/ataques-ddos-prevencao-e-mitigacao/' rel='bookmark' title='Ataques DDoS: Prevenção e Mitigação'>Ataques DDoS: Prevenção e Mitigação</a> <small>O conceito de Distributed Denial of Service (DDoS) entrou na...</small></li>
</ol></p>
<p>Artigos parecidos fornecidos por <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.deserv.info/2011/09/06/como-os-ataques-ddos-se-tornou-a-ferramenta-de-linha-de-frente-da-ciber-guerra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

