tag:blogger.com,1999:blog-68138997066406175302024-03-14T10:38:44.118-03:00pvianaPedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comBlogger38125tag:blogger.com,1999:blog-6813899706640617530.post-17297794315280811202021-10-24T14:52:00.004-03:002021-10-24T16:15:49.260-03:00Lab com video, RTSP e Kubernetes<p>Algum tempo atrás comprei câmeras de segurança wifi da linha mibo da intelbras, escolhi esse modelo pela robustez do produto e praticidade de configuração. A primeira câmera foi uma IC3, posteriormente comprei algumas IC5. Havia lido no forum da intelbras que não era possível ligar essas câmeras em DVR/NVR.</p><p>Eu queria ter um histórico das imagens, não era mais suficiente ter apenas o vídeo ao vivo. Tive um problema que desencadeou em uma pesquisa e hoje é o principal motivo pelo qual escrevo esse post. Comprei cartões de memória ruins para as câmeras! </p><p>Seria necessário comprar cartões melhores. Foi então que comecei a pesquisar se não seria possível capturar as imagens das câmeras via RTSP. Fiz um shell script simples, usei FFMPEG e obtive o histórico de imagens esperado. Agora os problemas eram outros, meu recurso computacional era baixo. </p><p>Para encurtar, comigo haviam HDs externos e Raspberry pi. Concorda que montar um "DVR/NVR" próprio é mais caro que comprar cartões de memória decentes? Enfim, para montar o laboratório precisei ignorar isso por um período de tempo. </p><p>Comecei com shell script rodando solto no raspbian, mas logo otimizei migrando tudo para kubernetes, alias acabei montando um cluster. Algum tempo depois tive problemas com o HD que eu usava para armazenar as imagens e migrei para o AWS S3. Logo vieram mais problemas, preço do dolar me obrigou migrar do S3 para o Google Drive onde o pagamento é em real.</p><p>Quando comecei usar cloud storage parei de gerar arquivos muitos grandes, entendi que pedaços de 5 minutos eram o tamanho ideal para eu gravar localmente e na sequencia fazer upload para nuvem. Ficou interessado? </p><p>Se você tem uma câmera mibo iC3, iC5 ou iM5 e um cluster kubernetes, acessa o projeto no <a href="https://github.com/pedroav/mibo-k3s" target="_blank">github</a>. Complexidade de ver isso tudo funcionando é você configurar algumas variáveis de ambiente em um arquivo yaml e rodar um "kubectl apply -f".</p>Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-79267855474079144082021-01-10T07:41:00.000-03:002021-01-10T07:41:31.366-03:00Cluster Raspberry Pi<p style="text-align: justify;">Objetivo deste post é comentar um pouco sobre a minha recente experiência com um cluster de raspberry pi que montei aqui em casa no ano de 2020, ano de pandemia de covid-19 e também um ano bastante atípico para muitos. Montar o cluster foi um desafio enorme, o comercio no país atravessava momentos de restrições de funcionamento e falta de matéria prima e boa parte das peças do cluster foram compradas sob medida. <br /></p><p style="text-align: justify;">A motivação inicial para montar o cluster foi ter novamente hardware suficiente para estudar. Por muito tempo o ambiente de estudos aqui em casa foi um virtualbox instalado no meu macbook. Tenho inclusive boas recordações de estudar vagrant para montar as VMs. Infelizmente fui assaltado e meu hardware passou a ser um <a href="https://www.raspberrypi.org/products/raspberry-pi-3-model-b/" target="_blank">raspberryPI3</a> e um laptop corporativo da empresa na qual trabalho. <br /></p><p style="text-align: justify;">A ideia do cluster nasceu na sequência de quando eu decidi comprar mais raspberry, inclusive não posso negar que enquanto analisava os preços e condições, não resisti, comprei o <a href="https://www.raspberrypi.org/products/raspberry-pi-4-model-b/" target="_blank">rasp4</a> com 4GB de RAM :) Para encurtar a historia, percebi que deixar os raspberrypi trabalhando de forma isolada não era tão interessante e gerenciar as placas estava consumindo um tempo que eu poderia dedicar para outra coisa. Foi assim que nasceu a ideia de montar o cluster.<br /></p><p style="text-align: justify;">Lembro que procurei por algumas semanas uma case para os rasps que fosse pronta entrega aqui no Brasil, mas infelizmente não encontrei. Foi assim então que comecei a estudar as medidas do raspberrypi para eu mesmo construir a minha case! Ficou interessado? Veja esse link <a href=" https://www.raspberrypi.org/documentation/hardware/raspberrypi/mechanical/" target="_blank">aqui.</a> Nele você encontra todas as medidas necessárias para construir uma case, as informações estão em formato pdf ou dxf e o site possui medidas de todos os modelos. </p><p style="text-align: justify;">Fiz um rascunho e na sequencia comecei a procurar o material necessário, encontrei na <a href="https://produto.mercadolivre.com.br/MLB-1604996407-kit-espacador-e-parafusos-_JM" target="_blank">FERSTEFANOUSINAGEM</a> espaçadores de 2,5mm com 8cm de altura. Encontrei placas de acrílico de 3mm no tamanho de 8x10cm com abertura de 2x2cm no meio para cooler na <a href="https://produto.mercadolivre.com.br/MLB-1553555083-acrilico-cristal-3mm-06-pcs-8x10cm-frte-jl-ver-descrico-_JM" target="_blank">MATRIZ DISPLAYS</a>. Os coolers iniciais vieram em um kit quando comprei as placas.</p><p style="text-align: justify;">Ainda nos primeiros dias quando tudo estava montado e testado, percebi que era insuportável permanecer no mesmo cômodo que o cluster por mais de 30minutos. O barulho que os dois coolers produziam incomodavam demais. No kit vieram alguns dissipadores de calor que eu não instalei, pois bem, fiz e removi os coolers da case. Deu errado logo na primeira semana e o hardware aqueceu ao ponto de desligar. Não restava outra alternativa, precisava de cooler maior, mais silencioso e também de novas placas de acrílico para comportar tudo isso. Certo, o acrílico encontrei na <a href="https://g.page/efraimcasadoacrilico?share" target="_blank">EFRAIM</a> e o cooler de 80mm, acredite, infinitamente mais silencioso que os antigos de 20mm encontrei na <a href="https://produto.mercadolivre.com.br/MLB-1321546737-fan-cooler-ventoinha-micro-ventil-80x80x15mm-5v-_JM" target="_blank">AUDIOTEL10</a>. </p><p style="text-align: justify;"><br /></p><p style="text-align: justify;"></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimpXhUL3m5JU2tuFL5C9vxjIz9Fw591mdiYbrldcPsOa_rN0c_AmlUEsRZQrDXtlzxp6dz8z631L0XApub1WygQa4lVAmFtGMjQduj1RzjE-LAVyAW441Zde7K9BVYWMhyphenhyphenC2SC1re1BfA/s1024/20200803_225817-COLLAGE.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1024" data-original-width="1024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimpXhUL3m5JU2tuFL5C9vxjIz9Fw591mdiYbrldcPsOa_rN0c_AmlUEsRZQrDXtlzxp6dz8z631L0XApub1WygQa4lVAmFtGMjQduj1RzjE-LAVyAW441Zde7K9BVYWMhyphenhyphenC2SC1re1BfA/s320/20200803_225817-COLLAGE.jpg" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><div><span style="font-size: x-small;">Primeira vez que tudo ganhou visual de cluster</span></div></td></tr></tbody></table><p></p><p> </p><p>Diferente da foto acima, a próxima foto foi tirada exclusivamente para esta postagem. Perceba o acrílico maior, o cooler maior, veja também um leve acabamento no suporte de plástico para encostar tudo na minha mesa de vidro. Hoje em dia também estou utilizando cabo de rede gigabit aqui no cluster. Vou deixar para um outro post as informações sobre como eu utilizo e gerencio esse recurso computacional, ok?</p><p><br /></p><p style="text-align: justify;"></p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><span style="font-size: x-small;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOwJnpV-pXPWr7kTN_c0QkB9kW6q3kF_wUvBQx4HOAzQp1ex_IixndqH-KWKYogSty-wWLaAbgioHIolaEetZ9Kt3AxTqAERjV-vEh9wjej_qp1YxLJXk9DkID5F8a0KPCVfo43A3f6HI/s1024/20210103_092814-COLLAGE.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1024" data-original-width="1024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOwJnpV-pXPWr7kTN_c0QkB9kW6q3kF_wUvBQx4HOAzQp1ex_IixndqH-KWKYogSty-wWLaAbgioHIolaEetZ9Kt3AxTqAERjV-vEh9wjej_qp1YxLJXk9DkID5F8a0KPCVfo43A3f6HI/s320/20210103_092814-COLLAGE.jpg" /></a></span></td></tr><tr><td class="tr-caption" style="text-align: center;"><span style="font-size: x-small;">Case atual, foto tirada recentemente<br /></span></td></tr></tbody></table><br />Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-61265469649788998652021-01-02T10:04:00.007-03:002021-01-02T10:07:35.789-03:00vnStat<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
vnStat é um monitor de trafego de rede open source e totalmente baseado em terminal linux, ou seja, não possui interface gráfica. Principal objetivo do software é oferecer um registro de trafego de rede para a(s) interface(s) selecionada(s). Uma coisa muito interessante é que a ferramenta disponibiliza filtros por dia, mês, permite ainda que você obtenha os dados em tempo real.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Com relação aos dados oferecidos pelo <a href="http://humdi.net/vnstat/">vnStat</a>, eles são obtidos através de estatísticas oferecidas pelo kernel do linux. Alias, isso faz dele uma ferramenta muito performática ao ponto de rodar suave em um OpenWrt. :) <br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Com relação ao fato do vnStat não possuir interface gráfica, fique tranquilo, não faz nenhuma falta. O software é muito pratico e simples. Caso realmente você queira gerar gráficos com os dados obtidos através do <a href="http://humdi.net/vnstat/">vnStat</a>, leia a documentação oficial.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Antes de optar pelo vnStat, esbarrei com uma lista com diversas opções e gostaria que gostaria de compartilhar com você através desse <a href="https://wiki.openwrt.org/doc/howto/bwmon">link</a>.</div><div style="text-align: justify;"> </div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQp06jkh6-n8vM0UCaK1ELpdeB1wbv-3ihVPpU9aydXQdP3eAb4d01kVslnQIbJA2sjjfvdgpkckbsUCzzZBUfi1Sc0gZ-QjqO5Cb9pReJuFIgDA05PTcr1JM1NlJvrq_2K2PihfMh2QQ/s518/Screenshot+from+2021-01-02+09-59-58.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="405" data-original-width="518" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQp06jkh6-n8vM0UCaK1ELpdeB1wbv-3ihVPpU9aydXQdP3eAb4d01kVslnQIbJA2sjjfvdgpkckbsUCzzZBUfi1Sc0gZ-QjqO5Cb9pReJuFIgDA05PTcr1JM1NlJvrq_2K2PihfMh2QQ/s320/Screenshot+from+2021-01-02+09-59-58.png" width="320" /></a></div><br /><br /></div>
Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-75409996105654467802016-02-18T19:42:00.003-02:002021-01-02T10:12:42.873-03:00HTTPie<div><div style="text-align: justify;"> O HTTPie é um projeto de Jakub Roztocil, desenvolvido em Python, usando as bibliotecas <a href="https://www.blogger.com/#">Requests</a> e <a href="https://www.blogger.com/#">Pygments</a>, e está sob uma licença BSD. A ferramenta está disponível para instalação através do <a href="https://www.blogger.com/#">pip</a> ou pode ser obtida no repositório <a href="https://www.blogger.com/#">Github</a> do projeto. <br /></div> <br /></div><div style="text-align: left;"><div style="text-align: justify;"> A proposta da ferramenta é ser um CLI(Command Line Interface) para servidores web mais humano, a sintaxe dos comandos são simples e o retorno por ex é colorido. Acredite, isso facilita muito a visualização de informações em momentos mais críticos em que você está com pressa. <br /></div> <br /></div><div style="text-align: justify;"> Inevitável não comparar com o cURL até porque os dois possuem recursos semelhante, quer ver um exemplo? Instale os dois na sua maquina e digite o seguinte: </div><div style="text-align: justify;"><br /></div><div> <b>curl -i -X PUT -H 'Content-Type:application/json' -d '{"blog":"pviana"}' http://httpbin.org/put </b><br /> </div><div>Agora vamos fazer o mesmo utilizando o HTTPie:<br /> <br /> <b>http PUT http://httpbin.org/put blog=pviana </b><br /> </div><div>Ficou com preguiça? Pois bem o retorno dos dois comandos segue abaixo:<br /> <br /><a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibyamIWKBQszAMZ0KU8JYwhaYNmnWOdFifew5bDR4Nw0hHI7AJOBjvkxYJcq96PsDltgmERRVhEEiXWORwQhDJJawrCQT34wUV3BbQr_qzCRHyNtickRGNHzDPZWY7SGTUY4qE1AyleIM/s640/httpie_curl.tiff" /></a> <br /> </div><div>HTTPie vs cURL <br /> <br /></div><div style="text-align: justify;"> Volto a afirmar que a ideia do post não é dizer que uma ferramenta é melhor que a outra. Escrevi esse post apenas para documentar uma experiência que tive com uma ferramenta que achei muito mais simples de utilizar do que a que estava habituado. </div>Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-89776077042302143152016-02-07T18:02:00.002-02:002021-01-01T18:26:33.730-03:00Logrotate<div style="text-align: justify;">
Logs são extremamente importantes para o correto funcionamento de um sistema, pois estão ali as informações necessárias para corrigir um problema ou para entender porque ocorreu uma determinada falha. Agora logs também possuem seus defeitos, afinal eles podem ser o responsáveis por encher uma partição raiz sem que você perceba, deixando assim o ambiente extramente lento e algumas vezes inutilizável causando os mais diversos problemas.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Uma excelente opção de gerencia disso é o tradicional <a href="http://www.linuxcommand.org/man_pages/logrotate8.html" target="_blank">LogRotate</a>. Com ele você indica o período de rotação do arquivo de log, pode determinar ainda o apagamento e se for o caso compressão, alias extensão da compressão também é possível configurar.</div>
<div style="text-align: justify;">
<br /></div><p>
Arquivo de configuração do log rotate é: <b>/etc/logrotate.conf</b>, o que devemos fazer é indicar o arquivo a ser monitorado e quais as métricas por ex: <br /><br />/var/log/messages {<br /> <br /> rotate 5 <br /> weekly <br /> postrotate <br /> /sbin/killall -HUP syslogd <br /> endscript <br /> } </p><p>Acima temos o arquivo messages <i>(ou syslog em algumas distribuições) </i>como base, em seguida está definido que haverá uma rotação de 5 arquivos ( messages.1, messages.2, messages.3...) que ocorrerá semanalmente e por fim toda vez que houver uma rotação o comando killall será executado.<br />
<br />
</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSZJ-gzxs9BXMCOaXR7KzyLkDgOr-pHF-qz7t9WE22tIuhYhpnfliXvEjlTcfmw55wXJd0S3ZN-_eYFEzLl6PaKID_c93xIPanE26jD63fx-zRD7Wm4k_VGbIG-UpnYial8h_PLdeqQzE/s1600/logrotate.tiff" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSZJ-gzxs9BXMCOaXR7KzyLkDgOr-pHF-qz7t9WE22tIuhYhpnfliXvEjlTcfmw55wXJd0S3ZN-_eYFEzLl6PaKID_c93xIPanE26jD63fx-zRD7Wm4k_VGbIG-UpnYial8h_PLdeqQzE/s1600/logrotate.tiff" /></a></div>
<br />
<br />
Lembrando que existem diversas opções para utilizarmos no <a href="http://www.linuxcommand.org/man_pages/logrotate8.html" target="_blank">LogRotate</a>. Se me permite um "copy / translate / paste" da documentação.<br />
<br />
<b>compress</b> - Opção utilizada para comprimir os logs. <br />
<b>compresscmd</b> - Comprimir os logs de outra forma. O padrão é gzip. <br />
<b>uncompresscmd</b> - Opção utilizada para definir o comando para descomprimir os logs. O padrão é gunzip.<br />
<b>compressext</b> - Especifica a extensão usada para o arquivo de log comprimido, caso a compressão esteja habilitada. <br />
<b>compressoptions</b> - Opção possibilita incluir parâmetros aos comandos de compressão. Por exemplo: gzip -5. O padrão é a compressão máxima "-9". <br />
<b>copy</b> - Copia o log sem modificar o original. <br />
<b>copytruncate</b> - Copia o log e move o original para outro lugar. <br />
<b>create</b> <b>[mode owner group]</b> - Este é o comando usado para a criação de um novo arquivo de log vazio após a rotação. Você pode alterar as permissões, o dono do arquivo e o grupo. <br />
<b>daily</b> - Rotacionar diariamente. <br />
<b>delaycompres</b> - Atrasa a compressão do log para a próxima rotação. <br />
<b>extension [ext]</b> - Inclui uma extensão para o arquivo de log. Se a compressão usada for a padrão a extensão será .gz. <br />
<b>ifempty</b> - Rotaciona os logs mesmo quando vazios. O inverso pode ser definido através da opção: <b>notifempty</b><br />
<b>include [file or directory]</b> - Indica outros arquivos de configuração ou diretórios que tenham arquivos de configuração para o logrotate. <br />
<b>mail</b> - Envia um email com logs extintos. <br />
<b>mailfirst</b> - Envia um email com os logs rotacionados. <br />
<b>maillast</b> - Envia um email com os logs que serão rotacionados, os logs originais. <br />
<b>missingok</b> - Não enviar mensagem de erro no caso de um arquivo de log não existir. <br />
<b>monthly</b> - Rotaciona os logs mensalmente. <br />
<b>nocompress/nocopy/nocopytruncate/nocreate/nodelaycompress/nomail</b><b>/nomissingok/noolddir/nosharedscripts/notifempty</b> - Negativas aos comandos correspondentes. <br />
<b>olddir [directory]</b> - Guardar as versões rotacionadas em outro diretório. <br />
<b>postrotate/endscript</b> - Comandos a serem executados após a rotação do log. <br />
<b>prerotate/endscript</b> - Comandos a serem executados antes da rotação do log, caso o log seja rotacionado.<br />
<b>firstaction/endscript</b> - Comandos a serem executados imediatamente antes dos prerotates comandos. <br />
<b>lastaction/endscript</b> - Comandos a serem executados depois do postrotate. <br />
<b>rotate</b> - Indicativo sobre a quantidade de rotações que o log vai ter. <br />
<b>size</b> - Rotacionar os logs quando ultrapassarem o tamanho indicado. <br />
<b>start</b> - Inclui um número para a base dos logs rotacionados, por exemplo: start 0 - log.0. <br />
<b>weekly</b> - Rotacionar semanalmente. <br />
<br />Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-45637159288530327402016-01-22T00:25:00.001-02:002021-01-01T18:26:57.080-03:00Devpi<a href="https://www.blogger.com/#">Devpi</a> é uma excelente opção para repositório pypi, claro não desmerecendo do <a href="https://www.blogger.com/#">Bandersnatch</a>. A grande diferença entre os dois é que o <a href="https://www.blogger.com/#">Bandersnatch</a> foi pensado para um ambiente totalmente offline. Quando o <a href="https://www.blogger.com/#">Bandersnatch</a> é iniciado faz download de todos os pacotes disponíveis no repositório que foi previamente indicado no seu arquivo de configuração para um diretório local só então começa a servir. Enquanto que o <a href="https://www.blogger.com/#">Devpi</a> trabalha com cache, ou seja, você também indica um repositório mestre e um diretório onde ele vai guardar os pacotes, mais o download acontecerá sob demanda. Isso sem falar que o <a href="https://www.blogger.com/#">Devpi</a> também trabalha com replicação, quando for iniciar o servidor você pode indicar outro servidor devpi como master.<br /> <br /> As duas opções são boas a diferença está no jeito que cada uma funciona, acredito que a escolha ficará por conta do ambiente que você possui. Caso tenha uma maquina com acesso a internet então eu usaria o <a href="https://www.blogger.com/#">Devpi</a>, até porque não imagino alguém precisando dos 180Gb de pacotes que o <a href="https://www.blogger.com/#">Bandersnatch</a> baixa do repositório python padrão.<br /> <br /> <br /> <br /><a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQXqhlJ-dRZ8X7FqS_cpoLP4MYhmgvKfgWlZIFZAPDk0xborRSEoDMVSxMMuHcRZEl5lE0f1WhvPQRNjwJhXmeiAdrneuvXEyPPCSFh7GGRNBNULDgSljSsck65oWG3bG6IZBFQCl4Eg4/s1600/devpicat.jpg" /></a> <br /><br /> <br /> Vamos instalar o Devpi então? Primeiro passo, precisamos do pacote Python-pip instalado na maquina. Caso já tenha otimo, do contrario, execute o seguinte comando:<br /> <br /> sudo apt-get install python-pip Utilizando o pip instale o Devpi.<br /> <br /> sudo pip install devpi Agora que o servidor devpi está instalado. Recomendo ler também o "--help" antes de iniciar. Para esse post vou usar apenas o parâmetro "--host". Isso significa que o "--serverdir" permanecerá o padrão. (~./devpi/server).<br /> <br /> sudo devpi-server --host=0.0.0.0 Simples demais não é mesmo? Servidor devpi está operacional. Quando os clientes solicitarem os pacotes ele vai entregar e guardar no cache local. Dessa forma ele consegue servir mais rapidamente das próximas vezes sem a necessidade de ir para internet em todas as requisições que receber.<br /> <br /> Ok... Agora e na maquina cliente, como fazer para pedir esses pacotes? pip install e pronto?!<br /> Resposta: Não! Execute o comando pip da seguinte forma:<br /> <br /> sudo pip install -i http://ip_do_servidor:porta/root/pypi/+simple/ nome_do_pacote Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-19192313274462346992016-01-13T09:49:00.001-02:002021-01-01T18:27:32.646-03:00Siege HTTP Benchmark Recentemente pesquisando sobre balanceamento de carga e também como melhorar performance do nginx, esbarrei com uma ferramenta simples e ao mesmo tempo muito útil. Para exemplificar melhor a situação vamos considerar uma instancia com 1GB de RAM, 2 CPUs e um Debian8, calma, não se prenda muito nesses valores. <br /> <br /> <br /> Primeiro passo foi entender o que poderia fazer a diferença no nginx.conf. Encontrei duas opções logo no inicio que chamaram muito atenção: worker_processes e worker_connections. Na documentação oficial do nginx existe uma recomendação de preencher o worker_processes com total de CPUs e no worker_connections o valor obtido através do resultado do comando: <a href="https://www.blogger.com/#">ulimit -n</a>. <br /> <br /> <br /> Obs: Total de cpu pode ser obtido através do comando: <br /> <br /> cat /proc/cpuinfo |grep -i processor |wc -l <br /> <br /> Próximo passo foi encontrar uma ferramenta que fosse capaz de realizar um teste de performance, algo semelhante ao que o <a href="https://www.blogger.com/#">AB</a> faz com o Apache. Afinal de contas, será que os valores indicados estão sendo levados em consideração? Foi nesse momento que encontrei o <a href="https://www.blogger.com/#">Siege</a>, uma excelente opção capaz de realizar esse teste. <br /> <br /> <br /> Instalação é muito fácil, está disponível no repositório <a href="https://www.blogger.com/#">brew</a>(osx) e também no repositório do Ubuntu. Hmm, putz! estamos usando Debian não é mesmo? Falei para não se prender naqueles valores, hehehe. Pois bem, adicione um repositório ai: <br /> vim /etc/apt/sources.list <br /> deb http://ftp.de.debian.org/debian sid main <br /> <br /> <br /> Existem muitas opções disponíveis para que possamos estressar nosso webserver através do Siege. Recomendo muito a leitura da <a href="https://www.blogger.com/#">documentação</a>. Devido a limitação do meu ambiente virtual, montei esse post considerando apenas duas: -t(tempo de execução) e -c(numero de conexões). Sintaxe ficou assim: <br /> <br /> siege -t10s -c800 https://IP_DO_SEU_WEB_SERVER <br /> <br /> Ao termino da execução do siege, vamos ter acesso a um relatório semelhante ao da imagem abaixo, onde é possível observar o tempo médio de execução, total de dados transferidos, tempo médio de resposta por usuário...<br /> <br /> <br /> <br /><a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2IShimm29ebqxN1jrdogwRwE9wVZVC-G121R5l7nfAPxnIrZTOdgWaf3wqaSlorTxf8rwewNyJBEKfY74-2Ygs7Xc8e4INFkjpD1MzWve8xmIcFPBslsytT1y_O8WJKKL-TbYZPdFerE/s320/siege.png" /></a> <br /><br /> <br /> <br /> <br /> O post chega ao fim não porque esgotamos todas as possibilidades, longe disso, o nginx possibilita uma gamma muito maior de opções a serem alteradas quando o assunto é performance. Foco foi apenas em apresentar uma boa ferramenta para estressar seu webserver dentro da limitação do meu ambiente de testes. Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-76198987510129808342016-01-07T23:22:00.004-02:002021-01-01T18:28:06.381-03:00NGINX Load Balancer <br /> Já parou para pensar que pode existir um gargalo na sua infraestrutura porque você tem muitos mil acessos e um único servidor web para atender a toda essa demanda? Se você compartilha desse cenário recomendo seguir a leitura desse post e considerar configurar um <a href="https://www.blogger.com/#">load balancer</a> no seu <a href="https://www.blogger.com/#">NGINX</a>. <br /> <br /> <br /> Sempre muito importante explicar um pouco do conceito, dessa vez para agilizar as coisas recorri a um site bastante conhecido - <a href="https://www.blogger.com/#">wikipedia</a> - <a href="https://www.blogger.com/#">Balanceamento de carga</a> ou <a href="https://www.blogger.com/#">Load balancer</a>(em inglês), em rede de computadores, é uma técnica para distribuir a carga de trabalho uniformemente entre dois ou mais computadores, enlaces de rede, discos rígidos ou outros recursos, a fim de otimizar a utilização de recursos, maximizar o desempenho, minimizar o tempo de resposta e evitar sobrecarga. Utilizando múltiplos componentes com o balanceamento de carga, em vez de um único componente, pode aumentar a confiabilidade através da redundância.<br /> <br /> <br /> <br /> <a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnT7K3BNGbxFL6bKYy-nSpcW1a5sv9FoDjJEqaqsaO-1xKMjMu0vmsVbsGVCSKTHtX5f1B7Hdf3CGRL2tFrwkhDNSM2b0Uj2l8MaxAP_xOsQiSEg0DqbSQulLbnXRK8_ri7xdFwhIktaY/s1600/nginx-load-balancer.tiff" /></a> <br /> <br /> <br /> <br /> Importante ressaltar que o algorítimo padrão para funcionamento do balanceamento de carga do NGINX é o <a href="https://www.blogger.com/#">round-robin</a>. Isso não quer dizer que você precisa ficar preso nele, veja na documentação que é possível ajustar isso conforme sua necessidade. <br /> Primeiro passo é indicar quais maquinas pertencem ao load balancer. Crie um arquivo *.conf (pode usar qualquer nome, usei mpdocs) dentro do diretório NGINX_HOME/sites-enabled/ do seu servidor web, <br /> <br /> vim NGINX_HOME/sites-enabled/mpdocs.conf <br /> Obs: NGINX_HOME é uma referencia ao diretório NGINX do seu servidor, o padrão é /etc/nginx/. <br /> <br /> <br /> Arquivo de criado? Indique o uptream conforme descrito abaixo: <br /> <br /> upstream mpdocs{<br /> server ENDEREÇO_IP:PORTA;<br /> server ENDEREÇO_IP:PORTA; <br /> } <br /> Certamente dentro do NGINX_HOME/default.conf você vai ter um location apontado para raiz, semelhante ao indicado abaixo, altere o valor para que haja um apontamento para o upstream que acabou de configurar. <br /> <br /> location / {<br /> proxy_pass http://mpdocs;<br /> } <br /> Nas maquinas que vão compor o load balancer, vamos editar o arquivo default.conf, localizado dentro do NGINX_HOME e indicar para qual destino elas vão apontar. Nesse tutorial eu vou apontar para o blog, lembrando que você pode indicar para qualquer outra coisa.<br /> <br /> <br /> location / {<br /> proxy_pass www.pviana.com.br;<br /> }<br /> Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-27238658416846080262015-12-25T12:18:00.002-02:002021-01-01T18:28:52.535-03:00Bandersnatch + Reposync + Apt-Cacher Algum tempo atrás precisei instalar algumas coisas em uma maquina que estava em ambiente de produção e fui surpreendido com a dificuldade, posso afirmar que foi tenso conseguir concluir a tarefa. Questionando a equipe descobri que tínhamos um repositório, mas que não estava atualizado e não atendia muito bem.<br /> <br /> Combinei de estudar a situação e resolver da melhora maneira possível. Pois bem, a ideia por trás desse post é usar um Ubuntu Server 14.04 como repositório para Python, CentOS e Ubuntu ao mesmo tempo, em outras palavras uma maquina servindo os três simultaneamente.<br /> <br /> Em um primeiro momento parece um pouco complexo ou até mesmo louco usar isso. Tenho certeza que após executar todos os passos a seguir vai perceber que é fácil levantar um ambiente desses. <br /> <br /> <br /> Repositorio pypi (Bandernatch) <br /> <br /> <br /> Precisamos do virtualenv para isolar a instalaçao do repositorio do python. <br /> <br /> # apt-get install python-virtualenv <br /> <br /> <br /> Crie um virtualenv com qualquer nome, optei por criar com o nome da aplicação. <br /> <br /> # virtualenv bandersnatch <br /> <br /> <br /> Baixe os pacotes indicados no requirements.txt abaixo. <br /> <br /> # cd bandernatch <br /> # bin/pip install -r <a href="https://www.blogger.com/#">https://bitbucket.org/pypa/bandersnatch/raw/stable/requirements.txt</a> <br /> <br /> <br /> Necessario rodar a aplicação uma vez, pois assim o arquivo de configuração e a pasta pypi será criada. Lembre-se de iniciar o venv para rodar a aplicação. <br /> <br /> # . bin/activate <br /> # sudo bandersnatch mirror <br /> <br /> <br /> Crie um arquivo chamado run.sh para facilitar rodar a aplicação das próximas vezes. <br /> #vim /home/dev/bandersnatch/run.sh <br /> <br /> <br /> #!/bin/bash<br /> . /home/dev/bandersnatch/bin/activate<br /> sudo /home/dev/bandersnatch/bin/bandersnatch mirror <br /> <br /> <br /> Para centralizar tudo em uma única pasta optei por fazer dois links simbolicos. Primeiro para o arquivo de configuração, localizado na pasta /etc/ e outro para a pasta onde a aplicação guarda os pacotes baixados. <br /> <br /> # sudo mv /etc/bandersnatch.conf bin/ <br /> <br /> # sudo ln -s bin/bandersnatch.conf /etc/bandersnatch.conf <br /> <br /> # sudo mv /srv/pypi . <br /> <br /> # ln -s pypi/ /srv/pypi <br /> <br /> Repositorio CentOS (Reposync) <br /> <br /> Para montar o repositorio offline para CentOS vamos precisar de dois pacotes. <br /> # sudo apt-get install yum-utils createrepo <br /> <br /> Vamos precisar de um link simbolico para que os comandos adiantes funcionem corretamente. Afinal, não estamos no CentOS e sim no Ubuntu Server 1404. <br /> # sudo ln -s /etc/yum/yum.conf /etc/yum.conf <br /> <br /> Monte o cdrom do centos no qual você quer fazer o repositorio e copie todo conteudo da pasta package da media para dentro de um diretorio de sua escolha, optei pelo nome: centos/6.5. Importante lembrar que precisamos que ele seja dentro da pasta root do seu webserver. (como é possível perceber usei /var/www/html, lembre-se que o default do nginx é: /usr/share/nginx/html) <br /> # sudo cp -R /media/cdrom/Packages /var/www/html/centos/6.5/ <br /> <br /> Precisamos do arquivo comps.xml que está dentro da media, copie para a pasta junto aos pacotes. <br /> # sudo cp /media/cdrom/repodata/*comps*.xml /var/www/html/centos/6.5/Packages/comps.xml <br /> <br /> De dentro da pasta do repositorio rode o comando createrepo para gerar o indice <br /> # sudo createrepo -g Packages/comps.xml . <br /> <br /> Repositorio está feito! Os CentOS que forem utilizar esse repositorio vão precisar de um arquivo .repo personalizado. Pois bem, o conteudo dele deve ser: <br /> <br /> [DEPED_REPO] <br /> name=Repositorio DEPED <br /> baseurl=http://192.168.10.38/centos/6.5/ <br /> gpgcheck=0 <br /> enabled=1 <br /> <br /> Repositorio Ubuntu (apt-cacher) <br /> <br /> Optei pelo apt-cacher ao invés do apt-mirror, porque ele faz o download sob demanda. Ou seja, o servidor de repositorio só vai buscar somente os pacotes de ubuntu que forem solicitados. Toda vez que uma outra maquina solicitar o mesmo pacote, ele não baixa duas vezes, ele utiliza o cache local. O apt-mirror faz o download do repositorio todo, isso consome muito mais espaço em disco. <br /> <br /> <br /> <br /> # apt-get install apt-cacher <br /> <br /> <br /> Acesse o apt-cacher.conf e vamos configurar algumas opções: <br /> <br /> <br /> <br /> # vim /etc/apt-cacher/apt-cacher.conf <br /> cache_dir = /var/cache/apt-cacher<br /> log_dir = /var/log/apt-cacher<br /> daemon_port = 3142<br /> group = www-data<br /> user = www-data<br /> allowed_hosts = * <br /> <br /> <br /> <br /> <br /> Nas maquinas clientes, vamos precisar alterar o sources.list. <br /> <br /> <br /> <br /> # vim /etc/apt/sources.list <br /> <br /> <br /> Coloque antes de todas as linhas uteis do arquivo o endereço ip:porta/apt-cacher do nosso servidor. Ex:<br /> <br /> <br /> <a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7kngdmttAYeNP0BNTrFNoyB-ZggdTcEGbSw-nKIkrquo8l7saVgpFPV29cdPnncJRdMdQ5SAJ3KuJAGipu-1WpgRH1t4ATrdmafa34nj8KJqeATRaz96T6O-Ux60Z0lrL86SGHpbC3t4/s400/index.jpg" /></a> <br /> <br /> <br /> Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-3226602146793990842015-10-22T10:24:00.001-02:002021-01-01T18:29:43.737-03:00MariaDB Galera Cluster c/ HAProxy e Pacemaker <br /> <br /> Uma vez iniciei uma pesquisa sobre MariaDB Galera cluster, ideia por trás dessa missão era substituir banco de dados MySQL que tinham seus dados replicados através de DRBD. Após reunir muito material sobre o assunto, criei um checklist com um passo a passo detalhado de como implementar. <br /> <br /> <br /> MariaDB Galera cluster nada mais é do que um conjunto de bancos de dados MariaDB funcionando em modo ativo-ativo, ou seja, você pode acessar e até gravar em sua base de dados de qualquer um deles, simultaneamente se for preciso. Está disponível em Linux e suporta apenas os mecanismos de armazenamento XtraDB / InnoDB (existe suporte experimental para MyISAM). <br /> <br /> <br /> MariaDB é construído por alguns dos autores originais do MySQL, com a ajuda da grande comunidade de desenvolvedores de software livre. É mantido atualizado com a última versão do MySQL, pelo que entendi, vai funcionar exatamente como MySQL. Todos os comandos, interfaces, bibliotecas e APIs que existem no MySQL também existem no MariaDB. Li rumores de que a aquisição do MySQL pela Oracle não agradou a comunidade e por isso o MariaDB ganhou força. <br /> <br /> <br /> Pois bem, nesse post ainda vou somar o MariaDB Galera cluster com outros dois gigantes, Pacemaker e HAProxy. Isso se fez necessário por que a aplicação final não é capaz de fazer load balance entre os bancos. Já que eles vão funcionar todos como ativo, ou seja, caso aponte a aplicação para apenas um dos ips vai funcionar. Então eu preciso é de um VIP(virtual ip) e de um balanceador de carga. ;) <br /> <br /> <br /> Ambos são muito simples de configurar, claro que eu vou focar nas configurações necessárias apenas para o cluster funcionar, mas recomendo uma pesquisa paralela sobre HAProxy e Pacemaker, ambos são excelentes e podem fazer muito mais do que vou mostrar nesse post. <br /> <br /> <br /> Nosso ambiente será composto por 3 maquinas, todas vão ter pacemaker e haproxy e todas também vão fazer parte do cluster de banco de dados. A ideia por trás disso é simples. Todas as maquinas podem ser titulares a qualquer momento, inicialmente vou eleger uma, mas em caso de falha qualquer outra poderá assumir esse papel. Veja o desenho abaixo, tenho certeza que vai ficar mais facil de entender o que vai ser feito. <br /> <br /> <br /> <br /> <br /> <br /> <br /> <a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfMqI_g3vxsGY76Whi3yxk4luIs4jOAqubMEZjK2cV_LR-6N6xl15eT86VBF-zT_NPLUphbd5BOTk5YuKYJZCfLbnzQ_P8D_lBBP1QTq3E-_cNnO7Y4V0zDVq7QimqFJmkxsyCmrUXAEo/s400/Diagrama.png" /></a> <br /> <br /> <br /> Estou utilizando apenas 3 maquinas, mas nem de longe isso é limite do cluster, muito menos do loadbalancer. Eu que sou preguiçoso e não utilizei nada para provisionar essas maquinas então três está bom. :) de qualquer forma, desconheço qualquer limite para cluster ou qualquer outra ferramenta envolvida nesse post. <br /> Para instalar os pacotes necessários precisamos configurar um repositório e configurar sua chave. <br /> <br /> $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0xcbcb082a1bb943db <br /> <br /> $ sudo add-apt-repository 'deb http://mirror.edatel.net.co/mariadb//repo/10.0/ubuntu trusty main' <br /> <br /> $ sudo apt-get update<br /> <br /> <br /> <br /> Instale o MariaDB Galera Server: <br /> <br /> $ sudo apt-get install mariadb-galera-server <br /> <br /> <br /> Obs: Caso opte por uma senha diferente de rootroot, atenção redobrada aos comandos desse post. <br /> <br /> <br /> <br /> <br /> Instale também o PaceMaker: <br /> <br /> $ sudo apt-get install pacemaker <br /> E também instale o HaProxy: <br /> <br /> $ sudo apt-get install haproxy <br /> Crie o arquivo cluster.cnf dentro do diretorio /etc/mysql/conf.d/. Sim vamos editar uma subpasta do mysql, diretório está correto. <br /> <br /> [mysqld]<br /> query_cache_size=0<br /> query_cache_type=0<br /> binlog_format=ROW<br /> default-storage-engine=innodb<br /> innodb_autoinc_lock_mode=2<br /> bind-address=0.0.0.0<br /> wsrep_provider=/usr/lib/galera/libgalera_smm.so<br /> wsrep_cluster_name="cluster_mpdocs"<br /> wsrep_cluster_address="gcomm://192.168.10.61,192.168.10.43,192.168.10.44"<br /> wsrep_sst_method=rsync<br /> wsrep_node_address=" "<br /> wsrep_node_name=" " <br /> Tão importante quanto editar o arquivo cluster.cnf conforme indicado acima, é <br /> garantir que o debian.cnf, também localizado dentro do subdiretorio mysql em <br /> /etc/, esteja idêntico em todos os servidores. <br /> <br /> <br /> Nosso objetivo é configurar vários servidores então escolha um e utilize como <br /> base. Apos escolher, copie o arquivo em questão para todos os demais servidores. <br /> <br /> $ scp /etc/mysql/conf.d/cluster.cnf <ip_de_destino>:/etc/mysql/conf.d/cluster.cnf <br /> $ scp /etc/mysql/debian.cnf <ip_de_destino>:/etc/mysql/debian.cnf <br /> Certifique que todos os bancos MariaDB estejam parados. <br /> <br /> $ sudo /etc/init.d/mysql stop <br /> <br /> <br /> Obs: Executar esse comando em todos os 3 servidores. <br /> <br /> <br /> <br /> <br /> Verifique se o arquivo hosts do servidor está correto. Abaixo segue um exemplo <br /> do utilizado no servidor em questão. <br /> <br /> $ sudo vim /etc/hosts <br /> 127.0.0.1 localhost<br /> 127.0.0.1 Galera01<br /> 127.0.1.1 Galera01<br /> # The following lines are desirable for IPv6 capable hosts<br /> ::1 localhost ip6-localhost ip6-loopback<br /> ff02::1 ip6-allnodes<br /> ff02::2 ip6-allrouters <br /> Vamos criar o primeiro cluster? Execute apenas em um dos servidores o comando: <br /> <br /> $ sudo service mysql start --wsrep-new-cluster <br /> Nos demais servidores inicie o banco de dados: <br /> <br /> $ sudo /etc/init.d/mysql start <br /> <br /> <br /> Obs: Atenção com o uso do sudo antes do comando de start no mysql e também nos demais executados até aqui, caso não utilize você poderá ter respostas <br /> diferentes das que estão descritas nesse post. <br /> <br /> <br /> Adimitindo que todos os servidores subiram o banco de dados corretamente, então <br /> o cluster está operacional! Execute de qualquer um os comandos: <br /> <br /> $ mysql -u root -prootroot <br /> Em seguida de privilegio ao usuario root para acesso externo. <br /> <br /> > GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'rootroot';<br /> > GRANT ALL ON *.* TO root@'localhost' IDENTIFIED BY 'rootroot'; <br /> Caso queira verificar se todos os servidores configurados estão fazendo parte do <br /> cluster, logue no mysql e digite: <br /> <br /> > SHOW STATUS LIKE 'wsrep_cluster_size%'; <br /> Resultado vai ser uma tabela onde a coluna VALUE deve contar o numero <br /> correspondente a quantidade de servidores adicionados ao cluster. <br /> <br /> <br /> Parar o checklist aqui, significa que você tem um cluster de banco de dados funcionando a todo vapor! O que vamos fazer a seguir é configurar um loadbalancer e um vip.<br /> <br /> <br /> <br /> Configuração Corosync / PaceMaker: <br /> <br /> <br /> Primerio passo para configurarmos nosso cluster é criar a authkey necessária <br /> para funcionamento do serviço corosync. <br /> <br /> $ sudo corosync-keygen <br /> Processo de gerar a chave é um pouco demorado. Quando terminar copie essa chave para os demais servidores. No ambiente de testes o output do comando corosync-keygen foi: <br /> <br /> Corosync Cluster Engine Authentication key generator.<br /> Gathering 1024 bits for key from /dev/random.<br /> Press keys on your keyboard to generate entropy.<br /> Press keys on your keyboard to generate entropy (bits = 872).<br /> Press keys on your keyboard to generate entropy (bits = 920).<br /> Press keys on your keyboard to generate entropy (bits = 968).<br /> Press keys on your keyboard to generate entropy (bits = 1016). <br /> Para copiar a chave para os demais servidores, você pode utilizar o comando scp. <br /> <br /> $ scp /etc/corosync/authkey dev@NOME_DO_OUTRO_SERVIDOR: <br /> Apos efeutar a copia, vá até o outro servidor e copie o arquivo authkey do home <br /> do usuario dev para o diretório /etc/corosync, conforme indicação abaixo. <br /> <br /> $ sudo cp -a authkey /etc/corosync/authkey <br /> Logo após a instalação, por padrão o serviço do corosync não inicia como os <br /> demais serviços apenas com o parametro start. Necessario alterar um arquivo para <br /> que isso aconteça. <br /> <br /> $ sudo vim /etc/default/corosync <br /> Assim que abrir o arquivo acima, vai reparar que o parametro START está setado <br /> para NO. Troque para YES, salve e feche o arquivo. <br /> <br /> <br /> Atenção, ainda não inicie o serviço do corosync, precisamos configurar o arquivo <br /> .conf correspondente. <br /> <br /> <br /> Indique o endereço de rede onde o cluster vai operar no campo bindnetaddr do <br /> arquivo corosync.conf. Não alterei nenhum outro campo do arquivo .conf original. <br /> <br /> $ vim /etc/corosync/corosync.conf <br /> totem {<br /> version: 2<br /> token: 3000 <br /> token_retransmits_before_loss_const: 10<br /> join: 60<br /> consensus: 3600<br /> vsftype: none<br /> max_messages: 20<br /> clear_node_high_bit: yes<br /> secauth: off<br /> threads: 0<br /> rrp_mode: none<br /> interface {<br /> } }<br /> amf {<br /> ringnumber: 0<br /> bindnetaddr: 192.168.10.0 #Endereço de rede<br /> mcastaddr: 226.94.1.1<br /> mcastport: 5405<br /> mode: disabled<br /> }<br /> quorum {<br /> provider: corosync_votequorum<br /> expected_votes: 1<br /> }<br /> aisexec {<br /> user: root<br /> group: root<br /> } logging {<br /> fileline: off<br /> to_stderr: yes<br /> to_logfile: no<br /> to_syslog: yes<br /> syslog_facility: daemon<br /> debug: off<br /> timestamp: on<br /> logger_subsys {<br /> subsys: AMF<br /> debug: off<br /> tags: enter|leave|trace1|trace2|trace3|trace4|trace6<br /> } } <br /> Inicie os serviços do Corosync e também do Pacemaker. <br /> <br /> $ sudo /etc/init.d/corosync start <br /> $ sudo /etc/init.d/pacemaker start <br /> Para verificar quantos servidores compoem o cluster utilize o parametro status <br /> do comando crm. <br /> <br /> $ sudo crm status <br /> <br /> <br /> Atenção: Valido compreender dois recursos do cluster antes de prosseguirmos. <br /> Em ambos CIB(Cluster Information Base) desabilitei o stonith. Este recurso força shutdown do servidor caso julgue necessário, justificativa é garantir integridade dos dados. Durante a pesquisa achei relatos que não funciona corretamente. Adiante como pode perceber, opto por desligar o recurso. <br /> <br /> <br /> No-quorum-policy=”ignore” esta linha indica ao cluster que ele vai funcionar mesmo que não tenha maioria de quorum. Exemplo: Imagine que você possui dois servidores e um deles apresenta uma falha. Nesta condição o cluster será automaticamente desligado por falta de quorum. Para isso não acontecer, digite esta linha na criação do CIB. <br /> <br /> <br /> Entendido? Vamos criar o VIP e também vamos integrar o HAProxy ao Pacemaker. <br /> Torne-se root para facilitar o processo, para isso você pode usar o comando <br /> sudo -i. Para deslogar use ctrl +d <br /> <br /> $ sudo -i<br /> # crm<br /> # cib new conf-failover<br /> # configure<br /> # primitive failover-ip ocf:heartbeat:IPaddr2 params ip=192.168.10.62 cidr_netmask=24<br /> # property no-quorum-policy="ignore"<br /> # property stonith-enabled=false<br /> # end<br /> # cib commit conf-failover<br /> # quit <br /> Antes de iniciar esse novo passo, teste o ip virtual que você acabou de fazer. <br /> Utilize ping, tente acessar o banco de dados. Somente depois inicie o <br /> procedimento de integrar o HAProxy ao Pacemaker. <br /> <br /> # crm<br /> # cib new conf-haproxy<br /> # configure<br /> # property stonith-enabled=false<br /> # property no-quorum-policy=ignore<br /> # primitive haproxy lsb:haproxy op monitor interval="1s"<br /> # colocation haproxy-with-failover-ip inf: haproxy failover-ip<br /> # order haproxy-after-failover-ip mandatory: failover-ip haproxy<br /> # end<br /> # cib use live<br /> # cib commit conf-haproxy<br /> # quit <br /> <br /> <br /> Configuração HAProxy: <br /> Antes de iniciar as configurações do HAProxy vamos configurar o log, sempre util <br /> para debug. Precisamos acrescentar algumas informações no /etc/rsyslog.conf <br /> <br /> $ sudo vim /etc/rsyslog.conf <br /> Acrescente no final do arquivo: <br /> <br /> local0.* /var/log/haproxy.log<br /> local1.* /var/log/haproxy.log <br /> Edite o arquivo haproxy.cnf localizado em: /etc/haproxy/haproxy.cnf conforme <br /> indicação abaixo: <br /> <br /> $ vim /etc/haproxy/haproxy.cnf <br /> global<br /> log /dev/log<br /> log /dev/log<br /> user haproxy<br /> group haproxy<br /> daemon<br /> local0<br /> local1 notice<br /> defaults<br /> log global<br /> timeout connect 10s<br /> timeout client 1m<br /> timeout server 1m<br /> listen galera-cluster VIP_Address:PORTA<br /> mode tcp<br /> balance roundrobin<br /> server Galera01 192.168.10.61:3306 check<br /> server Galera02 192.168.10.42:3306 check<br /> server Galera03 192.168.10.44:3306 check <br /> Vamos testar o HAProxy? Utilizei um FOR para conectar 60 vezes seguidas no <br /> endereço de ip VIP e exibir o hostname cadastrado no banco de dados. <br /> <br /> <br /> Obs: Você só vai ter sucesso ao iniciar o serviço, no servidor que for titular do cluster!!! <br /> <br /> <br /> Digite o comando abaixo no terminal de alguma maquina que tenha acesso ao <br /> cluster. <br /> <br /> $ for i in `seq 1 60`; do mysql -h X.X.X.X -u root -prootroot -PPORTA -e "select @@wsrep_node_name;"; sleep 1; done <br /> <br /> <br /> Tão importante quanto construir um checklist é documentar as derrubadas. Nesse caso foram muitas então não pude deixar de anotar todas aqui. <br /> <br /> <br /> <br /> <br /> Troubleshooting: <br /> <br /> <br /> 1- Por algum fator totalmente fora do esperado você parou todos os bancos que <br /> compoem o MariaDB Galera Cluster. Pior, quando você tenta subir o serviço através <br /> do comando: /etc/init.d/mysql start não sobe? Então execute: <br /> <br /> $ sudo /etc/init.d/mysql start –wsrep_cluster_address="gcomm://" <br /> <br /> <br /> 2- Verificar nome do servidor que está rodando o mysql, logue no mysql(-uroot <br /> -prootroot) e digite: <br /> <br /> $ select @@wsrep_node_name; <br /> <br /> <br /> 3- Verifique quais servidores estão online e quais estão offline no cluster: <br /> <br /> $ sudo crm_mon --group-by-node –inactive <br /> <br /> <br /> 4- Deletar Resource do Pacemaker. Primeiro passo é stopar o recurso que deseja <br /> deletar, depois efetivamente deletar. <br /> <br /> $ sudo -i<br /> # crm<br /> # resource<br /> # stop XXXXX<br /> # end<br /> # configure<br /> # delete XXXX<br /> # quit <br /> 5- Migrar recurso para outro membro do cluster. Sintaxe do comando é: migrate <br /> NOME_DO_RECURSO NOME_DO_NÓ_DESTINO <br /> <br /> $ sudo -i<br /> # crm<br /> # resource<br /> # migrate failover-ip Galera02<br /> # quit <br /> <br /> <br /> 6- É possível usar broadcast ao inves de multicast para comunicação entre os nós <br /> do corosync. Faça a alteração no /etc/corosync/corosync.conf: <br /> <br /> # mcastaddr: 226.94.1.1<br /> broadcast: yes <br /> <br /> <br /> <br /> Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-12937060178293164422015-10-08T00:05:00.001-03:002021-01-01T18:30:18.706-03:00Python + Fluentd Da ultima vez escrevi sobre fluentd tive foco em ler o syslog do linux, interagi também com elasticsearch e kibana. Pois bem, dessa vez vou caminhar um pouco para um outro lado. Imagine você que existem aplicações em python na mesma instancia que monitoramos o syslog no post anterior. Qualquer semelhança é mera coincidência ;). Será que dá para ler também os logs dessa aplicação com fluentd?! <br /> <br /> <br /> Caso a aplicação em python seja o foco da maquina, então melhor ainda, pois vai ser possível obter dados de forma rápida de quantas vezes aconteceu algum determinado evento. Isso sem falar do indicativo em tempo real, em formato de histogram que é possível configurar no kibana. <br /> <br /> <br /> Estendendo ainda mais o assunto fluentd, afirmo que é possível fazer essa interação acontecer de uma forma muito fácil. Encontrei duas soluções para essa questão. Vou admitir que você já tem todo ambiente do fluentd com elasticsearch e kibana funcionando, caso não tenha <a href="https://www.blogger.com/#">leia isso antes</a>. <br /> <br /> <br /> Primeira solução - Fazer com que a aplicação envie os logs diretamente para o fluentd toda vez que ocorrer algum evento. Encontrei no <a href="https://www.blogger.com/#">docs.fluentd</a> um exemplo bem interessante que adaptei para mostrar aqui. <br /> <br /> <br /> Precisamos instalar o fluent-logger, utilize o repositório do pip para isso. Caso não tenha o pip instalado, então <a href="https://www.blogger.com/#">leia isso</a>. <br /> <br /> pip install fluent-logger <br /> Crie um arquivo de nome python.py e vamos escrever o seguinte nele. <br /> <br /> from fluent import sender<br /> from fluent import event<br /> sender.setup('mpdocs', host='10.0.2.15', port=24224)<br /> event.Event('follow', {<br /> 'from': 'userA',<br /> 'to': 'userB',<br /> 'host': '10.0.2.15',<br /> 'messagem': 'teste para post do mpdocs',<br /> 'ident': 'app1'<br /> })<br /> event.Event('follow', {<br /> 'from': 'userI',<br /> 'to': 'userP',<br /> 'host': '10.0.2.15',<br /> 'messagem': 'mpdocs.blogspot.com.br',<br /> 'ident': 'app2'<br /> })<br /> event.Event('follow', {<br /> 'from': 'userI',<br /> 'to': 'userP',<br /> 'host': '10.0.2.15',<br /> 'messagem': 'mpdocs.blogspot.com.br',<br /> 'ident': 'app2'<br /> })<br /> event.Event('follow', {<br /> 'from': 'Pedro',<br /> 'to': 'Zeus',<br /> 'host': '10.0.2.15',<br /> 'messagem': 'post sobre fluentd e python',<br /> 'ident': 'app50'<br /> }) <br /> Para que tudo funcione corretamente o td-agent(fluentd) precisa está configurado de acordo. Repare no codigo acima a porta e também onde está escrito mpdocs. O arquivo /etc/td-agent/td-agent.conf precisa estar configurado dessa forma: <br /> <br /> <source><br /> type forward<br /> port 24224<br /> </source><br /> <match mpdocs.**><br /> type elasticsearch<br /> flush_interval 10s<br /> </match> <br /> Agora é reiniciar o td-agent, para que o novo conf entre em ação e também executar o python. <br /> <br /> /etc/init.d/td-agent restart <br /> python python.py <br /> <a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUqww0Wre155fu_Mhf5sO-W6MJHmFp0IyI-QmDJKWCXG3xm_GP_xXkZ2pjOwFbcdVnYvZwivQcaV-igCvHPkx3H4hut3E608G7vwRvC8p7gFtsfGXHrSpUee5DKVmkJsNfKxg66cDP-3E/s320/fluent_python1.png" /></a> <br /> <br /> <br /> <br /> <br /> Segunda solução - Fazer a aplicação escrever o log no syslog do linux. Encontrei no <a href="https://www.blogger.com/#">docs.python</a> um exemplo simples que ajustei para demonstrar aqui. Recomendo também a leitura também do <a href="https://www.blogger.com/#">docs.fluentd</a>. <br /> <br /> <br /> Caso queira se aprofundar sobre facilidade do syslog e níveis de prioridade, recomendo a leitura do <a href="https://www.blogger.com/#">gnulinuxbr</a>. Em nosso exemplo, uso apenas LOCAL4 ao enviar a mensagem. <br /> <br /> import syslog<br /> syslog.syslog(syslog.LOG_LOCAL4, "mpdocs.blogspot.com.br") <br /> Já que vamos usar o syslog, é necessário indicar no arquivo /etc/rsyslog.conf a facilidade utilizada e também a url do fluentd. <br /> <br /> local4.* /var/log/app.python.log<br /> local4.* @10.0.2.15:42185 <br /> Já o arquivo /etc/td-agent/td-agent.conf, configurei da seguinte forma: <br /> <br /> <source><br /> type syslog<br /> port 42185<br /> tag syslog<br /> with_priority true<br /> </source><br /> <source><br /> type forward<br /> </source><br /> <match syslog.**><br /> type elasticsearch<br /> flush_interval 10s<br /> logstash_format true<br /> </match> <br /> Depois de ajustar tudo, não se esqueça de rodar o Elastisearch e o Fluentd. Confira abaixo como ficou o resultado. Diferente do primeiro exemplo, que fiz o filtro por ident e no script mudei para fazer um gráfico mais apresentável. No segundo exemplo criei apenas um python de teste e rodei algumas vezes alterando a mensagem.<br /> <br /> <br /> <a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZHXGlvL4HElSXrAZULQ3WAdt_BW5n4XnFsKBE-RXqtSC2bGx-r_Q1K6G_vNhjPbrf2yhdGjyIvIFkwyK4iOCY5Azbrsb8QZ2j276uJmWqGxtm1eDZD4gJ_IQUkP_fPpL1kjWaBndiDEU/s320/fluent_syslog.png" /></a> <br /> Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-8030189581964885782015-08-20T10:51:00.004-03:002021-01-01T18:31:19.216-03:00Fluentd + Elasticsearch + Kibana<div class="tr_bq" style="text-align: justify;">Algum tempo atrás escutei um amigo que foi ao Fisl desse ano falar que ficou impressionado com uma apresentação sobre fluentd. Ele até distribuiu o link com video da apresentação(que eu não achei tão boa assim, mas isso é um detalhe. hehehe).</div><div class="tr_bq" style="text-align: justify;"><br />
</div><div class="tr_bq" style="text-align: justify;">Para sorte desse tutorial comecei a pesquisar sobre a ferramenta antes de ver o video e foi assim que realmente me convenci que era boa. Fluentd é nada mais do que um coletor de dados, a ideia aqui é unificar a coleta para facilitar o entendimento depois. </div><div class="tr_bq" style="text-align: justify;"><br />
</div><div class="tr_bq" style="text-align: justify;">Percebi que a ferramenta mais conhecida nesse meio é o logstash, até encontrei alguns reviews comparando ele com o fluent. Não achei nada relevante, comum ler que o fluentd possui mais performance e o logstash tem uma interação melhor com sistemas operacionais Windows.<br />
<br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6yFWm8vH5nugGrbHGTb2mGIirdQ6KmyyJjuU7Gm-Lnv-ing9fWAK3wclxj3mOVMN33Ls3rHXp5RjmKEtsA5g9hWptvUAU2zhi0jlInzssU66aLYO0uLkcev8xuNPMlwegGmML805vYWo/s1600/Screen+Shot+2015-08-20+at+10.22.05.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="107" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6yFWm8vH5nugGrbHGTb2mGIirdQ6KmyyJjuU7Gm-Lnv-ing9fWAK3wclxj3mOVMN33Ls3rHXp5RjmKEtsA5g9hWptvUAU2zhi0jlInzssU66aLYO0uLkcev8xuNPMlwegGmML805vYWo/s640/Screen+Shot+2015-08-20+at+10.22.05.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div style="text-align: justify;">O desenho acima indica exatamente o que vamos montar, fluentd encarregado de alimentar o elasticsearch com logs e o papel do Kibana nesse ambiente é apenas exibir informações contidas no elasticsearch de forma muito fácil com uma interface incrivelmente amigável.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">É um pré-requisito para que você tenha sucesso com o tutorial que o java da maquina onde vai instalar esteja na versão igual ou superior a 1.6.0.45. Para verificar use o comando:</div><div style="text-align: justify;"><blockquote class="tr_bq">java -version</blockquote></div><div style="text-align: justify;">Testei essa solução em algumas distribuições, acho que vi o elasticsearch no repositório de alguma distribuição, não tenho certeza. De qualquer forma em todas usei a versão 0.90.0.RC2. Para baixar essa versão use o link abaixo:</div><div style="text-align: justify;"><blockquote>curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.0.RC2.tar.gz </blockquote></div><div style="text-align: justify;">Baixou? Então extraia o .tar.gz e vamos configurar. </div><div style="text-align: justify;"><blockquote>tar xvvf elasticsearch-0.90.0.RC2.tar.gz</blockquote></div><div style="text-align: justify;">Dentro da pasta config existe um arquivo chamado <i>elasticsearch.yml</i>, vamos descomentar a linha <i>network.bind_hosts</i> e por o endereço ip da maquina.</div><div style="text-align: justify;"><blockquote class="tr_bq">vim config/elasticsearch.yml </blockquote></div><div style="text-align: justify;">Por enquanto vamos deixar o elasticsearch desligado e vamos baixar o kibana.</div><div style="text-align: justify;"><blockquote class="tr_bq">curl -O https://download.elasticsearch.org/kibana/kibana/kibana-3.0.0milestone5.tar.gz</blockquote></div><div style="text-align: justify;">Assim que o download estiver concluído, extraia o .tar.gz e vamos editar o config.js para indicar o ip e porta do elasticsearch. O nome do campo é elasticsearch não tem erro.</div><div style="text-align: justify;"><blockquote class="tr_bq">vim kibana-3.0.0milestone5/config.js </blockquote></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Vamos em frente, agora precisamos <b><span style="background-color: white;"><a href="http://docs.fluentd.org/v0.12/categories/installation" target="_blank">instalar o Fluentd</a></span></b>, e é aqui que preciso que você execute um script correspondente com a sua distribuição. Esse script vai adicionar um repositório ao linux e baixar um pacote chamado td-agent. Abaixo, vou deixar um exemplo da url que usei no debian jessie.</div><div style="text-align: justify;"><blockquote>curl -L https://td-toolbelt.herokuapp.com/sh/install-debian-jessie-td-agent2.sh | sh </blockquote></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><u><b>Obs:</b></u> No Ubuntu esse script funcionou perfeitamente, já no debian eu precisei remover o sudo e rodar o script como root, em caso de duvidas veja o video desse post.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Para que o fluentd consiga interagir corretamente com o elasticsearch é necessário obter um plugin de nome: <i>fluent-plugin-elasticsearch</i>, execute o comando abaixo para baixa-lo.</div><div style="text-align: justify;"><blockquote>/usr/sbin/td-agent-gem install fluent-plugin-elasticsearch</blockquote></div><div style="text-align: justify;">Feito? Então agora edite o arquivo <i>td-agent.conf</i> e deixe ele exatamente assim:</div><div style="text-align: justify;"><blockquote class="tr_bq"><source><br />
type syslog<br />
port 42185<br />
tag syslog<br />
</source><br />
<source><br />
type forward<br />
</source><br />
<match syslog.**><br />
type elasticsearch<br />
logstash_format true<br />
flush_interval 10s # for testing<br />
</match></blockquote></div><div style="text-align: justify;">Agora inicie o serviço do fluentd.</div><div style="text-align: justify;"><blockquote class="tr_bq">/etc/init.d/td-agent start</blockquote></div><div style="text-align: justify;">Nosso objetivo aqui sempre foi ler os logs do linux, então vamos editar o rsyslog.conf e apontar que agora ele vai servir logs ao fluentd.</div><div style="text-align: justify;"><blockquote class="tr_bq">vim /etc/rsyslog</blockquote></div><div style="text-align: justify;">Na ultima linha do arquivo escreva:</div><div style="text-align: justify;"><blockquote>*.* @<b><i>IP_DO_FLUENTD</i></b>:42185</blockquote></div><div style="text-align: justify;">Reinicie o rsyslog e vamos iniciar o elasticsearch.</div><div style="text-align: justify;"><blockquote class="tr_bq">/etc/init.d/rsyslog restart </blockquote></div><div style="text-align: justify;">Para iniciar o elasticsearch acesse a pasta que você baixou e extraiu no inicio desse tutorial, vai existir uma subpasta de nome: <i>bin</i>. De dentro desta pasta execute:</div><div style="text-align: justify;"><blockquote class="tr_bq">sh elasticsearch -f& </blockquote></div><div style="text-align: justify;">Para tudo ficar perfeito, vamos precisar de um webserver, qualquer um e eu escolhi o nginx para me ajudar nessa causa. Instale um webserver no seu servidor e aponte para ler a pasta do kibana. No video que está nesse post tem um passo a passo.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Segue abaixo um printscreen do meu kibana de teste </div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx-xkOMDsT_-p0PwAOxFvazUsMeYJTZzeR2l6l4mtCnA47Qprj_4oLjMcMXBRhyeoIM7xLdiqC4XSmBu5Sn42nIzRmTPrV9LBOFVAYcCvrbN4bM6kfngU1eGw69TeYwGG9GHksIxEBAjI/s1600/Screen+Shot+2015-08-20+at+10.13.14.fw.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx-xkOMDsT_-p0PwAOxFvazUsMeYJTZzeR2l6l4mtCnA47Qprj_4oLjMcMXBRhyeoIM7xLdiqC4XSmBu5Sn42nIzRmTPrV9LBOFVAYcCvrbN4bM6kfngU1eGw69TeYwGG9GHksIxEBAjI/s320/Screen+Shot+2015-08-20+at+10.13.14.fw.png" width="320" /></a></div><div style="text-align: justify;"><br />
</div>Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-60602710889815065312015-08-15T14:28:00.002-03:002021-01-01T18:31:39.874-03:00Find, Casos de uso simples <a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh50Ilq6cLY6VlCVgCo_VBVcNHcfO601rGphF9bOVXveJARzPS9rxdvNdR5fMjxEuyDwgHVac3CJJpptPIpL6fWguNTZZCzVhGgu9yw0Y1QVgIGpB4cqHhuETIsVAfNqA95PavEzqdy2Rw/s200/keep-calm-and-bin-bash-3.png" /></a> <br /> <br /> <br /> O comando find no linux é um dos melhores jeitos de você encontrar arquivos. Ele não é o único comando com essa proposta, mas acredito que é o melhor. Arrisco dizer que explorar os recursos desse comando, permite você encontrar qualquer coisa no sistema operacional. <br /> <br /> O que despertou interesse pelo comando find, foi uma demanda recente de apagar arquivos que tivessem data de acesso superior a 30 dias em alguns determinados paths. <br /> <br /> <br /> Em um primeiro momento pensei em como listar esses arquivos, até rascunhei algo utilizando: ls -lu, mas logo mudei o pensamento e entendi que não resolveria acessando os diretórios e listando os arquivos, mas sim encontrando eles de forma recursiva dentro dos diretórios especificados. <br /> <br /> Pois bem, ai que entra o find: <br /> <br /> find $1 -type f -atime +30 -delete > /var/log/`date +%Y-%m-%d`.deletei_esses_arquivos.log <br /> $1 = Corresponde a qualquer coisa que você digite apos chamar o script. Admitindo que o script se chama: apagar.sh, então quando você digita: sh apagar.sh /home/pedro/arquivos, então o $1 corresponde ao path: /home/pedro/arquivos. <br /> <br /> <br /> -type f = Digo que a unica coisa que interessa são arquivos, poderia ainda fazer correlação com pastas e por -type d. <br /> <br /> <br /> -atime +30 = Data de acesso superior a 30 <br /> <br /> <br /> -delete = Deleta o que for encontrado <br /> <br /> <br /> > /var/log/`date +%Y-%m-%d`.deletei_esses_arquivos.log = Pego a saida do comando find e gero um arquivo de log chamado: deletei_esses_arquivos.log com a data de quando foi executado. <br /> <br /> <br /> Então quer dizer que o find só serve para isso? não! ;) <br /> Segue alguns outros exemplos: <br /> <br /> $ find /home/pedro -name *.py <br /> Pesquiso no diretório /home/pedro por qualquer coisa que tenha em seu nome .py. Ok, e se eu não souber se é .py ou .PY ?! Utilize -iname ao invés -name, dessa forma a busca não será mais case sensitive. <br /> <br /> $ find /home/pedro -maxdepth 2 -name *.py <br /> Admitindo que você é organizado e acredita que seus arquivos python estão a 2 niveis de diretorios para dentro da raiz /home/pedro. Então -maxdepth 2 é a solução, ele vai se aprofundar apenas o que você indicar. <br /> <br /> $ find /home/pedro -maxdepth 2 -not -name *.py <br /> E se você não quiser listar o .py? Vai que dentro da pasta cheia de .py tem apenas um único .js que você copiou sem querer e para piorar não lembra o nome, muito menos a extensão?! Ok, eu forcei muito a barra, mas é possível. :) argumento -not se encarrega disso. <br /> <br /> <br /> A ideia aqui não é construir o melhor tutorial de find da internet, é apenas mostrar um pouco do que o comando é capaz de fazer, confesso que eu não conhecia muito menos curtia muito o find, sempre optava por "updatedb" e em seguida "locate". Mas apos aquele caso de uso do inicio do post eu olho para esse poderoso comando com outros olhos. Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-73242200958095172242015-08-04T01:22:00.002-03:002021-01-01T18:32:26.054-03:00Synergy<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUIi_ODkBLHf3Hflxnpp6JfxeBJf-dLKE3_QR9J2ZGXxSmsjUntL0I_tFIiKh3PIYiFtgaSnLNcPDwMLYm7LVQUXXp8i71dckhwKVbmr5OJc1_KUaCa7qiG63jlr6GLyRkQxppoJjm9Wk/s1600/splash-en.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUIi_ODkBLHf3Hflxnpp6JfxeBJf-dLKE3_QR9J2ZGXxSmsjUntL0I_tFIiKh3PIYiFtgaSnLNcPDwMLYm7LVQUXXp8i71dckhwKVbmr5OJc1_KUaCa7qiG63jlr6GLyRkQxppoJjm9Wk/s320/splash-en.png" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Synergy é um software que já utilizo a algum tempo, ele é de uma simplicidade sem igual. A finalidade é conseguirmos utilizar o mesmo teclado e mouse em vários computadores diferente que estão na mesma rede.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Um ótimo caso de uso é você ter a sua estação de trabalho e mais alguma tela de monitoração por perto, lugar inclusive onde você consulta alguma informação com certa frequência. Nessa configuração o normal é existir um teclado e mouse extra(mesmo que sem fio que fique escondido) ou conexão RDP ou SSH para a monitoração.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Sempre usei o Synergy em ambientes linux, confesso que desconhecia a sua existência para OSX. De qualquer maneira a tela de configuração é exatamente igual. Vamos iniciar a configuração e tenho certeza que tudo vai ficar mais fácil :)
</div><div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Uma das maquinas precisa ser o servidor, lugar onde vamos configurar as demais telas e também lugar onde o teclado e mouse vão estar plugados permanentemente.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVXx8Oef_0hr2hPhhdZhG2x5ZYQ1Um-sMv4CMowqwQC8Ar3157Bevl1a0biPF9ufqgLbQEGdxH7AlbYHWfiHKrp7kJfGb3gRQvcOMPU1-4u20txBHqT7TfY_-U9Uqt3Nq9_mEoK7gqHVs/s1600/Screen_Shot_2015-08-04_at_00_32_31.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVXx8Oef_0hr2hPhhdZhG2x5ZYQ1Um-sMv4CMowqwQC8Ar3157Bevl1a0biPF9ufqgLbQEGdxH7AlbYHWfiHKrp7kJfGb3gRQvcOMPU1-4u20txBHqT7TfY_-U9Uqt3Nq9_mEoK7gqHVs/s320/Screen_Shot_2015-08-04_at_00_32_31.png" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
É possível proteger sua conexão através de senha, evitando assim que alguma outra pessoa possa se conectar no servidor. No meu caso, não utilizo, deixei o checkbox desmarcado.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuicowQir9RDbVnbgoHKyyAQhCYaY0ktr2AskSQnCztRvHiwur6UpCuOmQe7cjEWCVtCyRnQ0hjOo1MueBGF-oJ2oFz39NEvi5f3_7GM48PJh6NTYI2aILTj-_WTud0v46EWqaH7ZMcAc/s1600/Screen_Shot_2015-08-04_at_00_32_38.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuicowQir9RDbVnbgoHKyyAQhCYaY0ktr2AskSQnCztRvHiwur6UpCuOmQe7cjEWCVtCyRnQ0hjOo1MueBGF-oJ2oFz39NEvi5f3_7GM48PJh6NTYI2aILTj-_WTud0v46EWqaH7ZMcAc/s320/Screen_Shot_2015-08-04_at_00_32_38.png" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Através da opção "Configure Server" para indicar as telas que deseja utilizar com o Synergy.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5X3EGrMMPYQZo0g3bDlmgox_F8jF_u6LHtxFSCfJQBLj9mi2h-Z9FMjnkhUdi8khLhIyUpKJUVgFaZG4SPYbYTr52B3I8Kg8Xmx1K0fSVQXr_VeU_4UhVxV89RNOhQ9Fe58ebtBGun_k/s1600/Screen_Shot_2015-08-04_at_00_32_49.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5X3EGrMMPYQZo0g3bDlmgox_F8jF_u6LHtxFSCfJQBLj9mi2h-Z9FMjnkhUdi8khLhIyUpKJUVgFaZG4SPYbYTr52B3I8Kg8Xmx1K0fSVQXr_VeU_4UhVxV89RNOhQ9Fe58ebtBGun_k/s320/Screen_Shot_2015-08-04_at_00_32_49.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Para adicionar uma nova tela arraste o ícone do monitor. Importante lembrar que o nome W7 da imagem é apenas para organizar, você pode escrever qualquer coisa.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhE4v0NAHDgssXXtDwYRxhGY9cg5bEu2FIJTm92bxzBb6XgbQa0iyGSPIPQK1cgmnPxZu4Blyg9O2dF6ZFxismus9kLjosMZ_tQS7eWusj87g9rtNs137QWuOEzvDxmSUGDc5WS_iaSW4/s1600/Screen_Shot_2015-08-04_at_00_33_18.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="231" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhE4v0NAHDgssXXtDwYRxhGY9cg5bEu2FIJTm92bxzBb6XgbQa0iyGSPIPQK1cgmnPxZu4Blyg9O2dF6ZFxismus9kLjosMZ_tQS7eWusj87g9rtNs137QWuOEzvDxmSUGDc5WS_iaSW4/s320/Screen_Shot_2015-08-04_at_00_33_18.png" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Atenção pois o nome agora precisa ser exatamente o hostname da maquina que deseja utilizar.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2MUGEsWtmMxsmVacOWhXYmwSyJlYZ2QhCXV923tm_vSXImoFO5SjpByXid2f7RpMWUY9NaP3fiE-Xpovd-usL2OHZNaHG0hYFUbCsCSZ9JLTQLHgMA9TiwFIi5XC9_FSmvtS-UjID9qg/s1600/Screen_Shot_2015-08-04_at_00_33_14.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2MUGEsWtmMxsmVacOWhXYmwSyJlYZ2QhCXV923tm_vSXImoFO5SjpByXid2f7RpMWUY9NaP3fiE-Xpovd-usL2OHZNaHG0hYFUbCsCSZ9JLTQLHgMA9TiwFIi5XC9_FSmvtS-UjID9qg/s320/Screen_Shot_2015-08-04_at_00_33_14.png" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
Fácil não? Não sei como esse post ficou tantos meses na lista de rascunho do blog. Agora é iniciar o servidor e na maquina cliente ao indicar o ip do servidor. </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRk46gPHvXwm142T3r-0DvPE6moOx_R1-Mc35Z8-IFcKYQiQJHTjUAgoiPOvFxcoruYLqRXsZMJPzc0vZe3xhCUaXjlrS83ySLBhYggX-aSuhIVDgWtdqb4DqOiSljvSKPhW34pkSTUiY/s1600/Screen_Shot_2015-08-04_at_00_33_46.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="254" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRk46gPHvXwm142T3r-0DvPE6moOx_R1-Mc35Z8-IFcKYQiQJHTjUAgoiPOvFxcoruYLqRXsZMJPzc0vZe3xhCUaXjlrS83ySLBhYggX-aSuhIVDgWtdqb4DqOiSljvSKPhW34pkSTUiY/s320/Screen_Shot_2015-08-04_at_00_33_46.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-54821111879530234532015-07-30T11:07:00.001-03:002015-11-10T23:55:50.218-02:00Whowatch<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjboqsiBv8EVvmaIAf9wKCwzjMlTVwqQEmjojGMr21pQzB7nzhqgB5GTWh-JBUXjkwZuiAg-2-5QKmc0xSSR34FAcNr3HIVnErNWV5lY4bMRtQsgZu4cvoMvb35en7ECRCuyXHw8KMM8lc/s1600/Screenshot+from+2015-07-30+10_39_30.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjboqsiBv8EVvmaIAf9wKCwzjMlTVwqQEmjojGMr21pQzB7nzhqgB5GTWh-JBUXjkwZuiAg-2-5QKmc0xSSR34FAcNr3HIVnErNWV5lY4bMRtQsgZu4cvoMvb35en7ECRCuyXHw8KMM8lc/s320/Screenshot+from+2015-07-30+10_39_30.png" width="320" /></a></div>
<div style="text-align: left;">
</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Sabe aquele momento em que você pensa: "Vou fazer um post lá no blog sobre isso porque é interessante...?". Pois bem, essa semana me perguntei se havia alguma coisa que me indicasse usuario logados no sistema, meu acesso era via ssh, mas como dia foi corrido contornei de outra forma.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Quando encontrei aquele tempo, curto por sinal, para voltar a trabalhar em pendencias do blog. Percebi que haviam muitos tópicos em rascunho e alguns até mesmo sem nada escrito, peguei o mais antigo deles e adivinha...</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Whowatch é uma aplicação que facilita bastante saber quais são os usuários que estão logados, os processos que eles estão executando e também quanto de recurso eles estão consumindo do sistema operacional.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoloLmDwtKw-oHD9nQSOk5EaYfBfIVoULMthRKutbtcMpVTbWYzmZLNPs2MC20UNzm72pELfS4za_AILuGTqJqQgdg99WVlPsmTooS9YuK_BM-Pv-P1wKnCpNBbraDNzQ76k1ORvA5hqk/s1600/Screenshot+from+2015-07-30+10_33_44.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoloLmDwtKw-oHD9nQSOk5EaYfBfIVoULMthRKutbtcMpVTbWYzmZLNPs2MC20UNzm72pELfS4za_AILuGTqJqQgdg99WVlPsmTooS9YuK_BM-Pv-P1wKnCpNBbraDNzQ76k1ORvA5hqk/s320/Screenshot+from+2015-07-30+10_33_44.png" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Na imagem acima é possível perceber que existe duas sessões abertas com usuário root, uma delas é a interface gráfica, repare no indicativo tty7. Gdm é o responsável pelo login quando utilizamos interface gráfica gnome.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Nesta mesma tela é possível pressionar a tecla [i] e ela informa quanto tempo a sessão está aberta no sistema operacional. A tecla [s] informa o uso de memoria e cpu. </div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbuF0qXei7O-nuEQ9fivzIU_d-pAjvar-myhsFJgiEx6AFkj9KGCJi-i6rXKGOC01pijyewa5kA5FnNjxaBqZXhqSs5N5uWTusEpuSmNEGgVmiefOtc2hfV97uWZqrWC9z4B7MtPproqg/s1600/Screenshot+from+2015-07-30+10_35_15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbuF0qXei7O-nuEQ9fivzIU_d-pAjvar-myhsFJgiEx6AFkj9KGCJi-i6rXKGOC01pijyewa5kA5FnNjxaBqZXhqSs5N5uWTusEpuSmNEGgVmiefOtc2hfV97uWZqrWC9z4B7MtPproqg/s320/Screenshot+from+2015-07-30+10_35_15.png" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Quando selecionamos a sessão que vamos analisar, é possível logo no inicio saber quais processos estão ativos nela. reparem na imagem que o chromium está aberto no sistema operacional e certamente aparece na lista do whowatch. A imagem não mostra isso, mas ao pressionar a tecla [c] é possivel saber o path de cada processo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Em resumo whowatch é uma ótima ferramenta para debug. O que motivou minha busca por algo assim, foi ter tido problemas com varias sessões abertas no mesmo servidor, algumas vezes rodando a mesma aplicação. </div>
Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-87035635336773906092014-12-27T17:05:00.005-02:002021-01-01T18:35:37.386-03:00Auditoria de compartilhamento Samba Recentemente recebi uma newsletter onde um dos links ensinava a trabalhar com <a href="https://www.blogger.com/#">auditoria em windows server</a> e imediatamente pensei: "Deve existir alguma coisa igual ou próxima para linux, impossível que a comunidade do samba não tenha pensado nisso". Pois bem, existe :) e vamos configurar a seguir. <br /> <br /> Valido dizer que esse post vai sofrer update em breve, pois o ambiente de testes aqui é antigo. Acreditem, não é impossível achar em produção algo semelhante ao descrito abaixo. Próxima etapa vai ser estudar melhor o log e também montar tudo isso em um CentOS 7 c/ Samba 4x. <br /> <br /> Versão do Linux utilizado nesse post: CentOS 5.7 x86_64 <br /> Versão do Samba utilizado nesse post: 3.0.33-3.40.el5_10 <br /> <br /> Como saber a versão do sistema operacional? <br /> <br /> cat /etc/issue <br /> <br /> Como saber a versão do samba disponível para instalação? <br /> <br /> yum list samba <br /> <br /> Caso já esteja instalado, utilize: <br /> <br /> smbd -V <br /> <br /> Nesse tutorial vamos usar a lib full_audit, mas para conferir quais estão disponíveis para uso no seu ambiente, liste o diretório: /usr/lib64/samba/vfs. <br /> <br /> Então, o nosso ambiente está igual? Vamos começar, primeiro passo é configurar o smb.conf. Acrescentei as seguintes opções no compartilhamento a ser auditado: <br /> <br /> <br /> <br /><a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDQtp1U1GVaUDgYS_jmfyi00MN8oGkrLyr2CUK7ezm82WL2HWgCUGZrHHCW9TLv4ldj_A6XVE-p05tDmN2eafkkPlS6S-Ay359uGvMzAcch9UQ5FgzL47GgoG3oduceI4S_ckEtSlOfHY/s1600/full_audit_smb_conf.png" /></a> <br />smb.conf <br /> <br /> <br /> vfs objects = full_audit<br /> full_audit:success = open, opendir, write, rename, mkdir, rmdir<br /> full_audit:failure = open, opendri, write, rename, mkdir, rmdir<br /> full_audit:prefix = %u|%I|%S<br /> full_audit:facillity = local1<br /> full_audit:priority = info <br /> <br /> Explicando um pouco as opções escolhidas acima logo no inicio temos o modulo que foi carregado. Em seguida as operações que vamos auditar, mas atenção pois precisamos descrever se vamos auditar quando houver sucesso ou falha. É comum auditar apenas as operações bem sucedidas, mas para debug recomendo também ficar atento as falhas. <br /> <br /> Em seguida no prefix utilizei %u, que corresponde ao usuário que executou a operação, depois %I, ip do usuário e por fim %S que é o que foi acessado(pasta / arquivo / subpasta). As opções aqui são muitas, recomendo explorar os links que utilizei como base. <br /> <br /> Os dois campos seguintes estão relacionados a log e eu vou estudar melhor. Deixo aqui a dica de que é possível alterar a severidade do log, repare que acima optei por usar info. Mas é possível ainda utilizar: Emergência (Emerg), Alerta (Alert), Critico (crit), Erro (err/error), Aviso (warn), Aviso Prévio (notice), Informativo (info) e Debug (debug). <br /> <br /> Apos configurar o smb.conf reinicie o samba para que as configurações sejam aplicadas e vamos testar. <br /> <br /> <br /> <br /> /etc/init.d/smb restart <br /> A seguir deixo duas imagens que mostram um pouco do syslog(/var/log/message) informando as operações de criar pasta e renomear pasta. <br /> <br /> <br /> <br /><a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNl1biBPXx3A1fev0Qr1i4aTKrJN0tQlx2XEkfK5_pSUbIGhC6V8VblFFAYGUa_IwrNgooafacMd62sJNVcQKDhw2UPqi2EH8MC7USsv-XU7K8NDObd2KRazENvENVlW2aDBNjH6a5CFc/s1600/full_audit_create_folder.png" /></a> <br />Criei uma pasta e renomei para 'post sobre auditoria' <br /> <br /> <br /> <br /> <br /><a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjhvfvE-amT3MIVu3wO2lzYNi-QQNbjRW2Gg1_jFKwftt3iczhQ_dyyNWm5a0MItkvcpx_KJfcwI7hDyuuP6AH51tdwkSL1fWIWzJgPEAFygf4y-jyL4ed4RY7nL9YrGkxNUoDpZD9HGA/s1600/full_audit_rename_folder.png" /></a> <br />Criei uma pasta e renomei para 'post sobre auditoria' <br /> <br /> <br /> Pergunta: Então quer dizer que o percent %u do smb.conf indica usuário e na imagem está escrito 'nobody'? <br /> <br /> Resposta: Fica a dica para vocês repensarem o uso da opção 'map to guest = bad user' no smb.conf. Senão do que adianta auditar selecionando usuário. <br /> <br /> Solução: Um dos caminhos a seguir é criar usuário, é possível através do comando: adduser nome_usuario depois associar no samba, através do comando: smbpasswd -a nome_usuario. <br /> <br /> <br /> <br /><a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0gs5eoztT_9vzPK-cIgQchtR3PlXwIidNLO3lVeNfpFsLJqyyzj3MEx9m42kwT-FmhvmyP5mh5uY1ijQjUQu6BXgGaJm191BFmZqiR_XaXR2LO31uiBmqesRBJqscmVujRBVZEXU8TCE/s1600/full_audit_user.png" /></a> <br />Morte ao 'nobody' :) Vamos identificar usuários! <br /> <br /> <br /> Tenho certeza que é possível fazer mais do que o descrito aqui. Eu mesmo quero testar em um ambiente mais atual e entender melhor logs. Por hora deixo aqui mais essa dica. <br /> <br /> <br /> Referencia: <br /> <br /> Link1 - http://www.samba.org/samba/docs/man/manpages-3/vfs_full_audit.8.html <br /> Link2 - http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html#FULL_AUDIT:PREFIX <br /> <br /> <br /> Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-89673999215123093942014-12-07T17:22:00.004-02:002017-09-13T22:22:23.366-03:00Convertendo ebook epub para mobi<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRWNQ6MP8O8xwf6W_IntXafab50D1u2wK92FHt2mAdCEG5l97yFW4z0R16MUFpk_eOYlJCJqiALhx3h9G-UMF8tAWluRougycVcHnBoAR0v-vaHtEV9zAhnu70p2V0HKZvs66joyLfKTk/s1600/ebook3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRWNQ6MP8O8xwf6W_IntXafab50D1u2wK92FHt2mAdCEG5l97yFW4z0R16MUFpk_eOYlJCJqiALhx3h9G-UMF8tAWluRougycVcHnBoAR0v-vaHtEV9zAhnu70p2V0HKZvs66joyLfKTk/s320/ebook3.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
<div style="text-align: justify;">
<span style="font-family: inherit;">Quando resolvi gastar um tempo anotando as coisas em um blog foi pensando que eu precisava ter os tutoriais e checklists que usava com mais frequencia sempre por perto. Dropbox resolve isso correto? Mas e cade a graça de poder compartilhar os documentos? Então resolvi escrever em um blog, sem qualquer compromisso de escrever X coisas por mês ou propagandas ou ainda só falar disso porque aquilo eu não gosto. Enfim.... O que tudo isso tem haver com ebook? vamos parar com blablabla e entrar no assunto.</span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Nesse final de semana precisei converter ebook formato acsm/epub para mobi, aquele formato do amazon kindle. Não é algo de outro mundo executar os procedimentos de conversão, mas como não tenho um kindle, fiz atendendo um pedido. Certamente não vou lembrar do assunto daqui algum tempo.</span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Antes de qualquer coisa peço que leiam sobre DRM e entendam que não vamos burlar isso. Muito pelo contrario para que a conversão ocorra será necessário preencher o id do seu kindle no plugin do software utilizado para conversão.</span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">O que motivou a pesquisa sobre conversão foi que ganhamos um livro em um formato epub que não é lido naturalmente pelo kindle primeiro modelo, aquele com botões. De repente, não sei dizer, o modelo paperwhite consiga ler naturalmente, sem a necessidade desses procedimentos. </span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><b>Tenha em mãos<span style="font-family: inherit;">:</span></b></span></div>
<ol style="text-align: justify;">
<li><span style="font-family: inherit;"><b>Software calibre</b>, pode ser adquirido através do link: http://calibre-ebook.com/download</span></li>
<li><span style="font-family: inherit;"><b>Pack de plugins do calibre</b>, link: http://epubee.com/download/tools_v5.0.zip</span></li>
<li><span style="font-family: inherit;"><b>Software Adobe Digital Editions 4.0</b><i>(talvez existam outras versões, a que utilizei foi esta)</i></span></li>
</ol>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Apos instalar o adobe digital editions repare que agora o formato do ebook já conhecido pelo sistema operacional, abra e com botão direito localize a pasta onde o arquivo .epub está. No meu caso utilizo um mac, isso não quer dizer que não funcione no windows.</span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><span style="font-family: inherit;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwDk-2T4wlv7sd9Os07pvSDatmyPFJNZJFyTHZJwV5fYEmG0NV96e0n4A6l5VIE4PwIAZG1dRvDWkSxI8HyftKj1fb1j-GMQl60nUnL2tzHDCs4nuF_1_YB_oakauXGkI-cNllfrOYf00/s1600/adobe_digital_editions.png" imageanchor="1" rel="lightbox" style="margin-left: auto; margin-right: auto;"><img border="0" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwDk-2T4wlv7sd9Os07pvSDatmyPFJNZJFyTHZJwV5fYEmG0NV96e0n4A6l5VIE4PwIAZG1dRvDWkSxI8HyftKj1fb1j-GMQl60nUnL2tzHDCs4nuF_1_YB_oakauXGkI-cNllfrOYf00/s1600/adobe_digital_editions.png" width="320" /></a></span></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: inherit;">Adobe Digital Editons, selecionando arquivo epub</span></td></tr>
</tbody></table>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Agora com o arquivo epub em mãos, abra o calibre e vá em preferencias, depois menu plugins. Repare que é possível adicionar plugins nesta tela. Adicione todos os plugins do pacote listado aqui no post. zip mesmo, não precisa extrair para adicionar.</span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><span style="font-family: inherit;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVud9AvIZNT6oi8nrZKs0NMuZP4GAYpNhbHCh4CkVHibOF6YL4FBsalu0o0bApsi2Ed18lHkz0S4FoYuxNdfVKZ6tUSV3wqYKu7vYbWalqIUwv9k-kSnpOjNE_edXSHDrjsqKroRM_zcY/s1600/plugins_add_calibre.png" imageanchor="1" rel="lightbox" style="margin-left: auto; margin-right: auto;"><img border="0" height="224" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVud9AvIZNT6oi8nrZKs0NMuZP4GAYpNhbHCh4CkVHibOF6YL4FBsalu0o0bApsi2Ed18lHkz0S4FoYuxNdfVKZ6tUSV3wqYKu7vYbWalqIUwv9k-kSnpOjNE_edXSHDrjsqKroRM_zcY/s1600/plugins_add_calibre.png" width="320" /></a></span></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: inherit;">Tela de plugins do calibre. Adicione um a partir de um arquivo.</span></td></tr>
</tbody></table>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Adicionou todos? precisamos ajustar uma configuração em um deles. Lembra que no inicio avisei que era necessário informar o serial number do kindle. Conforme a imagem abaixo, selecione o plugin e utilizando a opção <i>customize plugins</i> informe o serial do kindle.</span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><span style="font-family: inherit;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6EV7PRCI8G9CP9arK0mTT__fQSlDgtEzoKKZovuhE6nKBqU7b3B3hRo7GT10pmV4dxtVuRTUw6W_36xgYpBFj9It6nrZ6rWvg45ULY68e5wbMuMTiz-AmsCOk2EopoUM_Zl3yI5LvceI/s1600/id_kindle_plugin.png" imageanchor="1" rel="lightbox" style="margin-left: auto; margin-right: auto;"><img border="0" height="294" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6EV7PRCI8G9CP9arK0mTT__fQSlDgtEzoKKZovuhE6nKBqU7b3B3hRo7GT10pmV4dxtVuRTUw6W_36xgYpBFj9It6nrZ6rWvg45ULY68e5wbMuMTiz-AmsCOk2EopoUM_Zl3yI5LvceI/s1600/id_kindle_plugin.png" width="320" /></a></span></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: inherit;">Informe o serial do kindle neste plugin, do contrario a conversão não vai ocorrer.</span></td></tr>
</tbody></table>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Considero o tutorial 90% concluido, porque os outros três passos são: selecionar o ebook, converter e jogar para o kindle. Tudo isso vamos fazer na primeira tela do calibre, utilize o botão da interface para adicionar o ebook que pretende converter. Depois com botão direito selecione converter.</span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><span style="font-family: inherit;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVIGrfyBKo5BuC-ecPN4e7pbQRdO6-IYOxsoNPqdOdF3VbJd353tb_woIoWQ48lVQMTF0s7qLjY950zRL286FdfWdwb50wlL2ljVjSxvXOqJZKMWcuTnVSPyxwxHiV9rFqhDt-0Kl1VoA/s1600/conveter_ebook_kindle.png" imageanchor="1" rel="lightbox" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVIGrfyBKo5BuC-ecPN4e7pbQRdO6-IYOxsoNPqdOdF3VbJd353tb_woIoWQ48lVQMTF0s7qLjY950zRL286FdfWdwb50wlL2ljVjSxvXOqJZKMWcuTnVSPyxwxHiV9rFqhDt-0Kl1VoA/s1600/conveter_ebook_kindle.png" width="320" /></a></span></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: inherit;">Selecione o ebook e clique em converter</span></td></tr>
</tbody></table>
<div style="text-align: justify;">
<span style="font-family: inherit;">Passo seguinte é escolher o formato de saida do ebook. Escolhi mobi porque é o que o kindle, primeiro modelo aceita. Recentemente tive um feedback que ebooks com muitos graficos não são bem convertidos. Não foi o nosso caso, o livro convertido é simples, possui apenas textos.</span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><span style="font-family: inherit;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMi0_mI90p1-VIFr_LAO4WJaNCFG_iJkxQ54Ohic8npEL7yH8usPoEpA7ljily-NHL7u_bXyeeD1CIv0ShqS__TiXIVYntzcWTI1VSm9eKjHGqZ4ehoDbRa1Zhl6jimy0CCEsdv5Wc79s/s1600/formato_ebook_calibre.png" rel="lightbox" style="margin-left: auto; margin-right: auto;"><img border="0" height="182" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMi0_mI90p1-VIFr_LAO4WJaNCFG_iJkxQ54Ohic8npEL7yH8usPoEpA7ljily-NHL7u_bXyeeD1CIv0ShqS__TiXIVYntzcWTI1VSm9eKjHGqZ4ehoDbRa1Zhl6jimy0CCEsdv5Wc79s/s1600/formato_ebook_calibre.png" width="320" /></a></span></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: inherit;">Selecione o formato de saida, utilizei mobi porque o kindle aceita esse.</span></td></tr>
</tbody></table>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">O passo seguinte que é enviar para o kindle, pode ser executado com menu do botão direito, repare que existe uma opção <i>send to device</i>. Não <span style="font-family: inherit;">estou com</span> um kindle aqui comigo agora, então vou ficar d<span style="font-family: inherit;">evendo </span><span style="font-family: inherit;">esse</span> ultimo print. Afinal o menu não vai es<span style="font-family: inherit;">tar habilitado sem o d<span style="font-family: inherit;">evice conecta<span style="font-family: inherit;">do ao computador.</span></span></span> Mas<span style="font-family: inherit;"> foi exatamente isso,</span> utilize<span style="font-family: inherit;">i <span style="font-family: inherit;">o</span> menu que indiquei acima<span style="font-family: inherit;"> para gravar no kindle</span></span>.</span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span></div>
Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-82554955414684051132014-11-10T21:25:00.004-02:002021-01-01T18:37:03.054-03:00Rsync, caso de uso simples <a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif_Vp_iH9xWbjU5ENIdMSgSYbOdYHzhAFHh8e_KD98azVZfZmg0V41DAg78W0fGb3CnMLWiR48C2MLdr-fwvziptQrS6ZvgQEoq7zhxV76k1gvnPBBy8luds1Fmq2WFan2wKon5hstPc4/s1600/newrsynclogo.jpg" /></a> <br /> A ideia de escrever esse post surgiu a partir da necessidade recente de sincronizar storages com muitos arquivos que são atualizados com uma frequência alta. Ou seja eu faço um primeiro rsync e até que realmente consiga realizar meu objetivo, ainda executo o comando uma segunda ou terceira vez para certificar que todos os dados foram copiados. <br /> <br /> Meu cenário são dois servidores linux rodando CentOS 5.7 x86-64, mas já deixo claro que o comando e os parâmetros que vou apresentar adiante podem ser usados em qualquer outra distribuição. <br /> <br /> rsync -r -p --progress --ignore-existing --delete /path/origem root@ip_destino:/path/destino <br /> <br /> Explicando o comando acima, o parâmetro -r é para copiar material recursivo dentro das subpastas. --progress, exibe o progresso da copia, individual por arquivo. -p preserva as permissões da pasta de origem. <br /> <br /> --delete, atenção neste parâmetro, ele deleta o arquivo do destino igualando completamente com a origem. Por ex: Temos pasta 1, pasta 2 e pasta 3. Caso eu já tenha feito um primeiro rsync e venha por algum motivo apagar a pasta 2 da origem, quando eu rodar novamente o comando a pasta 2 será deletada do destino. <br /> <br /> --ignore-existing, faz a copia de arquivos baseado em seu tamanho, ignora a data de modificação. Isso é bom até certo ponto. Caso você consiga escrever dados na origem que não aumentaram o tamanho do arquivo, um segundo ou terceiro rsync não vai fazer update do arquivo no destino. <br /> <br /> O manual padrão do linux é muito completo, man rsync já permite compreender muito sobre a ferramenta. Que alias possui muito mais opções do que as listadas por mim neste post. Caso não tenha um terminal proximo, acesse: http://www.samba.org/ftp/rsync/rsync.html e leia sobre. Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-4930453754075118532014-05-04T23:13:00.001-03:002021-01-01T18:38:07.349-03:00Esqueceu a senha root? <br /> <br /> <br /> <a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3hn5DwJ2_zjxACtq5s6X-OHl_NxM3N9Zpd1643XUU9NVWXL1DhPigi2mM56_zaBt5sMke8zWqHlTDqPXHSJGSIvE54Aqns8bzqaY8z8HRefLuAbP0DELUI35zxCasvN4oIaK11KHApVQ/s200/RESET-PASSWORD2.png" /></a> Recentemente uma colega no trabalho esqueceu a senha de root de um Ubuntu 12.04, gastamos tempo com alguns tutoriais que não funcionaram, até que de repente conseguimos organizar esse passo a passo. <br /> <br /> Primeiramente reinicie a máquina pressionando a tecla SHIFT durante o boot para que seja exibido o menu do Grub. Selecione a versão de Kernel que você está usando e pressione a tecla "e". No final da linha linux /boot/vmlinux-x.x.xx(...) $vt_handoff adicione o conteúdo abaixo: <br /> <br /> <br /> rw init=/bin/bash <br /> Após isso tecle F10 e será aberto um terminal, então digite: <br /> <br /> mount -o remount,rw / <br /> mount -a <br /> mount <br /> <br /> Feito isso, edite o /etc/shadow <br /> <br /> vi /etc/shadow <br /> Apague o conteúdo que estiver no segundo campo depois de root: root:$1$fmdlkdjslj¨5$rdgd:14693:0:99999:7::: deixe assim: root::14693:0:99999:7::: salve o arquivo. <br /> <br /> Digite: <br /> <br /> sync <br /> umount -a <br /> mount -o remount,ro / <br /> <br /> Pressione CTRL+ALT+DEL para reiniciar. Após o reboot do sistema abra um terminal e se logue como root (sem senha, é claro): <br /> <br /> su <br /> passwd root <br /> :) Nova senha definida, agora é evitar esquecer de novo. <br /> Atenção com o tutorial, nunca executei em outra distribuição, acho que funciona, mas nunca testei. Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-57525623815378440102014-03-19T13:19:00.001-03:002021-01-01T18:38:44.287-03:00SmoothSec - Uma Suite de Segurança com visualização simples<br /> Instalação <br /> <br /> <br /> Faça o Download da imagem <br /> http://sourceforge.net/projects/smoothsec/ <br /> <br /> <br /> Converta o arquivo para ISO <br /> <br /> <br /> Execute o boot através da imagem, serão necessários 3 (três) interfaces de rede. 1 Para administração dos Sensores e as outras deverão estar alocadas na rede a ser monitorada, uma com o Snort e outra com o Suricata. <br /> <br /> <br /> Aparecerá a tela abaixo selecione a opção Install.<br /> <br /> <img src="https://lh3.googleusercontent.com/j_FHm9fVgKYWFrx8Rv-BOZJWgx99-iZOKKvdP-2lEhOYH4SWHxWmchBhN5ODrIQCs0TQfbZe-1ias7Y_YS8GMdd6gT36VJ104fBFy97VyFVD2TX3687RConDssLepA" /> <br /> <br /> <br /> Selecione a opção de idioma “Portuguese (Brazil)”. <br /> <a href="https://www.blogger.com/#"><img border="0" src="https://lh4.googleusercontent.com/V3cWwophfhn016rCuU6kBEirsUpD_nfYcE10ezz0nxD-P1cjRLyxmoyRJ_FQ8L13_tIWiQJ8ZGHh4Wu7iljWs74MQF-ChtNlVtfrc1puQlYsl2nGFmGddZovNKbIng" /></a> <br /> <br />Configurações de localidade “Brasil”.<img src="https://lh3.googleusercontent.com/p_ue990vqz7Oa66JzjnGjarYGNFAKJwMLQDudyVC2khV6nLkweovWaD136FHfipwXlwiF70YwlKrv13WrEMdBWtTzDP1k3TFuPcG3eeHDptbLJhTuzMilB0reIF0_Q" /> <br /> <br /> <br /> <br /> Configuração de teclado “Português Brasileiro”. Após esta seleção serão carregados e instalados alguns pacotes, aguarde a próxima intervenção.<img src="https://lh5.googleusercontent.com/3Iw7nzHhhMUGdgdsvsYncpTcDIGZqp4t8JDqcTSo8fIfV9PaU9F5ftjonrxHnT7pqXGXScSnHtbCuvL0Ln_7oVvrUrq3JDWK4D7ZR5L-1y2vVpSgo5AFE6RNW54YMw" /> <br /> <br />Configuração de Rede: Coloque o Nome do Servidor, Configure o Domínio e Selecione o Disco Rígido. Aguarde os processos terminarem e a próxima intervenção. <br /> <br /><img src="https://lh6.googleusercontent.com/R8PUm6YAe8NggaOxkgXV2iH1fups93hVtj-rV47hJeuPBYh0hbuYb9TCOjX-XHIdpMx_2o_iu0faT0-tRz13OSooZZWHK5buWFngZ_28ap-ZNo8faRFcjo48FFsiRg" /><br /><img src="https://lh5.googleusercontent.com/Ub0RwxDACG5pymgUdwa3HSo3rlXLG5cJ6ye-_p4DNbg8RfyL0166s4d7VzhDXhqo8iTfPs7LUD572DDDtd_mcd45t8R18RS5tVK85ZbKi-P9CK7i4kYlR5D7vU1Xug" /> <br /> <br /> <br /> <br /> <br /> Aceite o indicativo automático das configurações de disco. Finalize o particionamento. <br /> <img src="https://lh3.googleusercontent.com/PNIbQFwp2vxNHHvevOkX4mR5uN2eVcHscF_blUhW30Mp2BO5j_kM7GnZCPJ2GhCqnUXEgCMDxIbsWqRNojZZ4z20MX8MsAiidDmcn3p3swGqe6S58bgMwI-HMftEEA" /><br />Aceite as modificações na Participação de Disco. <br /> <img src="https://lh6.googleusercontent.com/8VsQ5feXKczIxvHV7Cq6iz4u_pZ7qlpPUiosPttvRO-E0OX2z_hUebmochzYvuLb_tS_QcbiHwkTvJMTsQ3vabVQYJ7S5T3BZ-Xab0U9saZwVE-2PqKzwg92z13oUQ" /><br />Configure de rede para atualização do sistema caso não seja necessário será executada uma instalação netinst com o S.O. básico. <br /> <img src="https://lh3.googleusercontent.com/24kewsp7h3bATDq2NMcxB3O0SIElLdSghPVAG9T6yrV11LH1fe4FP2Kc62BqN_uk5uJ-F5NQsggUyrMfUkcJsbtlAg7Eq8Kbd4xnY9L2G_I_cq5Y-hCdZ0qMxvXBBg" /><br />Instale o Grub e finalize a instalação com o reboot automático.<img src="https://lh4.googleusercontent.com/sXHXIt9pWhUZNiuCBimVXSF8D-qlZb-dVTV_uS10qcxIy8-DV9JdD5ZUvzb8WhOe2GCjxSHHdlOIPCuqnV_x_fx4r4mmSsslnSAqyoDbvEZ7QGrD7RBNTkSxF9LygQ" /> <br /> <br /> <br /> <img src="https://lh3.googleusercontent.com/ePpB-pqQLbFMX0xPA061KR9_QR4eGiurwi9NrVF-yytOd6uyRiBokwQ4gsPfyzvbL7QqltDqPqtkQh7D3N6XIE0q8tuAXXCIRn9iT04j8J8gh9i7EBhdxDrRmckxiQ" /> <br /> <br /> <br /> <br /> <br /> Configuração <br /> <br /> <br /> Login: root <br /> Senha: toor <br /> <br /> <br /> Acesse as configurações de rede através do VI e configure as três placas de rede. <br /> 1- Gerenciamento <br /> 2- IDS /IPS <br /> 3- IDS/IPS <br /> <br /> <br /> Acesse : <br /> <br /> <br /> # vi /etc/rc.local <br /> <br /> <br /> Acima da linha “exit 0” digite os parâmetros abaixo: <br /> <br /> <br /> ifconfig eth1 up <br /> <br /> ifconfig eth2 up <br /> <br /><img src="https://lh4.googleusercontent.com/OSTHamx1dhBlJp9CxOfEWHiyN37KMel5zKz5X9x6dB4AoDA87qMKDz89lt29Ya2kYDAiL9u8laCos1luoBr2P8CymnQXJ5zZ2heaL-6wp6KSRM9R4S21Ow3ow3aeeA" />Execute o script: <br /> <br /> <br /> <br /> <br /> root@smoothsec:~# smoothsec.first.setup <br /> <br /> <br /> Selecione a opção “ips-standard”. <br /> <br /><img src="https://lh3.googleusercontent.com/mnDLxO28G4lW-K7o7LN8f-pYwDKQ2Iww8SBgs0g8Kt_bHz4c1ChZuZNunSvucXFAwpavZb9FH30zR8QPMF1K2btP4RI23ZmhzXmR8gLUlCRfT6UjJ3oNtsGoveAaeg" /><br /> <br /> Troque a senha de root, Crie um nome de uusário e senha para a instalação do Smooth-Sec <br /> <br /> <br /> <img src="https://lh3.googleusercontent.com/DZpVxtqK02qxDFg5dBnmNhRMDKzVTYdlBkgVBf85hj_xIZkzgJhew_UcrIPLeyfRlsizOF03-eGH3DUzv51b9kc4cySpXHd9m6PY4vKqfLFlEGCN4FzgvEZK4ycg9Q" /> <br /> <br /> <br /><img src="https://lh5.googleusercontent.com/KSJ_-cE2PfAG_BLrJFpHqbcLPG9ZMiYywvfHgJqC355Cl5BUMW0O-cH23JrsuYcRSKi9VBId5ZP_puNDkkDQsTtiJgk81MSVEKGvA3vXeiOR5FNOh9nOt4l8MtUFIQ" /> <br /> <br /> Verifique as configurações de IP/Rede e salve.<br /> <br /> <img src="https://lh5.googleusercontent.com/d-cc8hrY4Lr9NhDr5GfsGvYGwZlSRwJrmhRAPRer5XfmObNS1mRg7sm4GuyqkliqnBWZPQ1iR_lZWpD0M5CLnwLJNwthGYOQelZprGU1o3cSL7Yqidg8FOo_WuL63A" /> <br /> <br />Insira um endereço de email para o Snorby e uma senha para este email. <br /> <br /> <br /> <img src="https://lh4.googleusercontent.com/NlqBSOjpzyAskkn5KcdUsvVTma9k5vudmn8ysjAglWjFpes1To9AAiMjp2kPHwTbYMiEaXdl3xalh8qtfoRphaOSohrJU7mo5gcxNdds2zfa-G7bxKC5D6gJbAGSJw" /><img src="https://lh3.googleusercontent.com/-5NoQsuCDUeUfbnAuN71av5Z9OW1vmElLpaMi-2NtEAhBjAnMjAuo_xYw-gvyGdu0CPNq3bNqqxw6dZiyIURr14n4juwAeNyAG2Pvs2SwhvYQdB16QDOOfNWJJE4AA" /> <br /> <br /> <br /> <br /> Será executada a finalização da instalação do Snorby.<br /> <img src="https://lh6.googleusercontent.com/mTTxhPNRQ9b4FK-z-6UgzxuyM22kUI7YwE7DbXZJGEkanalOK72VhTeFq60utvOFpV60OXppcsr-vgsJSxnN7FQcEilgI-LpJoTCTBLsU74usLOij-VoumePr20wqg" /> <br /> <br />Observe as informações de Acesso para os variados métodos e execute um reboot conforme indicado. <br /> <br /> <br /> <img src="https://lh3.googleusercontent.com/GQyVhGSzf0NTSDWX68I9NUS51J_FeY3v5LAJxbD0fja3lZF2hVQa0b0wMyUB97gxFro2XY-pPP_5PpUzsoR9e5dab8wlCVN9uS_dISN6bgI3NBpnoNQd0u2PlQ2slg" /><br /> <br /> Acesse o IP via navegador com o login e senha criado anteriormente. Após acessar aparecerá a página abaixo: <br /> <br /> <br /> <img src="https://lh6.googleusercontent.com/BiicRx-k0p3ymtbCluUlaCpfSqI95_OUDl04GWlz0Whw8L4k1LNUHlvhfCaOnG0VZf7w1dsEZU2jEFiHGe0vDm2zlQl4Ttjmu5vbcsCA6BhgsfOSQLx-AhdrOusKmQ" /> <br /> Unknownnoreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-86664568858123009662014-01-17T11:37:00.001-02:002021-01-01T18:39:31.541-03:00Monitorando Host através de comportamento via OSSEC <br /> <a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBOwDlv6z-XgqPIyrkwvP7G9YckVLsP1u6qfXCWY9b6OSl5Qyl-M6uJ4hBO96UzhcT4fxa422v2cbNr9jGbIxXpaTuMO5SQkl3StozS6z-KdRQaglLNAiR4BdjbIMs3nnNbQCIR609-Og/s320/ossec-hids.png" /></a> <br /> Introdução <br /> <br /> OSSEC é um sistema livre, de código aberto baseado em host de detecção de intrusão (HIDS). Realiza a análise de log, checagem de integridade, monitoramento do registro do Windows, detecção de rootkit, alerta baseado em tempo, e a resposta ativa. Ele fornece detecção de intrusão para a maioria dos sistemas operacionais, incluindo Linux, OpenBSD, FreeBSD, Mac OS X, Solaris e Windows. OSSEC tem uma arquitetura multi-plataforma centralizada permitindo que vários sistemas que podem ser facilmente monitorados e gerenciados. <br /> <br /> <br /> O HIDS agregam uma série de vantagens por exemplo, podem impedir que ataques resultem em danos. Se um arquivo malicioso tentar reescrever um arquivo, o HID pode limitar seus privilégios e colocá-lo em quarentena. Os HIDs podem proteger notebooks ao serem retirados de uma rede e levados para o campo. Em última análise, os HIDs são uma ferramenta de "última linha de defesa", utilizada para repelir os ataques não detectados pelo NID.<br /> <br /> Instalação <br /> <br /> <br /> Faça o Download da VM no site oficial <br /> <br /> <br /> <br /> <br /> wget http://www.ossec.net/files/ossec-virtual-appliance.tar.gz <br /> <br /> <br /> Após o download finalizado descomprima a pasta: <br /> <br /> <br /> <br /> <br /> tar -zxvf ossec_virtual_appliance.tar.gz <br /> Acesse e verifique se os arquivos estão dentro da pasta abaixo: <br /> <br /> <br /> <br /> <br /> cd ossec_virtual_appliance/ <br /> <br /> <br /> Execute o procedimento de importação padrão de VM para o hypervisor utilizado no local de implantação. <br /> <br /> <br /> Inicie a VM <br /> <br /> <br /> Login e Senha padrão para a utilização: <br /> <br /> <br /> <br /> <br /> Login: USER / ROOT / OSSEC Web UI e phpMyAdmin <br /> Senha: _0ssec_ <br /> <br /> <br /> Acesse o servidor como Root e altere a placa de rede para as configurações da rede interna. <br /> <br /> <br /> Verifique se a plataforma web está funcional, acesse pelo browser o caminho abaixo: <br /> <br /> <br /> <br /> <br /> http://ip_do_servidor/ossec-wui/ <br /> <br /> <br /> Login: user <br /> Senha: _0ssec_ <br /> <br /> <br /> Ao conseguir acessar a plataforma web teremos a confirmação que o Servidor foi instalado corretamente. <br /> <br /> <br /> <br /> Instalação do Agente HIDS em Linux <br /> <br /> <br /> apt-get -y install build-essentials <br /> <br /> cd /usr/src <br /> wget http://www.ossec.net/files/ossec-hids-2.7.tar.gz <br /> <br /> <br /> Descompacte o arquivo após o download finalizado: <br /> <br /> <br /> tar -xzvf ossec-hids-2.7.tar.gz <br /> <br /> cd ./ossec-hids-2.7 <br /> <br /> <br /> Execute a instalação: <br /> <br /> <br /> /bin/bash ./install.sh <br /> <br /> <br /> Escolha o idioma: <br /> <br /> <br /> br <br /> Informações do sistema serão mostradas em tela, confirme com o “Enter”. <br /> <br /> <br /> <br /> Selecione o tipo de instalação: <br /> <br /> <br /> Agente ou Cliente <br /> Escolha o diretório da instalação e confirme com o “Enter”: <br /> <br /> <br /> /var/ossec <br /> Configure o IP do servidor do OSSEC: <br /> <br /> <br /> IP do Servidor <br /> Confirme a opção de avaliação de Integridade: <br /> <br /> <br /> y <br /> Confirme a opção de Detecção de Rootkit: <br /> <br /> <br /> y <br /> Confirme a opção de Resposta Ativa(Active-Response) <br /> <br /> <br /> y <br /> Aguarde a instalação terminar e reinicie o agente: <br /> <br /> <br /> /var/ossec/bin/ossec-control stop <br /> <br /> <br /> /var/ossec/bin/ossec-control start <br /> Acesse o controle para a importação da chave: <br /> <br /> <br /> /var/ossec/bin/manage_agents <br /> Selecione a opção de Importar: <br /> <br /> <br /> I <br /> <br /> <br /> <br /> Acesse o servidor, abra um terminal e execute os comandos abaixo como root: <br /> <br /> <br /> /var/ossec/bin/manage_agents <br /> <br /> <br /> Adicione o agente: <br /> <br /> <br /> <br /> <br /> A <br /> <br /> <br /> Insira o IP do Servidor do agente instalado: <br /> <br /> <br /> <br /> <br /> IP_do_Agente <br /> <br /> <br /> Selecione um ID para o agente remoto: (O software irá indicar o próximo ID disponível, caso o administrador exclua um agente o ID de referência ficará inutilizado. <br /> <br /> <br /> <br /> Extraia a chave para o Agente adicionado: <br /> <br /> <br /> <br /> <br /> E <br /> <br /> <br /> Aparecerá a lista de agentes, selecione o ID e copie a saída da chave. <br /> <br /> <br /> <br /> <br /> No Servidor Linux que o agente foi instalado <br /> <br /> <br /> Cole a chave copiada do servidor, será solicitada a confirmação das informações como abaixo: <br /> <br /> <br /> <br /> <br /> ### Informação do Agente <br /> ### ID: <br /> ### Nome: <br /> ### Endereço de IP: <br /> <br /> <br /> Confirme a adição do agente: <br /> <br /> <br /> <br /> <br /> y <br /> <br /> <br /> Reinicie os agentes do servidor e do cliente com o comando abaixo como “root”. <br /> <br /> <br /> <br /> <br /> /var/ossec/bin/ossec-control stop <br /> <br /> <br /> /var/ossec/bin/ossec-control start <br /> Instalação do Agente HIDS em Windows<br /> <br /> <br /> <br /> Faça o Download do arquivo abaixo no Windows a ser monitorado: <br /> <br /> <br /> <br /> <br /> http://www.ossec.net/files/ossec-agent-win32-2.7.1.exe <br />Execute o arquivo como administrador; <br />Aceite a licença; <br />Confirme todos os componentes; <br />Confirme o caminho da instalação; <br />Ao finalizar selecione a opção executar o agente. <br /> <br /> <br /> Acesse o servidor, abra um terminal e execute os comandos abaixo como root: <br /> <br /> <br /> <br /> <br /> /var/ossec/bin/manage_agents <br /> <br /> <br /> Adicione o agente: <br /> <br /> <br /> <br /> <br /> A <br /> <br /> <br /> Insira o IP do Servidor do agente instalado: <br /> <br /> <br /> <br /> <br /> IP_do_Agente <br /> <br /> <br /> Selecione um ID para o agente remoto: (O software irá indicar o próximo ID disponível, caso o administrador exclua um agente o ID de referência ficará inutilizado. <br /> <br /> <br /> <br /> Extraia a chave para o Agente adicionado: <br /> <br /> <br /> <br /> <br /> E <br /> <br /> <br /> Aparecerá a lista de agentes, selecione o ID e copie a saída da chave. <br /> <br /> <br /> <br /> <br /> No Servidor Windows que o agente foi instalado <br /> <br /> <br />Insira o IP do servidor OSSEC e copie a chave na caixa adequada. <br />Verifique e Confirme as informações da chave importada. <br />Acesse na barra de ferramentas “”View” e a opção “View Config” <br /> <br /> <br /> Modifique a tag conforme abaixo: <br /> <br /> <br /> <br /> <active-response> <br /> <disabled>yes<disabled> <br /> </active-response> Unknownnoreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-22803155842997026742014-01-15T13:09:00.004-02:002021-01-01T18:40:23.076-03:00Monitorix Monitorix é mais uma opção de monitoração para linux. Talvez não seja a mais completa. Interface simples e muito objetiva, não tive dificuldades em entender os gráficos e as informações monitoradas. <br /> <br /> Instalar, pelo menos no Ubuntu, não foi tarefa complicada. Muito pelo contrario, instalação sem mistérios ou pegadinhas. Personalizei alguns itens, como por ex: default é monitorar a interface eth0, aqui no meu desktop utilizo a wlan0. Esses e outros ajustes não precisei recorrer a manual ou qualquer coisa para achar e ajustar. <br /> <br /> Ainda sobre a instalação, entendo que estou online e utilizei o repositório do 'Monitorix Project', mesmo assim no site do projeto tem muita informação e inclusive a listagem de dependências caso a instalação seja offline. Percebi que é possível instalar em CentOS, Debian e muitas outras distribuições. <br /> <br /> Instalação:<br /> <br /> <br /> <br /> vim /etc/apt/sources.list Adicione o repositorio para ubuntu do monitorix ao final do arquivo source.list. <br /> <br /> deb http://apt.izzysoft.de/ubuntu generic universe <br /> Feito isso, vamos até o terminal para adicionar a chave necessária para utilização do repositório e também atualizar os repositórios locais, para então instalar o monitorix e suas dependências. <br /> sudo wget http://apt.izzysoft.de/izzysoft.asc<br /> sudo apt-key add izzysoft.asc Mais informações: http://apt.izzysoft.de/ubuntu/dists/generic/ <br /> <br /> sudo apt-get update <br /> sudo apt-get install rrdtool perl libwww-perl libmailtools-perl libmime-lite-perl librrds-perl libdbi-perl libxml-simple-perl libhttp-server-simple-perl libconfig-general-perl <br /> sudo apt-get install monitorix <br /> Após a instalação concluida, vamos iniciar o serviço e utilizar.<br /> <br /> service monitorix start <br /> Serviço rodando, abra o navegador e digite: http://localhost:8080/monitorix. O resultado deve ser exatamente a tela abaixo. Que na minha opinião é autoexplicativa, nela é possível selecionar o dispositivo ou serviço e o período. <br /> <br /> <br /> <a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3gpFVc67I98DlXpJBKzIvEyOXE_rsw-Ts55VvfvR_3Hz2DTXesxpC74pWG1hslzgEQgnaPcAgDNpQu23Gx1tptFaafQmNetB5MskN5UWknCiDWtqcV2ZnVHV8ITaC375nyXbFYkoJnJM/s320/Screenshot+from+2014-01-15+12:31:37.png" /></a> <br /> Quando instalei o serviço pela primeira vez percebi que a interface padrão a ser monitorada é a eth0, percebi também que ele monitora apenas alguns discos. Estes e quaisquer outros ajustes devem ser feito no arquivo: /etc/monitorix.conf<br /> <br /> <br /> Outro detalhe que precisei ajustar foi na visualização remota dos graficos. Para isso recorri ao FAQ do Monitorix, link: http://www.monitorix.org/faq.html#Q303 que informa que devemos editar o arquivo /etc/apache2/conf.d/monitorix.conf (no caso do CentOS este arquivo está em outro diretorio, leia o FAQ) e alterar o parametro allow from 127.0.0.1 para allow from all. <br /> <br /> A imagem abaixo mostra algumas informações do meu desktop e principalmente aquele ajuste da interface de rede. <br /> <br /> <br /> <a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiXi8aTobQ9NkOdF1_OUzEDjVvCKvMB6pLYXtax0MMVmX3cchoK7tGF-LJJwjXSSO_gVg8NWBtW_jnad0PLD66A_DBUPXCjfNsy8K8MXFsks9nFDDyM065csXg2GRJ3VfFsyBcCNCu6Xg/s320/Screenshot+from+2014-01-15+13:07:22.png" /></a> Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-16901079809402043492013-09-05T15:00:00.001-03:002021-01-01T18:41:04.939-03:00nbr2mp4 - ARF para MP4 <a href="https://www.blogger.com/#"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRR0-NDY9ExtuEd_S9bcgnx5R2IRQnHxp3y4dikGr77o0Ib0zO1rmzjFMYMY4TDtCz7qa1VPwcgdNj0inh_gbREvfYpkGcdVcnoQWWGQpWV1eQ3GwMrmG1Fk52xyGZRtZoyuXTOJ22a5g/s200/Cisco-webex-logo.png" /></a> <br /> <br /> Esse post nasceu através de uma necessidade bastante simples, gosto de assistir o Quinta as Quinze da Cisco e tive dificuldades para assistir no linux. Até então via os vídeos em um macbook e não tinha qualquer problema. <br /> <br /> Quem acompanha sabe que a Cisco disponibiliza o player apenas para o sistema operacional da maça e das janelas, para os amantes do pinguim é preciso converter o ARF para MP4. Essa tarefa não é das difíceis quando conhecemos o NBR2MP4. <br /> Os pre requisitos para que o NBR2MP4 funcione corretamente são:<br /> <br />Linux OS: 32-bit Ubuntu, Fedora, Red Hat RHEL WS 5 e openSUSE 10.3/11.1 <br />CPU: Intel x86 ou compatível <br />RAM: Mínimo 1GB <br /> Obs: Não tive sucesso para converter video com uma cpu amd. Talvez tenha sido erro meu, ainda não tive oportunidade de testar novamente. <br /> Download do<a href="https://www.blogger.com/#"> NBR2MP4</a><br /> <br /> tar -xvf nbr2mp4.tar ./ Depois de extrair, torne o nbr2mp4.sh um executável<br /> <br /> chmod +x ./nbr2mp4.sh Execute e siga os passos da instalação<br /> <br /> ./nbr2mp4.sh Acesse a pasta e vamos iniciar o processo de conversão.<br /> <br /> cd nbr2_mp4 Quando for executar o NBR2MP4 lembre-se de usar a seguinte sintaxe: <br /> <br /> ./nbr2mp4 ORIGEM_ARF DESTINO_MP4 FPS <br /> Caso você não informe o destino e o FPS por padrão o arquivo convertido vai ficar na mesma pasta e o FPS vai ser 5. <br /> Referencia:<br /> http://www.webex.com.br/support/downloads.html Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-4689621974649992862013-08-23T22:47:00.000-03:002017-09-13T22:12:31.975-03:00Análise de Vulnerabilidades com o OpenVas em 12 passosBom amigos...<br />
<br />
Segue mais um material de Segurança Open Source de forma fácil e descomplicada...<br />
<br />
Essa semana fui abordado sobre o Nessus...eis um dilema "Nessus ser ou não ser...", sinceramente o OpenVas atende as espectativas inclusive devido as novidades de Abril/2013 em diante. Sua nova forma de atualização e o recurso de compartilhamento de informações da comunidade de segurança mantém este antigo <b>"Fork" </b>no mínimo ao lado do Nessus...Em breve convidarei meu amigo Eduardo Miranda e Cauan Guimarães e publicaremos um artigo comparativo sobre esses softwares.<br />
<br />
Curtam o post e aproveitem com moderação!!! Qualquer dúvida<br />
<br />
<h2>
O que é o OpenVas?</h2>
<div>
<br /></div>
<div style="text-align: justify;">
<span style="background-color: white; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px;">O OpenVAS (Open Vulnerability Assessment System) é um scanner de segurança de redes com um cliente em interface gráfica. O núcleo é composto por um servidor que realiza um teste de vulnerabilidade na rede (NVTs) para detecção de problema de segurança em aplicações e sistemas remotos.</span></div>
<div style="text-align: justify;">
<span style="background-color: white; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px;"><br /></span></div>
<div>
<div style="text-align: center;">
<span style="background-color: white; font-size: 14px; line-height: 21px;"><span style="color: #555555; font-family: Helvetica, Arial, sans-serif;"></span></span><br /></div>
<div style="text-align: justify;">
<span style="background-color: white; font-size: 14px; line-height: 21px;"><span style="color: #555555; font-family: Helvetica, Arial, sans-serif;">O OpenVAS é uma estrutura de vários serviços e ferramentas que oferecem uma solução de gerenciamento de vulnerabilidade abrangente e poderosa.</span></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px; text-align: justify;">
<span style="background-color: white;"><br /></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px; text-align: justify;">
<span style="background-color: white;">O seu atual scanner é atualizado diariamente com informações de mais de 30 mil NVTs (desde de abril de 2013).</span></div>
<span style="background-color: white;">
</span>
<br />
<div style="color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px; text-align: justify;">
<span style="background-color: white;"><br /></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px; text-align: justify;">
<span style="background-color: white;">Todos os produtos são Openvas são Softwares Livres. A maioria dos componentes licenciados sob a GNU General Public License (GNU GPL).</span></div>
<span style="background-color: white;">
</span>
<br />
<div style="color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px; text-align: justify;">
<span style="background-color: white;"><br /></span></div>
<span style="background-color: white;">
</span>
<br />
<div class="separator" style="clear: both; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px; text-align: center;">
<span style="background-color: white;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcVN6K4M2djGhS0cx2lihwdNR5i4Wt7aMZMG1tWIuZ78YSGkcXJkaEJC7eb_qucLkCzsYcSiejLWgT3UjlaIb_0z5gr0-klRAKxZWQbzSLltU7MOtDeoWNXyH28Pd8cedbhW32fxPBYLO8/s1600/OpenVAS4-Structure.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="337" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcVN6K4M2djGhS0cx2lihwdNR5i4Wt7aMZMG1tWIuZ78YSGkcXJkaEJC7eb_qucLkCzsYcSiejLWgT3UjlaIb_0z5gr0-klRAKxZWQbzSLltU7MOtDeoWNXyH28Pd8cedbhW32fxPBYLO8/s640/OpenVAS4-Structure.jpeg" width="640" /></a></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px; text-align: justify;">
<span style="background-color: white;"><br /></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px; text-align: justify;">
<span style="background-color: white;"><br /></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px; text-align: justify;">
<span style="background-color: white;"><br /></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px; text-align: justify;">
<span style="background-color: white;">Essa versão contempla os aspectos abaixo:</span></div>
<span style="background-color: white;">
</span>
<br />
<div style="color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px; text-align: justify;">
<span style="background-color: white;"><br /></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="text-align: justify;">
<ul style="color: #333333; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: normal; text-align: left;"><span style="background-color: white;">
<li>OpenVAS Scanner</li>
<ul>
<li>Maior quantidade de hosts pesquisados ao mesmo tempo</li>
<li>Protocolo de Transferência OpenVAS (OTP)</li>
<li>Suporte SSL para OTP (sempre)</li>
<li>Suporte WMI (opicional</li>
</ul>
</span></ul>
<div style="text-align: left;">
<span style="background-color: white;"><span style="color: #333333; font-family: arial, helvetica, sans-serif; font-size: x-small;"><br /></span></span></div>
<ul style="color: #333333; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: normal; text-align: left;"><span style="background-color: white;">
<li>OpenVAS Manager</li>
<ul>
<li>Protocolo de Gerenciamento OpenVAS (OMP)</li>
<li>Banco SQL (sqlite) para configurações e resultados do Scanner</li>
<li>Suporte SSL para OMP (sempre)</li>
<li>Maior quantidade de Scanners ao mesmo tempo (OpenVAS Scanners)</li>
<li>Comentários gerenciais sobre os resultados dos scanners</li>
<li>Gerenciamento de Falso Positivo nos resultados do Scanner</li>
<li>Scanner agendado</li>
<li>Relatórios Flexiveis </li>
<li>Stop, Pause e Resumo durante o Scanner</li>
</ul>
</span></ul>
<div style="text-align: left;">
<span style="background-color: white;"><span style="color: #333333; font-family: arial, helvetica, sans-serif; font-size: x-small;"><br /></span></span></div>
<ul style="color: #333333; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: normal; text-align: left;"><span style="background-color: white;">
<li>Greenbone Security Assistant (GSA)</li>
<ul>
<li>Client for OMP and OAP</li>
<li>HTTP and HTTPS</li>
<li>Entre outros...</li>
</ul>
</span></ul>
<div style="text-align: left;">
<span style="background-color: white;"><span style="color: #333333; font-family: arial, helvetica, sans-serif; font-size: x-small;"><br /></span></span></div>
<h2 style="text-align: center;">
<span style="background-color: white;">
<span style="color: #333333; font-family: arial, helvetica, sans-serif; font-size: large;">Agora vamos a parte boa...como instalar o OpenVas e brincar com ele? </span></span></h2>
<div style="text-align: center;">
<span style="background-color: white;"><span style="color: #333333; font-family: arial, helvetica, sans-serif; font-size: large;"># Debian</span></span></div>
<div>
<span style="background-color: white;"><span style="color: #333333; font-family: arial, helvetica, sans-serif; font-size: large;"><br /></span></span></div>
<h2>
<span style="background-color: white;">
<span style="color: #333333; font-family: arial, helvetica, sans-serif; font-size: x-small;">Muito simples siga os passos abaixo e seja feliz...</span></span></h2>
<div>
<span style="background-color: white;"><span style="font-family: inherit;">1 # Adicione o repositório do OpenVas no Debian Wheezy</span></span></div>
<div>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"><span style="background-color: white;"><b><span style="font-family: inherit;">
</span></b></span></pre>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"><span style="background-color: white;"><b><span style="font-family: inherit;">echo "deb <a href="http://download.opensuse.org/repositories/security:/OpenVAS:/UNSTABLE:/v6/Debian_7.0/" target="_blank">http://download.opensuse.org/<wbr></wbr>repositories/security:/<wbr></wbr>OpenVAS:/UNSTABLE:/v6/Debian_<wbr></wbr>7.0/</a> ./" >> /etc/apt/sources.list</span></b></span></pre>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"></pre>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"></pre>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"></pre>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"></pre>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"></pre>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"><span style="background-color: white;"><span style="font-family: inherit;">
</span></span></pre>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"><span style="background-color: white;"><span style="font-family: inherit;">2 # Add a chave</span></span></pre>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"></pre>
</div>
<div>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"><span style="background-color: white;"><b><span style="font-family: inherit;">
</span></b></span></pre>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"><span style="background-color: white;"><b><span style="font-family: inherit;">wget <a href="http://download.opensuse.org/repositories/security:/OpenVAS:/UNSTABLE:/v6/Debian_7.0/Release.keyapt-key" target="_blank">http://download.opensuse.org/<wbr></wbr>repositories/security:/<wbr></wbr>OpenVAS:/UNSTABLE:/v6/Debian_<wbr></wbr>7.0/Release.key</a></span></b></span></pre>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"></pre>
<pre style="color: #222222; text-align: start; white-space: pre-wrap;"><pre style="white-space: pre-wrap;"><span style="background-color: white;"><b><span style="font-family: inherit;"><a href="http://download.opensuse.org/repositories/security:/OpenVAS:/UNSTABLE:/v6/Debian_7.0/Release.keyapt-key" target="_blank">apt-key</a> add ./Release.key
</span></b></span></pre>
<span style="background-color: white;"><span style="font-family: inherit;">
</span><div>
<span style="font-family: inherit;">3 # Faça o update </span></div>
<div>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">sudo apt-get update
</span></b></pre>
</div>
<div>
<span style="font-family: inherit;">4 # Agora vamos para o OpenVas:</span></div>
<span style="font-family: inherit;">
</span><div>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">apt-get install greenbone-security-assistant openvas-cli openvas-manager openvas-scanner openvas-administrator sqlite3 xsltproc rsync</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;"> </span></b></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;"># Pacote para geração de Relatórios...</span></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;"> </span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">apt-get -y install texlive-latex-base texlive-latex-extra texlive-latex-recommended htmldoc </span></b></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">
</span></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">5 # Instale o Suporte para autogeração de Certificados locais para rede...muuuuito importante este item, facilita a recepção dos pacotes de teste...</span></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">apt-get install alien rpm nsis fakeroot
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
</span></b></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">6 # Iniciando o OpenVas</span></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">test -e /var/lib/openvas/CA/cacert.pem || openvas-mkcert -q</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
openvas-nvt-sync</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
test -e /var/lib/openvas/users/om || openvas-mkcert-client -n om -i</span></b></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">
</span></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">7 # Pare os serviços</span></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">/etc/init.d/openvas-manager stop</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
/etc/init.d/openvas-scanner stop
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">openvassd
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">openvasmd --rebuild
</span></b></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">
</span></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">8 # Atualize o OpenVas</span></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">openvas-scapdata-sync
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
</span></b></pre>
<pre style="white-space: pre-wrap;"><b style="font-family: inherit;">openvas-certdata-sync</b></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">
</span></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">9 # Crie o Usuário e Senha</span></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">test -e /var/lib/openvas/users/admin || openvasad -c add_user -n admin -r Admin
</span></b></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">
</span></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">10 # Derrube o Scanner</span></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
</span></b></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;"><b>killall openvassd</b>
</span></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">
</span></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">11 # Execute os comandos abaixo:</span></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">sleep 15
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">/etc/init.d/openvas-scanner start
/etc/init.d/openvas-manager start
/etc/init.d/openvas-<wbr></wbr>administrator restart
/etc/init.d/greenbone-<wbr></wbr>security-assistant restart</span></b></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">
</span></pre>
<pre style="white-space: pre-wrap;"><span style="font-family: inherit;">12 # Seja Feliz com moderação...</span></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">
</span></b></pre>
<pre style="white-space: pre-wrap;"><b><span style="font-family: inherit;">Abra no navegador: http://localhost:9392</span></b></pre>
</div>
<div>
<h2 style="text-align: center;">
Que a força da Engenharia Reversa esteja com vocês! :)</h2>
</div>
</span></pre>
</div>
<ul style="color: #333333; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: normal; text-align: left;"><ul><span style="background-color: white;">
</span></ul>
<span style="background-color: white;">
</span></ul>
</div>
<span style="background-color: white;">
</span></div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-6813899706640617530.post-12838306371659391932013-08-05T04:49:00.000-03:002017-09-13T22:18:06.167-03:00MySQL Cluster<div style="text-align: justify;">
Antes de iniciar este post gostaria de informar que a tarefa aqui é apenas levantar o ambiente da imagem1. Não vou entrar nos detalhes sobre funcionalidades de cada serviço, deixarei este assunto para um próximo post.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfW0Uz79o3Rpq1-b2WZsL2EmBoJq43hQnBZ6wTHGWnglyhxiGB2OJuSzcc74_3-QmuHixQrULiOGlLAas2hD3bxIXsieniLhErL6N3MMSijAuhDSSnne-asfnXoV_etwLh7F6u7u4O1wk/s1600/img1.png" imageanchor="1" rel="lightbox" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfW0Uz79o3Rpq1-b2WZsL2EmBoJq43hQnBZ6wTHGWnglyhxiGB2OJuSzcc74_3-QmuHixQrULiOGlLAas2hD3bxIXsieniLhErL6N3MMSijAuhDSSnne-asfnXoV_etwLh7F6u7u4O1wk/s320/img1.png" width="320" /></a></div>
<br />
<br />
<div style="text-align: justify;">
Instalei os pacotes <a href="https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/MySQL-Cluster-client-gpl-7.3.2-1.rhel5.x86_64.rpm/from/http://cdn.mysql.com/" target="_blank">MySQL-Cluster-client-gpl-7.3.2.1.rhel5.x86_64.rpm</a> e <a href="https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/MySQL-Cluster-server-gpl-7.3.2-1.rhel5.x86_64.rpm/from/http://cdn.mysql.com/" target="_blank">MySQL-Cluster-embedded-gpl-7.3.2.1.rhel5.x86_64.rpm</a> em todos os servidores. A diferença está apenas na função que cada um vai assumir para o cluster funcionar.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
No servidor de gerenciamento, configurei apenas o serviço <i>ndb_mgmd</i>. Em alguns rápidos testes, percebi que o cluster não funciona caso ele não esteja rodando! </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
O seu principal arquivo de configuração é o <i>config.ini</i> que no caso do CentOS 5.7 64bits está localizado em <i>/usr/mysql-cluster/config.ini</i>. A imagem abaixo descreve como configurei.</div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXaN-OMG2_35KFU8sYRmg-A6wudNnvNh_wPw-6L2u2q2ikKjJNfBo8RJllFszakNwCJ5loe0KqCl19i5RF96n1BnC0Lbq1TpcmEhM14WS0M1bOxUi494ixnwIU2odRPMNYckN6Rdi32HA/s1600/img2.png" imageanchor="1" rel="lightbox" style="margin-left: auto; margin-right: auto;"><img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXaN-OMG2_35KFU8sYRmg-A6wudNnvNh_wPw-6L2u2q2ikKjJNfBo8RJllFszakNwCJ5loe0KqCl19i5RF96n1BnC0Lbq1TpcmEhM14WS0M1bOxUi494ixnwIU2odRPMNYckN6Rdi32HA/s320/img2.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
<div style="text-align: justify;">
Depois de configurado, vamos iniciá-lo, para isso digite: <i>ndb_mgm</i> no terminal. O ndb_mgm informa quantos servidores estão conectados, assim como também a versão do mysql utilizada em cada servidor. Digite: <i>ndb_mgm -e show </i>e confira. </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnQSsWKz0Gfe7j6BaRsF6uIHq6zRd-xmQNihCr8TsHBtDds3ao8DRX3yi0PVSvL4C27xME130gR0sS9iU5UXkbcri048UyNAZSbS5OrzagWAepjv614NWjvzaDVwBFNM170xpSLkXQMdE/s1600/img3.png" imageanchor="1" rel="lightbox" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="201" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnQSsWKz0Gfe7j6BaRsF6uIHq6zRd-xmQNihCr8TsHBtDds3ao8DRX3yi0PVSvL4C27xME130gR0sS9iU5UXkbcri048UyNAZSbS5OrzagWAepjv614NWjvzaDVwBFNM170xpSLkXQMdE/s320/img3.png" width="320" /></a></div>
<br />
<div style="text-align: justify;">
No servidor de banco de dados, após instalarmos os dois pacotes listados no inicio deste post, devemos configurar o arquivo <i>my.cnf</i> localizado por default no CentOS em /usr/my.cnf.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Gostaria de abrir um parênteses, porque como usuário do debian e suas derivações, estava acostumado com o arquivo my.cnf em outro diretório. Esta foi inclusive uma grande dificuldade que enfrentei durante o processo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
É preciso informar dois parâmetros adicionais na tag <i>[mysqld]</i> e criarmos as tags <i>[mysql-cluster]</i> e <i>[ndb]</i>. Como podem reparar, como este ambiente é apenas de teste, o my.cnf não possui nenhuma outra configuração.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvp85SvQOTXZV2MBz3s_vFS5-sz7DETNRry34ZKt5eWAATxAVuk68l62F_YhWRuxzlfPrDGwKEyw9f3s-ifFkegXw-Y8OeUI3eAVUcjTSzE9WxaQOCuqL8D-pBdfjlfO448VNqYYhE2JE/s1600/img4.png" imageanchor="1" rel="lightbox" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="201" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvp85SvQOTXZV2MBz3s_vFS5-sz7DETNRry34ZKt5eWAATxAVuk68l62F_YhWRuxzlfPrDGwKEyw9f3s-ifFkegXw-Y8OeUI3eAVUcjTSzE9WxaQOCuqL8D-pBdfjlfO448VNqYYhE2JE/s320/img4.png" width="320" /></a></div>
<br />
<div style="text-align: justify;">
Importante lembrar que os passos acima relacionados ao servidor de banco de dados 1, devem ser repetidos para o banco de dados 2. Feito isso, devemos iniciar os serviços: <i>ndbd</i> e <i>MySQL</i> em ambos os bancos de dados.</div>
<blockquote class="tr_bq">
ndbd -c 10.0.2.120</blockquote>
<blockquote class="tr_bq">
/etc/init.d/mysql start --ndbcluster</blockquote>
<br />
<div style="text-align: justify;">
O servidor que roda o <i>ndb_mgm</i> deve identificar as conexões, como mostra a imagem abaixo.</div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrBDQT7UDLttfppRIlTUdEXXp9SWoA8cHu8WhTMBpb1zpo-sv9-fIztkm6rwMvXxIXH8FCHREbs9BV9ffzy7hhAW-SErkmUt9xldUPbJ0P5iFWBgUc0Ncl43NS6aIbOspLLtKl-19jIUU/s1600/2+%28another+copy%29.png" rel="lightbox" style="margin-left: auto; margin-right: auto;"><img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrBDQT7UDLttfppRIlTUdEXXp9SWoA8cHu8WhTMBpb1zpo-sv9-fIztkm6rwMvXxIXH8FCHREbs9BV9ffzy7hhAW-SErkmUt9xldUPbJ0P5iFWBgUc0Ncl43NS6aIbOspLLtKl-19jIUU/s320/2+(another+copy).png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Apos iniciar os serviços, este deve ser o resultado!</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR6oTW17F8Aq2cR17go7_S2rCI20z4S0UNW6RwKzpmIGAU0yGsPQ5XFO98dK2-eTMP0kGDGXDE4A_IQ_CaL4poQz5lJwNAr_YxiJl2K4tCQEXvtIG4HzqygwszJu6fYkTKeUIdoQ_JKVE/s1600/2+%2528copy%2529.png" imageanchor="1" rel="lightbox" style="margin-left: auto; margin-right: auto;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR6oTW17F8Aq2cR17go7_S2rCI20z4S0UNW6RwKzpmIGAU0yGsPQ5XFO98dK2-eTMP0kGDGXDE4A_IQ_CaL4poQz5lJwNAr_YxiJl2K4tCQEXvtIG4HzqygwszJu6fYkTKeUIdoQ_JKVE/s320/2+%2528copy%2529.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Curiosidade: Reparem nas informações do conky(direita)</i></td></tr>
</tbody></table>
<br />
<div style="text-align: justify;">
Quando os ndbd's e os mysql's estiverem rodando, vá até o servidor de banco de dados e crie um banco utilizando o engine: ndbcluster. Reparou que este banco foi automaticamente replicado no segundo servidor? agora crie as tabelas e comece a utilizar!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Muito importante informar que apenas os bancos de dados cujo a engine for <i>ndbcluster</i> vão ser replicados. Não consegui fazer funcionar utilizando innoDB, MyISAM ou qualquer outro.</div>
<div style="text-align: justify;">
<i><br />
</i> Entendo que este post poderia ter mais detalhes! não tem porque ainda estou fazendo testes nesse ambiente. Optei por escrever apenas para documentar alguns passos.</div>
<br />
<br />
<u>Referencias:</u><br />
<br />
https://dev.mysql.com/downloads/cluster/#downloads <br />
http://imasters.com.br/artigo/11673/mysql/cluster-no-mysql-parte-01/<br />
http://imasters.com.br/artigo/11901/mysql/cluster-no-mysql-parte-2/<br />
http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster.html<br />
http://bugs.mysql.com/bug.php?id=21743Pedro Vianahttp://www.blogger.com/profile/09376202632528139477noreply@blogger.com