Você está na página 1de 30

Expediente editorial

Diretor Geral Rafael Peregrino da Silva rperegrino@linuxmagazine.com.br Editores Flvia Jobstraibizer fjobs@linuxmagazine.com.br Kemel Zaidan kzaidan@linuxmagazine.com.br Editora de Arte Larissa Lima Zanini llima@linuxmagazine.com.br Colaboradores Alexandre Borges, Alexandre Santos, Augusto Campos, Charly Khnast, Dirk Merkel, Irfan Habib, Jon maddog Hall, Klaus Knopper, Kurt Seifried, Marcel Gagn, Mike Adolphs, Nathan Willis, Ramon Wartala, Stefan Wintermeyer, Wolfgang Dautermann, Zack Brown. Traduo Elias Praciano, Michelle Ribeiro, Pablo Hess, Sebastio Luiz da Silva Guerra e Tadeu Carmona. Editores internacionais Uli Bantle, Andreas Bohle, Jens-Christoph Brendel, Hans-Georg Eer, Markus Feilner, Oliver Frommel, Marcel Hilzinger, Mathias Huber, Anika Kehrer, Kristian Kiling, Jan Kleinert, Daniel Kottmair, Thomas Leichtenstern, Jrg Luther, Nils Magnus. Anncios: Rafael Peregrino da Silva (Brasil) anuncios@linuxmagazine.com.br Tel.: +55 (0)11 3675-2600 Penny Wilby (Reino Unido e Irlanda) pwilby@linux-magazine.com Amy Phalen (Amrica do Norte) aphalen@linuxpromagazine.com Hubert Wiest (Outros pases) hwiest@linuxnewmedia.de Diretor de operaes Claudio Bazzoli cbazzoli@linuxmagazine.com.br Na Internet: www.linuxmagazine.com.br Brasil www.linux-magazin.de Alemanha www.linux-magazine.com Portal Mundial www.linuxmagazine.com.au Austrlia www.linux-magazine.es Espanha www.linux-magazine.pl Polnia www.linux-magazine.co.uk Reino Unido www.linuxpromagazine.com Amrica do Norte Apesar de todos os cuidados possveis terem sido tomados durante a produo desta revista, a editora no responsvel por eventuais imprecises nela contidas ou por consequncias que advenham de seu uso. A utilizao de qualquer material da revista ocorre por conta e risco do leitor. Nenhum material pode ser reproduzido em qualquer meio, em parte ou no todo, sem permisso expressa da editora. Assume-se que qualquer correspondncia recebida, tal como cartas, emails, faxes, fotograas, artigos e desenhos, sejam fornecidos para publicao ou licenciamento a terceiros de forma mundial no-exclusiva pela Linux New Media do Brasil, a menos que explicitamente indicado. Linux uma marca registrada de Linus Torvalds. Linux Magazine publicada mensalmente por: Linux New Media do Brasil Editora Ltda. Rua So Bento, 500 Conj. 802 S 01010-001 So Paulo SP Brasil Tel.: +55 (0)11 3675-2600 Direitos Autorais e Marcas Registradas 2004 - 2011: Linux New Media do Brasil Editora Ltda. Impresso e Acabamento: RR Donnelley Distribuda em todo o pas pela Dinap S.A., Distribuidora Nacional de Publicaes, So Paulo. Atendimento Assinante www.linuxnewmedia.com.br/atendimento So Paulo: +55 (0)11 3675-2600 Rio de Janeiro: +55 (0)21 3512 0888 Belo Horizonte: +55 (0)31 3516 1280 ISSN 1806-9428 Impresso no Brasil

Vergonha alheia
Cesare Lombroso (1835 1909), pai da Antropologia Criminal, uma vez declarou ser escravo dos fatos. Essa prtica est custando a chegar ao departamento de marketing de algumas empresas de tecnologia, mormente a Microsoft, que, apesar de vir melhorando no trato com a concorrncia de cdigo aberto, ainda peca quando a soluo rival bate de frente com os produtos que so carros-chefes da companhia. Como disse Jim Zemlin recentemente, quando declarou que o Linux j superou em adoo a Microsoft em praticamente todas as reas e segmentos da tecnologia da informao, exceo do desktop, nossa inteno neste editorial no chutar cachorro morto. Mas a mais recente escorregada da mquina de marketing da Microsoft realmente merece algumas consideraes, j que optou pela ttica de espalhar meias-verdades ao invs de se ater aos fatos. Nossa iniciativa aqui no pretende discorrer sobre os quesitos analisados pela Microsoft a respeito da concorrncia nem h espao aqui para isso , mas sim abordar a prtica utilizada nessa anlise, que ainda recorre ao uso da velha ttica de espalhar medo, incerteza e dvida (do ingls, Fear, Uncertainty and Doubt FUD), o que no mais compatvel com uma sociedade com pleno acesso informao. Quem quiser conhecer os argumentos utilizados pela empresa, pode l-los em http://bit.ly/m9rfNs. O material que deu causa nossa anlise foi a pea de marketing intitulada Compare e descubra por que Microsoft a melhor soluo para a sua empresa, distribuda a alunos da Universidade Presbiteriana Mackenzie um contra-senso, j que o teor do material corporativo e o ambiente ali universitrio. at possvel imaginar que entre nefitos em tecnologia, a mensagem possa colar algo questionvel, entretanto, j que a maioria das universidades de tecnologia brasileiras abraou o uso de Linux e Software Livre em seus cursos. Contudo, no d para entender como uma pea como essa poderia convencer profissionais de TI de verdade sendo to superficial, quando no descaradamente mentirosa. Esse tipo de marketing presta um desservio gigante de Redmond. No houve como evitar um sentimento de vergonha alheia ao ler os referidos argumentos. Em tempos de redes sociais, com informaes sendo disseminadas to rapidamente, como uma empresa que ocupa posio de liderana em vrios segmentos da TI pode se dar ao luxo de se expor ao ridculo dessa maneira? No havia pontos fracos reais a explorar nas tecnologias rivais que tornassem desnecessrio disparar uma saraivada de inverdades sobre elas? Nossa leitura sobre o episdio de que h atualmente manifesto desconforto na Microsoft com aplicativos migrando para a nuvem e com a diminuio da importncia do desktop tradicional, alm do consequente desenvolvimento do mercado de dispositivos mveis reas em que a empresa de Bill Gates nunca decolou de verdade e onde o Linux e o Software Livre tornaram-se o padro. Isso no justifica o retrocesso a esse tipo de marketing de contedo e qualidade questionvel, mas o explica. Fica aqui nosso protesto e recomendao: d para ser melhor!
Rafael Peregrino da Silva Diretor de Redao

EDITORIAL
3

Linux Magazine #79 | Junho de 2011

NDICE

CAPA
Caminhando nas nuvens Se no mundo real as nuvens so conhecidas por tomar diferentes formas, no mundo da TI elas ganham contornos de acordo com suas necessidades. Exploso de nuvens A computao em nuvem, com a promessa de mquinas virtuais gerenciveis e com rpido provisionamento em grandes redes, tambm tem apelo em um mundo onde todos tentam cortar custos. O Ubuntu Enterprise Cloud Services (UEC) a entrada da Canonical no mundo das nuvens. Nuvem privada O OpenNebula um dos sistemas de nuvens privadas mais fceis de utilizar. Aprenda como utiliz-lo. Novas nuvens O OpenStack traz para a nuvem tecnologias de virtualizao comuns como KVM, Xen, Hyper-V e QEMU Escalonabilidade real para a nuvem O ambiente de cloud computing da Amazon se adapta facilmente s solues de seus clientes. Veja como a empresa construiu sua soluo em torno da nuvem. 52 48 42 34 33

www.linuxmagazine.com.br

Linux Magazine 79 | NDICE

COLUNAS
Klaus Knopper Charly Khnast Zack Brown Augusto Campos Kurt Seifried Alexandre Borges 08 10 12 14 16 20

REDES
A soluo dos seus pepinos 62

NOTCIAS
Geral Google Storage disponibilizado para todos os desenvolvedores Lanado o GRUB 1.99 MariaDB pronto para o Ubuntu Natty Narwhal Virtualizao da Microsoft suportar CentOS Wordpress 3.2 no oferecer suporte ao IE6 O desenvolvimento gil de aplicativos comum, mas os administradores de sistemas muitas vezes no tm opes comparveis. Um plugin para o Nagios baseado em Ruby chamado Cucumber-Nagios pode mudar isso. 22

TUTORIAL CORPORATE
Notcias Microsoft compra a Skype O novo lder do SUSE Lder de desenvolvimento da Canonical sai da empresa Criador do jQuery deixa a Mozilla Apple viola a licena livre LGPL Entrevista com Ethan Galstad Em entrevista para a Linux Magazine, Ethan Galstad, o criador do popular software de monitoramento Nagios, fala sobre como nasceu o projeto e seus planos para o futuro Coluna: Jon maddog Hall Coluna: Alexandre Santos 30 32 26 O sistema telefnico ultrapassado, presente at pouco tempo atrs nas empresas, prolfico em cobranas: cada novo recurso ativado requer uma nova ativao de servio, com o preo adicionado ao pagamento mensal. hora de mudar. hora de criar sua prpria central VoIP Solues para seus problemas 72 24 VoIP com Asterisk parte VIII 70

ANLISE
Jogo de fora 66

Vamos mostrar como a ferramenta de cdigo aberto ACH, desenvolvida pela CIA, pode ajud-lo atravs de uma abordagem estruturada e sistemtica, a encontrar solues para problemas nos negcios.

SERVIOS
Os firewalls em geral bloqueiam o acesso via interpretador de comandos para usurios em uma rede corporativa ou em um cyber caf. Felizmente, ferramentas como o PHP Shell e Shell in a Box colocam o Shell em uma janela do navegador. Editorial Emails Linux.local Preview 03 06 78 82

Linux Magazine #79 | Junho de 2011

Coluna do Alexandre

Proxy: sigilo s vezes necessrio


O sigilo, to necessrio nos dias de hoje, quando informaes valem ouro, tema de acaloradas discusses nas rodas de analistas de segurana.

COLUNA

raticamente todo analista que trabalha com Linux j utilizou em algum momento um proxy (Squid, Tinyproxy, Privoxy etc.). Em geral, as companhias tm utilizado o proxy para acelerar a conexo Internet, valendo-se do uso do cache de dados, para com isso, aplicar filtros de contedo de acesso. Entretanto, alguns poucos usurios ainda podem utiliz-lo para navegar de forma annima na Internet. O uso do proxy est associado e dependente de protocolos especficos como o HTTP, o FTP e outros. No quesito anonimidade, ele pode ser classificado como transparente, annimo e totalmente annimo. O proxy transparente (RFC 2617) no realiza modificaes no pedido ou resposta ao cliente (exceto, claro, aquelas necessrias para sua identificao e autenticao) e, deste modo, no esconde do servidor o IP de origem do cliente que fez a solicitao. Ele tambm adiciona informaes extras no cabealho HTTP, como o campo Via (que indica qual software de proxy forneceu os pacotes) e o campo X-Forwarded-For (que denuncia o IP do cliente que realizou o pedido). O proxy annimo apresenta melhorias com relao ao anterior, pois esconde o IP do cliente (portanto, no inclui o campo X-Forwarded-For no cabealho HTTP ou, se incluir, configura o campo com o IP do proxy e no do cliente); entretanto, ele ainda apresenta o campo Via. No caso dos proxies totalmente annimos, no h qualquer campo no cabealho HTTP que revele qual o software de proxy utilizado ou qual o IP de origem que realizou o pedido. Se o leitor estiver interessado em investigar a presena ou a ausncia destes campos em seu software de proxy, sugiro que crie um pequeno script PHP utilizando a funo apache_request_headers() [1] e faa um experimento no seu Apache. Se a inteno for navegar ou executar comandos como ssh, telnet e ftp para servidores de forma annima, pode ser

usado o Tor [2], projeto que possibilida ao usurio trafegar seus dados de forma annima e criptografada entre servidores espalhados pelo mundo. Como os pacotes podem entrar nesta rede atravs de qualquer uma das mquinas Tor, passar atravs delas e tambm sair atravs de uma delas, o servidor web de destino da sua solicitao apenas consegue ver a ltima mquina Tor em que os pacotes estiveram, mas no consegue saber de onde veio a requisio. claro que o Tor tem algumas desvantagens, como a diminuio da velocidade de navegao, a possibilidade de algum realizar um snoop ou ataque man-in-the-middle no n de sada da rede Tor, caso o aplicativo utilizada pelo cliente no empregue a o uso de criptografia, ou ainda correr o risco de ver sua conexo negada, pois alguns sites bloqueiam solicitaes vindas da rede Tor. Este o preo pago por quem quer navegar de forma annima. No site do projeto Tor, o leitor pode efetuar o download da verso para Linux do Tor Browser Bundle que j vem pronto para uso (com o browser Firefox) ou ainda verses para Android e iPhone. Basta apenas descompactar o pacote e executar o script start-tor-browser. Com o Firefox no ar, faa o teste apontando seu browser para o endereo www.whatsmyip.org e depois use o browser fornecido pelo Tor para o mesmo site e note a diferena. H a possibilidade de instalar o Tor na mquina Linux, e assim, fazer sua prpria personalizao do programa. Para tal, existe a opo de fazer o download do pacote no site do projeto ou ainda, no caso do Ubuntu, os seguintes passos podem ser efetuados: 1) edite o arquivo /etc/apt/sources.list e adicione a seguinte linha, substituindo o parmetro <DISTRIBUTION> pela sua distribuio do Ubuntu (por exemplo, lucid):
deb http://deb.torproject.org/torproject.org <DISTRIBUTION> main

2) execute os seguintes comandos:

20

www.linuxmagazine.com.br

# gpg --keyserver keys.gnupg.net --recv 886DDD89 # gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886D DD89 | sudo apt-key add # apt-get update # aptitude install tor # aptitude install torsocks

O Torsocks encapsula aplicaes compatveis com o SOCKS usando o Tor, ou seja, envia todas as conexes para o Tor (porta 9050/TCP) e este faz o resto. Agora, voc pode configurar seu browser para o proxy SOCKS (localhost porta 9050) e navegar vontade sem desconfiarem de onde voc est. Tambm possvel fazer o mesmo para comandos ssh, telnet, ftp etc. Exemplos:
# usewithtor wget www.linuxmagazine.com.br # usewithtor ssh root@ssh-server.com # usewithtor ftp root@ftp-server.com

Assim, basta voc configurar o navegador (no laptop) para usar o proxy com protocolo SOCKS. Neste caso, apontando para o endereo local localhost e porta 9999. Pronto, voc j est usando a unio do fantstico SSH e do Tor. Faa o teste apontando seu browser para o endereo www.whatsmyip.org. Voc encontrar mais sobre SSH no excepcional tutorial B-a-b do SSH do meu amigo Pablo Hess [3]. At o ms que vem.

Mais informaes
[1] apache_request_headers: http://php.net/manual/ pt_BR/function.apache-request-headers.php [2] Tor Project: http://www.torproject.org/

Se o leitor possuir em casa um servidor SSH e o Tor configurado, possvel se conectar de onde estiver neste servidor, usar o Tor (se precisar, verifique o arquivo /etc/ torsocks.conf) e navegar do seu laptop de modo totalmente seguro e annimo. Para isto, no Linux do seu laptop, digite:
# ssh seu-usurio@servidor-ssh-casa -NL 9999:localhost:9050

[3] B-a-b do SSH: http://ur1.ca/46zn4

Alexandre Borges (alex_sun@terra.com.br, twitter: @ale_sp_brazil) especialista Snior em Solaris, OpenSolaris e Linux. Trabalha com desenvolvimento, segurana, administrao e anlise de desempenho desses sistemas operacionais, atuando como instrutor e consultor. pesquisador de novas tecnologias e assuntos relacionados ao kernel.

Linux Magazine #79 | Junho de 2011

21

Matria | SEO

Computao em Nuvem 2.0

Caminhando nas nuvens


CAPA
Se no mundo real as nuvens so conhecidas por tomar diferentes formas, no mundo da TI elas ganham contornos de acordo com suas necessidades. por Kemel Zaidan

uito j foi dito sobre computao em nuvem. Voc, que leitor da Linux Magazine a certo tempo, teve a oportunidade de acompanhar de perto o surgimento dessa tecnologia. No para menos; afinal, ela proporciona tudo aquilo que o profissional de TI sonha diariamente: desempenho distribudo, administrao centralizada, melhor utilizao do hardware e escalonabilidade sem limites. Se a computao em nuvem algo recente, suas bases j so conhecidas a algum tempo: cluster, virtualizao e storage. Eis a um trio de ouro! Junte tudo isso em uma bela embalagem e comercialize como um servio e no mais como um produto. o famoso SaaS (Software as a Service). A novidade no est exatamente nas tecnologias envolvidas, mas no uso conjunto que se faz delas. Veja o caso da Amazon, a primeira loja online do mundo. Seu pioneirismo forou a empresa a desenvolver tecnologia prpria. Em determinado momento, algum executivo dentro dela deparou-se com isto e percebeu que aquela tecnologia poderia ser oferecida tambm como um produto em si. Foi assim que a maior loja online da Internet tornou-se tambm uma das maiores provedoras de servios em nuvem, com seu EC2 (Elastic Cloud Computing) e outros produtos que mais tarde associaram-se a ele. A Amazon no vende hospedagem, como no tradicional servio de colocation, mas vende recursos computacionais, do mesmo modo que uma concessionria vende energia. Se no

inverno voc precisa de mais energia para aquecer o seu chuveiro, no preciso ligar para a empresa e pedir para ela abrir mais alguns centmetros das comportas de Itaipu. O servio prestado sob demanda, e a diferena chega na conta no final do ms. O sucesso e a inovao promovidos pela empresa serviram de incentivo para que outros grupos criassem solues a partir do mesmo conceito de computao em nuvem. Uma das mais interessantes sem dvida o Eucalyptus, que conseguiu recriar o EC2 a partir das APIs em cdigo aberto disponibilizadas pelo servio. Desta forma, qualquer um pode ter a sua prpria infraestrutura em nuvem, podendo escalonar para o servio da Amazon apenas durante um pico de demanda. No entanto, no s de Amazon e Eucalyptus vive o mundo da computao em nuvem. Outras abordagens tambm comearam a surgir em um ritmo cada vez mais acelerado. O OpenNebula j foi includo no repositrio da maior parte das distribuies o que certamente facilita sua instalao e oferece flexibilidade na escolha do hypervisor: VMware, Xen ou KVM. O administrador pode assim, escolher aquele com o qual est mais habituado. J o OpenStack, apesar de contar com menos de um ano de existncia, tem o amparo de ningum menos do que a NASA, a agncia espacial americana, e do Rackspace, um dos maiores grupos de hospedagem dos Estados Unidos. O seu rpido desenvolvimento tem chamado a ateno de profissionais e desenvolvedores de maneira crescente.

A verdade que a nova gerao de plataformas para computao em nuvem est cada vez mais poderosa e fcil de instalar. Ter um sistema de nuvem privada, sendo executado na sua prpria empresa, facilita a administrao dos recursos computacionais e nunca foi to simples como hoje. Quem diria que ser um profissional de TI com a cabea nas nuvens, passaria a ser uma caracterstica valorizada pelo mercado?

Matrias de capa
Exploso de nuvens Nuvem privada Novas nuvens 34 42 48

Escalonabilidade real para a nuvem 52

Linux Magazine #XX | Ms de 200X

33

REDES | Cucumber-Nagios

Monitoramento orientado por comportamento

REDES

A soluo dos seus pepinos


O desenvolvimento gil de aplicativos comum, mas os administradores de sistemas muitas vezes no tm opes comparveis. Um plugin para o Nagios baseado em Ruby chamado Cucumber-Nagios pode mudar isso. por Mike Adolphs

ualquer administrador de sistemas est familiarizado com a seguinte situao: voc monitora seu sistema de forma abrangente, todos os servios parecem funcionar e ainda assim, voc v algumas anomalias no grfico que monitora operaes de pagamento. O tempo de acesso para os sistemas de pagamento aumentaram dez vezes. Os testes manuais dos componentes no mostram quaisquer problemas e as mtricas de teste da interface do pagamento ao prestador de servio externo no relata os erros tambm. Depois de alguma pesquisa intensiva, voc finalmente encontra o malfeitor: um bug no intermediador, que foi atualizado ontem noite, est impedindo o cumprimento sem problemas de pagamentos. Voc reverte a verso e os problemas que afetam os pagamentos so uma coisa do passado.

Mtodos geis
Para evitar que incidentes como este se tornem regra, os desenvolvedores de software muitas vezes trabalham com mtodos geis que tm um efeito considervel sobre o processo de desenvolvimento. Com essa abordagem, o foco do desenvolvimento no est mais exclusivamente nas atividades de programao, mas em testes exaustivos do aplicativo, bem como em uma estreita cooperao com todas as partes interessadas do projeto. Esses princpios formam a base de trabalho do Desenvolvimento Orientado por Testes e do Desenvolvimento Orientado por Comportamento. A principal ideia por trs do desenvolvimento orientado por testes assegurar que o aplicativo no s funcione, mas tambm se comporte exatamente como o usurio espera que ele funcione. Para isso, sistemas de testes automatizados, como o

Jenkins [1] (ex-Hudson) ou o CruiseControl [2] so implantados para testar com regularidade caractersticas especficas de um aplicativo. O desenvolvimento orientado por comportamento estende os princpios do desenvolvimento orientado por testes, permitindo que profissionais que no sejam programadores participem no processo de desenvolvimento de aplicativos. O foco est sobre o envolvimento de todos os interessados no projeto. Para dar a estes envolvidos a melhor visibilidade possvel de como o aplicativo funciona, os interessados tambm devem ser capazes de contribuir com os seus prprios cenrios para testes automatizados. Esta abordagem orientada para o comportamento permite a utilizao de uma linguagem especfica de domnio (DSL) que orientada por uma linguagem natural e no deve ser vista como uma linguagem de programao.

60

www.linuxmagazine.com.br

Cucumber-Nagios | REDES

O Cucumber-Nagios [3] aplicase a estes princpios e apoia a sua utilizao na infraestrutura do desenvolvimento gil. Isso significa no apenas um acompanhamento do ponto de vista do objeto (o aplicativo executado) mas tambm considera o processo que leva aos resultados desejados (o aplicativo est funcionando como desejado). Ao mesmo tempo, todos os membros da equipe podem contribuir com suas prprias verificaes para a vigilncia do sistema sem o administrador ter de escrever funes especiais. Existe um jargo tecnolgico para isso tambm: Infraestrutura Orientada por Comportamento.

Balano
O Cucumber-Nagios integrado como um plugin para qualquer sistema de monitoramento de cdigo aberto que possa interpretar os valores retornados pelos plugins do Nagios. Esta ferramenta baseada em Cucumber [4] uma parte popular de software para testes automatizados de Ruby, Java, .NET, Flex e aplicativos web e usa o Gherkin DSL [5]. Internamente, voc tambm vai encontrar o Webrat, um simulador de navegador de baixos recursos usado para cenrios de teste envolvendo o protocolo HTTP. Voc tambm vai encontrar a biblioteca Mechanize [6], que contribui para interaes de funes automatizadas em sites. Alm disso, graas a implantao do protocolo cliente SSH2 do Ruby Net::SSH [7], o suporte ao SSH tambm est presente.

DNS em outro projeto separado. No entanto, voc poderia com facilidade manter todos os servios que voc deseja verificar em um nico projeto. Um projeto composto de caractersticas e etapas. As caractersticas constantes nos cenrios de teste so escritas no Gherkin DSL, enquanto as etapas so curtos blocos de cdigo escritos em Ruby. Estes blocos contm a lgica do aplicativo para entrar em uma interface web ou abrir uma conexo com um servidor externo. Para manter as coisas simples, muitas etapas esto integradas no CucumberNagios, o que permite aos administradores focalizar diretamente nos servios que precisam ser monitorarados. Essas etapas preconcebidas incluem uso e verificaes de DNS, HTTP, ICMP e SSH. Etapas para operaes simples de arquivo, execuo de comandos em hosts externos e monitoramento de aplicativos baseados em protocolo AMQP tambm esto includos, por padro. Se necessrio, voc tambm pode definir as etapas personalizadas para qualquer recurso definido, para lidar com a complexidade de seu prprio ambiente.

Nagios inclui seu prprio gerador de cdigos para as funes mais usadas. Para criar o seu prprio projeto inicial, voc pode usar:
cucumber-nagios-gen project checks

Depois, voc pode executar o gem bundle no diretrio do projeto. Isso permite que voc copie a pasta do projeto para qualquer servidor sem a necessidade de instalar o Cucumber-Nagios e suas dependncias localmente.

Denio de recursos
Voc pode usar o prprio gerador do Cucumber-Nagios novamente para criar o framework bsico de quatro novos recursos. Para fazer isso, digite:
cucumber-nagios-gen feature www.xing.com startpage

no diretrio do projeto; esta etapa cria dois novos arquivos (listagem 1). O arquivo features/www.xing.com/ startpage.feature contm o cenrio de teste. Voc pode adicionar seus prprios passos ao arquivo features/
www.xing.com/steps/startpage_steps. rb, caso seja necessrio. O startpage.features um exemplo

Um projeto inicial
Antes de instalar o Cucumber-Nagios, voc precisa do Ruby 1.8.7 e do prprio gerenciador de pacotes do Ruby, o RubyGems(1.3.5 ou mais recente), em ordem. Uma vez que os dois estiverem prontos para a ao, voc pode instalar o Cucumber-Nagios e todas as suas dependncias, tornando-se usurio root e executando o comando:
gem install cucumber-nagios

Terminologia
A terminologia Cucumber-Nagios relativamente simples e consiste de projetos, recursos e etapas. Um projeto contm toda a estrutura necessria para escrever e executar cenrios de teste. Por exemplo, voc pode criar um projeto para realizar testes HTTP para verificar um site e para, sem cargas, fazer verificaes

Como muitos outros aplicativos escritos em Ruby, o Cucumber-

rudimentar que voc pode modificar conforme precisar. A sintaxe usada semelhante linguagem natural e facilmente dominada sem o conhecimento de uma linguagem de programao. A lgica do programa inicialmente oculta nas etapas. Todos os recursos partilham as trs primeiras linhas. As duas primeiras linhas do o nome do recurso e uma breve descrio intuitiva do estado de espera. A descrio pode ocupar mtliplas linhas. Na listagem 2, o recurso estipula que o endereo www. xing.com deve estar disponvel. A ter-

Listagem 1: Novos recursos do Integrated Generator


01 02 03 04 cucumbernagiosgen feature www.xing.com startpage Generating with feature generator: [ADDED] features/www.xing.com/startpage.feature.feature [ADDED] features/www.xing.com/steps/startpage.feature_steps.rb

Linux Magazine #79 | Junho de 2011

61

REDES | Cucumber-Nagios

Listagem 2: Disponibilidade de www.xing.com


01 02 03 04 05 06 Feature: www.xing.com It should be reachable Scenario: Visiting the website When I go to http://www.xing.com/ Then the request should succeed

A palavra-chave But muito semelhante a And, contudo define critrios de excluso:


But I should not see "Join XING for free"

Listagem 3: Vericao de login


01 ./features/www.xing.com/login.feature 02 Feature: www.xing.com 03 I should be able to login on http://www.xing.com/ 04 05 Scenario: Logging in 06 Given I am on http://www.xing.com/ 07 When I fill in "usernamefield" with "username" 08 And I fill in "passwordfield" with "password" 09 And I press "loginbutton" 10 Then I should see "Whats new in your network" 11 But I should not see "Join XING for free"

A listagem 3 mostra um recurso para verificar um login em http:// www.xing.com/. Em muitos casos, a preocupao no s se alguma coisa funciona, mas quanto tempo leva para obter-se um resultado uma solicitao. Sites devem fornecer o melhor desempenho possvel. O monitoramento do desempenho com o Cucumber-Nagios possvel com o mtodo predefinido Given I am benchmarking. Aqui est um exemplo:
Scenario: Benchmarking home page Given I am benchmarking When I go to http://www.xing.com/ Then the request should succeed And the elapsed time should be less than 1 seconds

ceira linha utiliza o Scenario: keyword para introduzir o cenrio de teste; todas as outras linhas so instrues para as aes correspondentes, que a verificao do servio deve executar e avaliar. Basicamente, duas aes ocorreram na listagem 2. A linha When I go to http://www.xing.com/ define a ao inicial, e os resultados esperados esto descritos em Then the request should succeed. Essas duas pequenas informaes so tudo o que ele tem para gerar um trabalho e seguir com sucesso para a disponibilidade do endereo http:// www.xing.com. Colocar a palavra-chave And no incio da nova linha permite que voc adicione condies adicionais para um teste bem sucedido. J a palavra-chave But usada se voc deseja definir critrios exclusivos, o que faz sentido se voc precisar verificar o contedo de uma pgina. Assim, no mbito da listagem 2, as duas seguintes condies fariam sentido se voc quiser garantir que de fato est na pgina de boas vindas do Xing: And I should see Join XING for free e But I should not see Welcome to Facebook. As palavras-chave Given, When, Then, And e But completam a lista de instrues suportadas. Note que o Cucum-

ber no faz distino entre as instrues de um ponto de vista tcnico; no entanto, aderir s convenes existentes til. Given usada somente se um status definido assumido, como em:
Given I am on http://www.xing.com/

Em contraste, When em geral descreve uma ao a ser executada, como a interao com um site e a verificao da existncia de um arquivo especfico. A seguinte frase seria concebvel, no contexto do exemplo anterior:
When I fill in username-field" with "username

Neste caso, dois elementos so verificados: se o cdigo de status HTTP positivo e se o pedido de tempo de execuo inferior a um segundo. Se uma dessas condies no for cumprida, o servio classificado como crtico e uma advertncia poder ser publicada dependendo da configurao do sistema de monitoramento.

Passos detalhados
O trabalho duro feito por etapas preconcebidas em segundo plano. Essas etapas so blocos curtos de cdigo Ruby que fornecem recursos para as verificaes. Voc pode usar um grep recursivo no projeto para criar uma viso geral das etapas organizadas pelo mtodo. Essas etapas predefinidas constituem uma base slida sobre a qual voc pode construir a sua prpria:
grep -R '[WT]hen\|Given' features/steps/| awk -F \: '{print $2}'|sort -d

A palavra-chave And uma substituta para as instrues Given, When ou Then apenas para manter o cenrio mais inteligvel. Eu poderia acrescentar as seguintes instrues para o exemplo:
And I fill in "password-field" with "password" And I press "login-button" Then utilizado para monitorar

os resultados. Neste caso, estou interessado em saber se o login funciona ou no:


Then I should see "Whats new in your network"

A etapa features/steps/ping_steps. rb (listagem 4) executa um teste de ping simples. O recurso que iria dei-

62

www.linuxmagazine.com.br

Cucumber-Nagios | REDES

x-lo executar um ping no endereo www.xing.com via ICMP ficaria assim:


Feature: www.xing.com It should respond Scenario: Ping test When I ping www.xing.com Then it should respond

Cada etapa introduzida pelos mtodos Given, When, Then, And ou But, seguidos de uma expresso regular que possibilita a instruo usada pelo recurso. O comando do introduz a lgica, e |host| a varivel que define o recurso para o host testado. importante notar aqui que os mtodos no so parte da expresso regular. Se voc diz When I ping ou define Given I ping como condio varivel, e leva em conta a conveno Given WhenThen presente no Cucumber [8]. A linha 2 da listagem 4, por fim, faz o trabalho. Ela inicia a instncia da varivel @result, que recebe a sada do comando ping. Este ento avaliado nas etapas que comeam pela linha 5. Na base da avaliao, o valor de retorno definido como verdadeiro (host disponvel) ou falso (host inacessvel). Se voc agora estender o exemplo e dar ao autor do cenrio de teste a capacidade de definir o nmero de pings, precisar modificar a expresso regular e adicionar a varivel correspondente, de acordo com o seguinte:
When /^I ping (.*) (.*) times$/ do |host, count|@result = system("ping -c #{count} #{host} > /dev/null 2>&1") end

rei dos sistemas de monitoramento de cdigo aberto: o Nagios. Como j mencionamos, o requisito bsico para a execuo do plugin Cucumber-Nagios uma instalao do Ruby em funcionamento. Se voc testou o Cucumber-Nagios em um servidor diferente do servidor Nagios, voc vai precisar copiar o diretrio do projeto de forma recursiva para o servidor Nagios. O caminho para o diretrio depende da sua distribuio e da forma como voc configurou o Nagios. Debian, Red Hat e SUSE Linux instalam os plugins do Nagios no diretrio /usr/lib/nagios/plugins. No entanto, se voc compilou o Nagios sozinho, o arquivo padro /usr/local/nagios/libexec. Voc provavelmente vai querer criar um subdiretrio cucumber-nagios no diretrio de plugins e copiar o projeto para este subdiretrio. Voc, ento, ir querer modificar as permisses de arquivos e diretrios para que o sistema permita ao usurio Nagios acessar os arquivos. Em muitos casos, o resource.cfg define uma varivel para o diretrio de plugins por exemplo, $USER1$=/ usr/lib/nagios/plugins. Para manter a sobrecarga de configurao to magra quanto possvel e para evitar perder o controle, defina seus prprios caminhos de variveis para o projeto do Cucumber-Nagios por exemplo, $USER2$=/usr/lib/nagios/ plugins/cucumber-nagios. Agora, basta o comando a seguir para verificar o servio no arquivo commands.cfg:
define command{ command_name check_cn command_line $USER2$/checks/bin/ cucumber-nagios $ARG1$ }

Listagem 4: features/steps/ ping_steps.rb


01 When /^I ping (.*)$/ do |host| 02 @result = system("ping c1 #{host} > /dev/null 2>&1") 03 end 04 05 Then /^it should respond$/ do 06 @result.should be_true 07 end 08 09 Then /^it should not respond$/ do 10 @result.should be_false 11 end

Listagem 5: Arquivo services.cfg


01 define service{ 02 uselocalservice 03 host_namelocalhost 04 service_descriptionCN www.xing.com startpage 05 check_commandcheck_cn!$USER2$/ checks/features/www.xing.com/ startpage.feature 06 }

em que chamado. A definio de servios em services.cfg define esse argumento (listagem 5). Antes de dizer ao servio do Nagios que recarregue sua configurao, teste as verificaes que voc definiu na linha de comando. Para tal, execute o plugin no contexto do usurio Nagios:
su nagios -c "/usr/lib/nagios/ plugins/cucumber-nagios/checks/ bin/cucumber-nagios/usr/lib/ nagios/plugins/cucumber-nagios/ checks/features/www.xing.com/ startpage.feature" ~ $ echo $?

Agora voc pode definir o nmero de pings para enviar nos recursos correspondentes, como segue:
When I ping www.xing.com 3 times Then it should respond

Integrao com o Nagios


A integrao com o seu prprio sistema de controle facilmente realizada. Como exemplo, vamos usar o

O command_name livremente selecionvel. Para command_line, tenha em mente que o caminho da varivel deve estar correto e que $ARG1$ est anexado ao prprio comando. Um argumento passado para o Cucumber-Nagios no momento

Se isso falhar com um valor de retorno 2, voc encontrou um bug; no entanto, isso fcil de resolver. A opo --pretty diz ferramenta para liberar o registo de chamadas, o que ir ajud-lo a solucionar o problema (listagem 6). A linha 8 do registro de chamadas na listagem 6 mostra que o problema

Linux Magazine #79 | Junho de 2011

63

REDES | Cucumber-Nagios

Figura 1: Depois de escrever todos os seus testes no Cucumber, os resultados do monitoramento sero exibidos no Nagios.

Listagem 6: Solucionar problemas com o registro de chamadas


01 ~ $ [sudo] su nagios c "/usr/lib/nagios/plugins/cucumbernagios/ checks/bin/cucumbernagios /usr/lib/nagios/plugins/cucumbernagios/ checks/features/www.xing.com/startpage.feature pretty"; 02 Feature: www.xing.com 03 It should be up 04 05 Scenario: Visiting home page # /usr/lib/nagios/plugins/ cucumbernagios/checks/features/www.xing.com/startpage.feature:4 06 When I go to http://www.xing.com/# steps/webrat_steps.rb:1 07 Permission denied webrat.log (Errno::EACCES) 08 /usr/lib64/ruby/1.8/logger.rb:518:in 'initialize' 09 /usr/lib64/ruby/1.8/logger.rb:518:in 'open' 10 /usr/lib64/ruby/1.8/logger.rb:518:in 'open_logfile' 11 /usr/lib64/ruby/1.8/logger.rb:487:in 'initialize' 12 /usr/lib64/ruby/1.8/logger.rb:263:in 'new' 13 /usr/lib64/ruby/1.8/logger.rb:263:in 'initialize' 14 /usr/lib/nagios/plugins/cucumbernagios/checks/features/ steps/webrat_steps.rb:2:in '/^I go to (.*)$/' 15 /usr/lib/nagios/plugins/cucumbernagios/checks/ features/www.xing.com/startpage.feature:5:in 'When I go to http://www.xing.com/' 16 Then the request should succeed# steps/result_steps.rb:13 17 And I should see "Join XING for free"# steps/result_steps.rb:1 18 And I should not see "Welcome to Facebook"# steps/ result_steps.rb:5 19 20 Failing Scenarios: 21 cucumber /usr/lib/nagios/plugins/cucumbernagios/checks/features/ www.xing.com/startpage.feature:4# Scenario: Visiting home page 22 23 1 scenario (1 failed) 24 4 steps (1 failed, 3 skipped) 25 0m0.008s

causado por permisses de arquivo: o usurio nagios quer gravar o arquivo webrat.log, mas no tem as permisses necessrias. Uma explicao simples para isso a chamada para o programa. Se voc tivesse chamado su com a opo -l, a varivel de ambiente $HOME teria sido criada para o usurio nagios. No entanto, agora este usurio est tentando escrever no diretrio de trabalho atual do usurio que inseriu o comando su. Esse problema traioeiro se voc executar a verificao do Cucumber-Nagios via SSH, porque, em seguida, o SSH no funcionar como um Shell interativo. Para se livrar do erro, basta fazer uma pequena alterao no cdigo da dependncia do Cucumber-Nagios, o Webrat. Para fazer isso, abra o arquivo
vendor/gems/ruby/1.8/gems/webrat-0.7.0/ lib/webrat/core/logging.rb no diretrio

do projeto e digite o caminho completo para o arquivo de log na linha 18. Dependendo do diretrio home do usurio Nagios, a linha ser algo parecido com:
@logger ||= ::Logger.new( /var/nagios/webrat.log)

64

www.linuxmagazine.com.br

Cucumber-Nagios | REDES

Para finalizar, voc deve testar a chamada para o plugin manualmente. Os resultados sero muito mais satisfatrios:
CUCUMBER OK - Critical: 0, Warning: 0, 4 okay | passed=4; failed=0; nosteps=0; total=4

Agora, nada deve estar no caminho usado pelo Cucumber-Nagios para monitorar as funes. Depois de recarregar o servio, o Nagios ir acompanhar as verificaes definidas. Isso conclui o processo de integrao com o sistema de monitoramento. A gura 1 mostra os resultados em uma interface do Nagios.

Concluso
O Cucumber-Nagios sem dvida uma ferramenta poderosa, mas alguma experincia necessria para atingir resultados rpidos. A integrao com um sistema existente normalmente um processo lento. Os usurios tero de ser in-

troduzidos no idioma Cucumber e Gherkin. E a criao de etapas especficas para a sua prpria plataforma quase impossvel sem o conhecimento de Ruby. Os ambientes nos quais as equipes de desenvolvimento e operao cooperam estreitamente tm uma vantagem clara aqui. Desenvolvedores contribuem com a lgica da aplicao, a equipe de qualidade define cenrios de teste e os administradores focam o lado operacional dos seus sistemas de monitoramento. Alm de pequenos bugs e uma enorme lista de desejos [9] para o Cucumber-Nagios, o projeto tambm pode incluir mais etapas predefinidas. Agora cabe comunidade de cdigo aberto contribuir. Se isso acontecer, o Cucumber-Nagios ter de uma vez por todas potencial para se tornar mais difundido e poder abrir caminho para uma infraestrutura orientada por comportamento.

Mais informaes
[1] Jenkins: http://jenkins-ci.org/ [2] CruiseControl: http://cruisecontrol.sourceforge.net/ [3] Cucumber-Nagios: http://auxesis.github.com/cucumber-nagios/ [4] Cucumber: http://cukes.info/ [5] Gherkin: https://github.com/aslakhellesoy/gherkin [6] Mechanize: http://mechanize.rubyforge. org/mechanize/Mechanize.html [7] Net::SSH: http://net-ssh.rubyforge.org/ [8] GivenWhenThen convenes no Cucumber: https:// github.com/aslakhellesoy/cucumber/wiki/Given-When-Then [9] Questes Cucumber-Nagios: https://github. com/auxesis/cucumber-nagios/issues

Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/5253

Linux Magazine #79 | Junho de 2011

65

ANLISE | Shell com PHP

Acesso Shell baseado em web

ANLISE

Jogo de fora
Os rewalls em geral bloqueiam o acesso via interpretador de comandos para usurios em uma rede corporativa ou em um cyber caf. Felizmente, ferramentas como o PHP Shell e Shell in a Box colocam o Shell em uma janela do navegador. por Wolfgang Dautermann

raas ao Shell Seguro (SSH), que torna o gerenciamento de um servidor remoto muito fcil, e o redirecionamento de programas no X, que significa poder at mesmo usar programas grficos para as tarefas de gerenciamento em seu computador domstico. Infelizmente, em um ambiente corporativo ou em um cyber caf, provvel que voc no tenha permisso para instalar programas adicionais, ou as configuraes do firewall sero to restritivas que voc no poder fazer nada alm de acessar e utilizar o protocolo HTTP ou HTTPS. O PHP Shell e o Shell in a Box lhe daro opes para acessar o seu servidor.

PHP Shell
O PHP Shell suporta o acesso a servidores via interpretador de comandos para os casos onde o administrador do servidor ou do firewall o bloqueie. Tudo o que voc precisa de um servidor web capaz de executar comandos PHP para executar seus comandos Shell. O PHP SafeMode, que uma

tentativa (legada) de tornar o PHP seguro em servidores web que hospedam vrios sites aorestringirvrios comandos, deve ser desativados para esta ferramenta funcionar. A instalao muito simples: faa o download da ltima verso do PHP Shell [1] e descompacte o arquivo ZIP em um diretrio do seu servidor web. Voc precisa definir uma senha para isso; para faz-lo, v at o endereo http://www.exemplo.com/phpshell/ pwhash.php (tomando o cuidado de substituir www.exemplo.com pelo nome do seu site) e entre com seu nome de usurio e senha desejados. Voc ento, deve adicionar uma linha que lhe for retornada aps a informao do usurio e senha, na seo [users] do seu arquivo de configurao config.php. Se precisar, pode adicionar diversos usurios de uma s vez. Aps completar este passo, o PHP Shell est pronto para ser usado. Em seguida, voc pode ir at o endereo http://www.exemplo.com/ phpshell/phpshell.php e logar com

a combinao de usurio/senha (gura 1) para carregar a seo Shell no navegador. Agora voc pode digitar um comando Shell no prompt de comando $ na parte inferior da janela, ou pressionar a tecla [Enter] e clicar em Execute Command (Executar Comando) para executar o comando e ver os resultados na janela do interpretador de comandos (gura 2). Existem certas restries ao Shell, como o PHP Shell ir lhe mostrar no navegador. Voc no pode utilizar comandos interativos, pois no possvel selecionar opes entre as telas. O comando deve caber em uma linha; e o PHP Shell sabe quando um comando precisa ser continuado. Por exemplo, voc no pode fazer um loop em mltiplas linhas, tarefa que voc poderia fazer em um Shell padro como:
$ for i in a b c ; do > echo $i > done

66

www.linuxmagazine.com.br

Shell com PHP | ANLISE

No entanto, voc pode colocar o comando em uma linha simples:


for i in a b c ; do echo $i ; done

Um comando deve ser completado em certo perodo de tempo (tipicamente 30 segundos). Este requisito no uma restrio do PHP Shell; ao invs disso, limites configurveis usados pelo servidor web Apache (a diretiva Timeout) e pelo PHP (a configurao max_execution_time no arquivo global php.ini) podem limitar o tempo de execuo. Os comandos so executados com o UID/GID (identificador de usurio e identificador de grupo de usurios) do servidor web, que voc pode verificar executando o comando id. Esta caracterstica til, pois o acesso ao FTP ocorre em geral por um UID diferente. Por exemplo, caso precise criar um diretrio no qual o servidor web grava arquivos, a no ser que voc seja o usurio root, poder criar um diretrio que tenha permisses de escrita globais com FTP ou SSH. Em comparao, o PHP Shell lhe permite criar um diretrio no qual o acesso a gravao restrito ao servidor web. Para alterar o tamanho da janela do interpretador de comandos, use a ferramenta scaling na parte inferior direita; apenas entre com o valor desejado e ento execute o prximo comando. O PHP Shell inclui um editor simples (editor nome_de_arquivo) que lhe permite editar arquivos eles devem ser escritos pelo UID do servidor web. Ele tambm inclui uma funo simples de histrico que lhe permite a navegao entre os comandos anteriores e prximos, pressionando as teclas para cima e para baixo; no entanto, ele no suporta caractersticas mais avanadas como pesquisas no histrico. Desconsiderando a especificao de usurio/senha (a senha tambm pode ser armazenada em formato

Figura 1: Janela de login do PHP Shell.

plano, o que, contudo, no recomendado), voc pode configurar apelidos no Shell e um diretrio /home para o PHP Shell no arquivo de configurao config.php. O armazenamento de senhas criptografadas (com o pwhash.php) somente ir ajud-lo a prevenir uma tentativa de login caso um invasor tente comprometer o arquivo de configurao. A segurana do PHP Shell depende da forma como o acesso ir ocorrer via servidor web (HTTPS), j que um invasor poder capturar qualquer comando que entrar, assim como sua sada.

O Shell in a Box (gura 3) pode ser muito til se voc tiver acesso Shell ao servidor e puder instalar e executar seus prprios programas mas prefere, ou forado, a usar o navegador como cliente. Uma viso geral e uma demonstrao desta ferramenta web baseada em Ajax podem ser encontradas no website do projeto [2]. O Shell in a Box no includo nos repositrios padro. Os usurios de Debian/Ubuntu podem baixar o pacote no website do projeto e installo. Usurios de outras distribuies Linux devero baixar e instalar o

O Shell in a Box

Figura 2: O PHP Shell em ao.

Linux Magazine #79 | Junho de 2011

67

ANLISE | Shell com PHP

host1/ para se conectar ao endereo host.exemplo.com e usar uma URL de http://localhost:4200/host2/ para

Figura 3: O Shell in a Box em ao.

projeto por conta prpria com os comandos tpicos ./configure, make e make install, que instalaro o Shell in a Box no diretrio /usr/local. Diferentemente do PHP Shell, o Shell in a Box vem com um servidor web prprio que escuta a porta 4200 por padro. Sua primeira experincia com o Shell in a Box em uma mquina local provavelmente ser descriptografada; contudo, adicionar a camada de segurana Secure Sockets Layer (SSL) em um ambiente de produo em um servidor web de fato uma boa ideia. O SSL uma camada intermediria de criptografia baseada no protocolo TCP/IP. Sendo assim, ele suporta a criptografia de protocolos existentes (HTTP, PHP3, IMAP etc.). O Shell in a Box tambm pode fornecer vrios servios. A sintaxe geral do aplicativo construda da seguinte forma:
shellinaboxd -s WEBPATH:SERVICETYPE

Isso assume que o servidor SSH est sendo executado (pelo menos no dispositivo loopback). Fornece um login SSH ao computador host.exemplo.com no sistema local com o caminho http://localhost:4200/external-host/:
shellinaboxd -t -s /external-host/:SSH:host. example.com

Um servidor SSH deve estar em execuo para que este processo funcione, o que significa que voc pode usar o comando shellinabox como um gateway para os computadores que, de outra forma, estariam inacessveis. Execute o programa top no endereo http://localhost:4200/systemstate/ usando o UID dauti e o grupo users (com o diretrio de trabalho /):
shellinaboxd -t -s /systemstate/:dauti:users:/: /usr/bin/top

Nos seguintes exemplos, note o parmetro -t que desativar o SSL temporariamente: Fornece um Shell de login no sistema local no endereo http://localhost:4200/ (somente disponvel para o usurio root):
shellinaboxd -t -s /:LOGIN Fornece um login SSH Shell

Um alerta: ser capaz de visualizar o status do sistema no navegador importante, mas esta caracterstica tambm lhe permite acessar opes interativas do comando top (como pressionar a tecla [k] para matar um processo). O processo shellinaboxd pode fornecer mltiplos servios (como um login em mltiplos computadores):
shellinaboxd -t -s /host1/:SSH:host.exemplo.com -s /host2/:SSH:host2.exemplo.com

abrir uma conexo SSL para outra mquina (como host2.exemplo.com). Ao contrrio do PHP Shell em que cada linha de entrada processada e os resultados so retornados para o navegador, o Shell in a Box tambm suporta atividades interativas (baseadas em texto), como o uso de editores como Vi, Joe e assim por diante. Apesar de o desempenho no ser to bom como em um terminal de texto normal, voc provavelmente no notar maiores restries. (A demonstrao bb da biblioteca aalib ASCII bastante inexpressiva no navegador, mas voc pode querer v-la. No openSUSE/Ubuntu/Debian, voc pode instalar o pacote bb e assist-la em um terminal normal). Se voc tiver a inteno de usar o Shell in a Box em um servidor de produo, deve tornar o servio seguro com o SSL. O Shell in a Box vem com este recurso embutido. Se voc deixar de usar o parmero -t (ou --disable-ssl), o Shell in a Box dever por padro fornecer o servio via HTTPS. Note que voc precisar de um certificado, que deve residir no diretrio atual (voc pode alterar o diretrio do certificado usando a opo --cert-DIRECTORY). Para mais detalhes sobre o certificado, veja o quadro 1.

Concluso
O PHP Shell e o Shell in a Box trazem as facilidades do Shell para a janela do seu navegador. Voc pode tentar usar estas teis ferramentas se precisar acessar o Shell a partir de um cyber caf ou atravs de um firewall. Lembre-se no entanto, de que o acesso ao interpretador de comandos uma ferramenta poderosa e que demanda grande ateno

no sistema local com o caminho


http://localhost:4200/: shellinaboxd -t -s /:SSH

Por exemplo, voc pode usar uma URL como http://localhost:4200/

68

www.linuxmagazine.com.br

Shell com PHP | ANLISE

segurana. Voc deve sempre usar criptografia e tomar as precaues necessrias para garantir que estas ferramentas no criaro uma brecha para os invasores.

Quadro 1: Criptograa e certicados


Os certicados digitais so emitidos por autoridades certicadoras, que em geral fornecem este servio mediante o pagamento de uma taxa, apesar de projetos da comunidade como o Cacert [3], tambm os emitirem. O navegador automaticamente identica o certicado como legtimo, porque ele reconhece e cona na autoridade certicadora e usa a chave pblica do servidor, obtida atravs da entidade certicadora, para criptografar a comunicao com o servidor. Voc tambm tem a opo de criar um certicado autoassinado, que no oferece a identicao da autoridade e, assim, no to seguro quanto aquele assinado por uma autoridade certicadora. O Shell in a Box supostamente cria certicados autoassinados [4], mas este processo nem sempre funciona. Verique a documentao ou visite a pgina web para maiores detalhes sobre o funcionamento de certicados no Shell in a Box.

Mais informaes
[1] PHP Shell: http://phpshell. sourceforge.net/ [2] Shell in a Box: http://code. google.com/p/shellinabox/ [3] CAcert: http://www. cacert org/ [4] Assuntos relacionados ao Shell in a Box: http://code. google.com/p/shellinabox/ issues/detail?id=59#c11

Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/5250

www.lpi-brasil.org
Linux Magazine #79 | Junho de 2011

69

TUTORIAL | VoIP com Asterisk - parte VIII

Asterisk descomplicado

VoIP com Asterisk parte VIII


O sistema telefnico ultrapassado, presente at pouco tempo atrs nas empresas, prolco em cobranas: cada novo recurso ativado requer uma nova ativao de servio, com o preo adicionado ao pagamento mensal. hora de mudar. hora de criar sua prpria central VoIP. por Stefan Wintermeyer

TUTORIAL

a edio 78 da Linux Magazine, voc aprendeu sobre telefones analgicos e o envio e recebimento de fax. Nesta edio, vamos abordar um projeto Asterisk GPL comunitrio. Com um kit de telefonia, ser possvel criar um sistema telefnico completo com suas caractersticas clssicas tais como: agenda telefnica, usurios mveis e implementao em massa. Mos obra!

Comunidade na linha
Nos primeiros artigos desta srie, voc obteve acesso s informaes necessrias para a instalao manual e a configurao correta necessrias para criar sua central telefnica com Asterisk. Seja para uma casa, um escritrio ou uma pequena empresa, uma soluo de telefonia pode utilizar um computador mais antigo como servidor transformando o Asterisk em um sistema de telefonia ideal. Mas, e se uma empresa quiser substituir seu velho sistema proprietrio com 100 funcionrios atendendo ligaes em ramais individuais por uma central com Asterisk, ento possvel ver o projeto de uma forma diferente. Dependendo do salrio por hora de um atendente e do hardware utilizado em um sistema deste tipo, o custo varia muito rapidamente entre R$1000

e R$2000 incluindo o valor dos custos de licenas de software para cada ponto de atendimento. Alm disso, administrar os usurios e gerenciar as inovaes que surgem todos os dias na mesma medida em que a telefonia VoIP torna-se mais moderna, uma rdua tarefa, se feita da forma antiga. Outro problema freqente migrar a agenda de telefones central do sistema antigo para os novos telefones SIP, o que significa que a programao completa do plano de discagem e da lgica da organizao dos ramais deve partir do zero. Por razes de custo, tarefas como estas no fazem sentido, pois na maioria dos casos no necessrio iniciar o uso do Asterisk a partir do zero. Para cenrios comuns, h muito boas solues baseadas em Asterisk, voc pode utiliz-las e melhor-las expandindo-as conforme a sua necessidade.

Asterisk++
A princpio, todas as solues padro do Asterisk utilizam um servidor web Apache com PHP e um banco de dados. Para oper-lo, necessrio gerar um arquivo de configurao com todas as informaes de um plano de discagem. So armazenadas todas as configuraes no banco de dados e seus valores so recuperados em tempo real

a partir das informaes contidas no plano de dicagem. H alguns projetos comunitrios que exigem nenhum investimento e possuem grande contribuio da comunidade. Estes so provavelmente os trs projetos comunitrios mais importantes do Asterisk: Trixbox [1] uma das solues mais antigas - desde o Asterisk@Home, mantido atualmente por uma empresa independente, que oferece uma edio comunitria da ferramenta e que pode ser alterada pelos usurios. Em dezembro de 2007, houve uma certa agitao na comunidade do software livre, porque o Trixbox parecia possuir secretamente os poderes para executar comandos no sistema [2]. Switchvox [3] oferece recursos semelhantes aos do Trixbox e tambm pode ser administrado atravs de uma interface web. O software foi aparentemente to bem desde o seu lanamento, que a Digium comprou o produto e o incluiu em sua carteira de produtos oferecidos. Asterisk Now [4] originado do projeto Switchvox e, tecnicamente, embora seja muito superior, h duvidas se o projeto ir sobreviver. O desenvolvimento de novidades durante vrios meses permaneceu estacionado. Outro ponto negativo, que tambm no possvel excluir os elementos

70

www.linuxmagazine.com.br

VoIP com Asterisk - parte VIII | TUTORIAL

do Switchvox Digium em um Asterisk Now que j esteja em funcionamento. Todos so projetados para o mercado americano e preparados para os problemas daquele pas. Mas os problemas comeam com a falta de mdulos em nosso idioma, e termina com o baixo suporte ou a ausncia total de suporte para ISDN. As extenses virtuais dos ramais no funcionam muito bem e uma empresa de mdio porte teria que enviar todas as chamadas atravs de uma central de IVR (Interactive Voice Response, ou Resposta Interativa de Voz, ou seja, o conhecido atendimento eletrnico).

Software comunitrio
Para construir um servidor VoIP Asterisk avanado, utilizei um software alemo, o Amooma Gemeinschaft (que significa Comunidade) [5] , projeto comunitrio que foi lanado h pouco tempo e foi o primeiro a divulgar seu cdigo online. O nome do aplicativo vem da idia de que a comunidade pode, com este kit de ferramentas e de vrios servidores Asterisk, criar um cluster VoIP. Uma descrio completa sobre a instalao do software no se encaixa neste artigo, at mesmo porque isso no necessrio, uma vez que o software modular e voc pode usar os componentes individuais com suas prprias configuraes ou no. Os recursos de cluster, por exemplo, provavelmente sero interessantes apenas para grandes empresas. Este artigo ir ajud-lo a implementar o software em um sistema de telefonia simples, com todas as caractersticas tpicas para isso.

Compre o telefone certo


O usurio final ir conseguir utilizar o sistema Asterisk sem grandes problemas quando os telefones VoIP utilizados possurem as mesmas caractersticas que os telefones do sistema antigo ou melhores, claro. Esta soluo pode parecer um pouco arbitrria, uma vez que os dispositivos

SIP so facilmente substituveis por outros mais modernos e costumam ter algumas caractersticas proprietrias. Nem todos os telefones SIP so capazes de operar nesse sistema. Na seleo do aparelho certo, deve ser avaliada no apenas as caractersticas bvias, como qualidade de voz, aparncia e recursos bsicos do telefone. Fatores como a capacidade do dispositivo, suas configuraes de personalizao, fcil seleo de linhas adicionais e outros recursos, devem ser levados em conta. O telefone escolhido tambm deve aceitar configuraes via navegador. Voc precisa ainda ter a possibilidade de exibir seus prprios menus dinmicos no visor do aparelho e claro, o catlogo telefnico. O catlogo telefnico no ser um grande problema caso voc esteja configurando um sistema Asterisk novo, mas ser um obstculo caso voc tenha de programar o plano de discagem completo do incio. Finalmente, alguns aparelhos oferecem um mdulo adicional que para muitos callcenters uma obrigao, mas um smbolo de status para outros usurios. Se voc ainda est em dvida quanto melhor escolha de telefones, conhea alguns aparelhos importados que possuem tudo o que necessrio para operar em sistemas VoIP: Aastra Detewe 55i Siemens Open Stage (gura 1), que muitos usurios finais consideram como o melhor. Snom 360 e 370 (gura 2) O software alemo que mencionei anteriormente, o Amooma, suporta todos os telefones listados. Mas tome o especial cuidado de manter o firmware de cada telefone VoIP atualizado! Costuma circular por a, muitas histrias sobre bugs em verses de firmware mais antigas, que so divulgadas em diversos fruns pela Internet. Na prxima edio da Linux Magazine, voc ir aprender como provisionar suas extenses atravs de DHCP, recursos de lista telefnica e redirecionamento de chamadas. At l!

Figura 1: O Siemens Open Stage


considerado por muitos usurios como o mais bonito..

Figura 2: O Snom 360 um dos


principais aparelhos importados com recursos VoIP.

Mais informaes
[1] Trixbox: http://www. trixbox.org/ [2] Discusso sobre o Trixbox: http://yro. slashdot.org/article. pl?sid=07/12/16/222243 [3] Switchvox: http://www. switchvox.com/ [4] Asterisk Now: http:// www.asterisknow.com/ [5] Amooma, software alemo: http://www.amooma. de/gemeinschaft

Gostou do artigo? rtigo?


Queremos ouvir sua opinio. a Fale conosco em cartas@linuxmagazine.com.br gazine.com br Este artigo no nosso site: e: br/a /528 http://lnm.com.br/article/5286

Linux Magazine #79 | Junho de 2011

71

TUTORIAL | Anlise e soluo de problemas com ACH

Anlise de hipteses concorrentes

TUTORIAL

Solues para seus problemas


Vamos mostrar como a ferramenta de cdigo aberto ACH, desenvolvida pela CIA, pode ajud-lo atravs de uma abordagem estruturada e sistemtica, a encontrar solues para problemas nos negcios. por Nathan Willis

lm de cuidar de uma rede de espies, a Agncia Central de Inteligncia Americana (CIA, na sigla em ingls) tambm trabalha duro com software de cdigo aberto. Uma de suas mais recentes criaes o ACH (Analysis of Competing Hypothesis ou Anlise de Hipteses Concorrentes) [1], um aplicativo web de anlise que pode ser usado por equipes para quebrar a complexidade de problemas e chegar a um consenso. A metodologia ACH foi desenvolvida nos anos 70 para auxiliar equipes de analistas da CIA a examinar informaes conflitantes que eram recebidas a respeito de problemas, testar possveis explicaes e encontrar a melhor soluo, sem tendenciosidade. O aplicativo web que implementa esta metodologia foi desenvolvida internamente [2] e disponibilizada como software de cdigo aberto no incio de 2010. O ACH especialmente til para problemas em que haja grande presso emocional. Nos negcios, se voc no usar uma abordagem sistemtica de uma situao, corre o risco de exagerar ao reagir s aes do seu concorrente ou

falhar em perceber sinais de aviso por causa do envolvimento emocional em que a sua prpria equipe se encontra.

Como o ACH funciona


Trocando em midos, para um determinado problema, o ACH lista as possveis explicaes (ou hipteses) atravs de um ponto de vista e as evidncias contrrias atravs de outro. Os membros da equipe podem verificlas, uma por uma, anotando quando creem que uma evidncia sustenta ou no uma hiptese e marcando as evidncias que acreditam ser incorretas. Neste ponto, o resultado uma Matriz Pessoal para cada participante. O software combina todas as matrizes em uma s, formando um mapa de calor (heat map) de todas as contribuies dos participantes da equipe. Esta

abordagem combinada melhor que uma simples votao, pois destaca as reas especficas em que h consenso e aquelas em que h desentendimento, permitindo equipe focalizar as discusses com mais eficcia e falar mais de evidncias do que de concluses. O ACH tambm classifica e gradua cada hiptese para destacar a que tem mais sustentabilidade a partir da evidncia e da sua equipe. O ACH no o mtodo perfeito para todo o tipo de problema de inteligncia de negcio ele no poder te dizer a hora certa de lanar um determinado produto ou quando expandir para um novo segmento de mercado. O mtodo funciona melhor quando voc precisa interpretar os significados de fatores externos, como a sua concorrncia, um cliente etc. Como exemplo, suponha que voc tenha uma pequena empresa de soft-

Figura 1: Congurao do ACH.

72

www.linuxmagazine.com.br

Anlise e soluo de problemas com ACH | TUTORIAL

ware com um produto cujas vendas vo bem: seus ganhos so bons e os clientes esto satisfeitos com seu suporte. Ento, uma gigante das buscas na web, com reputao de lanar softwares livres, comea a vazar rumores de que ir entrar no seu nicho. Como ter certeza? D para arriscar alguma atitude? Assumindo o pior, voc pode se precipitar e derrubar seus preos, o que pode ser um erro, caso nenhum produto concorrente aparea de verdade. O ACH pode te ajudar a, de modo organizado, fazer uma anlise da situao, enumerar as evidncias e colocar cada possibilidade em seu lugar. Com ele, voc pode ser mais cauteloso, remover o fator emocional e lidar com os riscos com maior eficincia. Para ter uma ideia melhor de como o ACH funciona, leia a documentao da metosogolodia do projeto [3]. Contudo, como se trata de uma tcnica nova para a maioria dos negcios, ainda pode ser um tanto difcil antever alguma aplicabilidade baseado apenas na documentao.

Figura 2: A tela inicial do ACH exibe atividades recentes e projetos pessoais.

Instalao do ACH
O projeto de cdigo aberto ACH pode ser executado em servidores LAMP modernos: Apache 2 como servidor web; MySQL 5 como banco de dados; e PHP 5.2. Alm destes requisitos, pode ser desejvel instalar uma ferramenta de administrao do MySQL, como o phpMyAdmin, para ajudar no processo de configurao inicial ainda que o cliente de linha de comando do mysql funcione to bem quanto ela. A verso atual do ACH ainda, projetada para ser executados em uma intranet corporativa e no em um servidor de acesso pblico. Esta verso tem controles detalhados para cada projeto, mas no suporta autenticao forte ou TFA para dar acesso ao sistema. Portanto, para ter um mnimo de segurana, no execute o aplicativo em seu servidor principal. A ltima verso a 1.0.3alpha1, de outubro de 2010, que pode ser baixada

sob a forma de um pacote TAR no site do projeto ACH. Extraia seu contedo na raiz do servidor web ou em um subdiretrio, como /var/www/ach/. O local escolhido irrelevante; no entanto, para que os links simblicos funcionem corretamente, voc ter de configurar o pacote de maneira diferente para cada caso (gura 1). O pacote no inclui um arquivo .htaccess com regras relevantes de reescrita de URL. Portanto, voc deve ou extrair e copiar os arquivos na linha de comando, ou certificar-se de que o Nautilus esteja configurado para mostrar arquivos ocultos para que voc no ignore o .htaccess. Em seguida, abra o arquivo parts/ includes.php em um editor de texto. Este o arquivo de configurao bsico. No comeo, h duas diretivas onde a URL base do pacote informada. A primeira usada pelos componentes HTML e JavaScript. A segunda, pelo PHP. Fornea a URL completa do pacote ACH em seu servidor web, tal como http://serverbox.lan/ach/ e certifique-se de incluir todas as barras (/). Na prxima linha, digite o domnio do seu e-mail (minhaempresa.com, por exemplo). Grave este arquivo, abra o code/common_db.php e fornea as configuraes do banco de dados MySQL (endereo do banco de dados, MySQL usurio e senha, alm do nome do banco de dados a ser usado pelo ACH). Sua escolha

livre para qualquer um destes ltimos trs valores, uma vez que tero de ser criados dentro do MySQL, antes de prosseguir. Em um terminal, crie o banco de dados com o nome achdb:
mysql u root h localhost CREATE DATABASE achdb

Para criar o usurio do banco de dados (database user), execute o seguinte comando:
mysql u root h localhost GRANT alter,create,delete,drop,insert, update,select ON achdb.* TO achuser IDENTIFIED BY a_sua_senha

Por padro, o Ubuntu no usa senha para o usurio root do MySQL, motivo pelo qual estes comandos no incluem a opo -p. Se sua configurao for diferente, no esquea de incluir esta opo e fornecer a senha. No prximo passo, ser necessrio o script SQL, j includo, (db.sql) para criar as tabelas:
mysql -u achuser -p -D achdb < db.sql

Finalmente, se voc tiver o ACH instalado em um subdiretrio do seu servidor, abra o arquivo .htaccess e edite a linha RewriteBase de forma que seus valores contenham o nome do subdiretrio de sua escolha (nos exemplos, usei /ach). No inclua as barras aqui. Caso tenha instalado o

Linux Magazine #79 | Junho de 2011

73

TUTORIAL | Anlise e soluo de problemas com ACH

ACH no diretrio root de documentos do servidor, voc pode deixar o arquivo .htaccess como est. Agora ser possvel ver a pgina do ACH em seu navegador em http://serverbox.lan/ ch/. O prximo passo ser criar uma conta e comear a incluir os projetos.

Se voc no parte do problema...


Em relao a outros aplicativos web, o ACH faz uma abordagem diferente das contas dos usurios e das suas permisses. No h uma conta administrativa; todas as contas podem criar novos projetos de problemas. Por outro lado, dentro de cada projeto, s seu criador pode ajustar sua visibilidade, adicionar ou aprovar novos membros na equipe, adicionar e editar hipteses, evidncias e outros componentes. O sistema , portanto, mais parecido com uma rea de trabalho compartilhada do que com um servio web hierrquico, como um webmail ou um sistema gestor de contedos. Para comear, crie sua conta de usurio, atravs do link Sign up for an account. Muitos dos campos de contato e de solicitao de outras informaes so opcionais. No entanto, dentro de um ambiente de equipe, eles podem ser muito teis, se corretamente preenchidos. Assim que voc tiver projetos ativos sendo executados, a tela inicial, Home, ir exibir as atividades recentes, bem como as mais novas evidncias e hipteses (gura 2). Contudo, antes de qualquer coisa, a nica opo possvel Create New Project (Criar Novo Projeto). Na pgina Create New Project, necessrio informar um ttulo curto para o novo projeto e preencher os dados com uma rpida descrio do problema. Logo abaixo, esto as opes de configurao de privacidade ACH (gura 3). Voc pode optar por iniciar um projeto privativo (Private Project) que no ser listado na pgina principal

do ACH, ou um projeto aberto (Open Project). Se voc escolher a segunda opo, ainda ser possvel restringir sua visibilidade a usurios aprovados e opcionalmente, restringir a entrada de membros a usurios aprovados. Os padres do aplicativo determinam que os projetos so visveis ao pblico, com restrio entrada de novos membros, ou seja, ningum pode analisar dados ou contribuir com a matriz da equipe sem antes requisitar a entrada na equipe, o que pode ser aprovado ou

no. Os membros da equipe podem se juntar ao projeto de duas formas voc pode convid-los, usando o link Invite, abaixo da seo Show details do projeto, ou, no caso dos projetos abertos, eles podem requisitar sua subscrio atravs da interface web do ACH as quais so exibidas na pgina inicial do ACH, quando voc faz o login. Uma vez criado o seu projeto, a prxima tela pede as hipteses. So exibidos quatro quadros na tela, mas voc pode adicionar outros. A escolha

Figura 3: Edio das opes do projeto.

74

www.linuxmagazine.com.br

Anlise e soluo de problemas com ACH | TUTORIAL

de boas hipteses fundamental em conjunto, suas hipteses precisam cobrir todas as respostas razoveis possveis para o problema, mas precisam ser tambm mutuamente excludentes. E elas precisam ainda ser detalhadas. Por exemplo, suponha estar trabalhando no problema Walter est se comportando de forma suspeita: ele um espio corporativo? As respostas Sim e No podem ser mutuamente excludentes, sem, contudo, ajudar muito a explorar todas as possibilidades. Um conjunto melhor de alternativas inclui Walter um espio, Walter est planejando deixar a empresa e levar a sua equipe, Walter est insatisfeito com o baixo rendimento do seu trabalho e Walter tem distraes no relacionadas ao trabalho e precisa da nossa ajuda. Mantenha curta a descrio de cada hiptese, pois elas so exibidas completas nas matrizes de anlise. Nestas, podem ser adicionadas descries mais detalhadas e claras, as quais sero exibidas como dicas ao passar o mouse por cima. Clique em Save quando terminar de editar. Em seguida, ser solicitado que voc fornea um argumento para cada evidncia que contribua para analisar a situao, que pode ser uma ocorrncia ou uma conversa. O ACH prov seis tipos de evidncias predefinidas ( divertido como elas refletem sua origem na CIA): Human Intelligence (um relatrio, por exemplo); Signal Intelligence (um documento); Imagery (um documento, porm de um tipo diferente); Open Source Intelligence (arquivos pblicos); Measurement and Signature Intelligence (informaes tcnicas ou provenientes de pesquisa de dados); e Assumption (Suposio). Nem todo tipo de inteligncia ser aplicvel a todo tipo de problema. Voltando ao problema do provvel espio, Walter: algum pode ter ouvido ele reclamar da falta de transparncia da gerncia na copa

Figura 4: Preenchimento de uma matriz pessoal no ACH e deciso do grau de


credibilidade das evidncias.

(human intelligence) e sua conduta pode ter se degradado (measurement and signature intelligence), mas h pouca chance de encontrar algo nos arquivos pblicos que prove a sua inocncia ou culpabilidade. possvel marcar qualquer trecho de uma evidncia com advertncias ou notas e adicionar uma Classification (inclusive confidencial, ou Top Secret), anexar uma data ou hora e associar isto a um cdigo de referncia ou a um nmero serial de uma fonte. O cdigo de referncia um ponteiro voltado para um dado externo, tal como uma URL ou uma documentao; o nmero serial de uma fonte a origem da informao. A origem importante porque, caso descubra-se que esta fonte no confivel, ser desejvel sinalizar todas as suas evidncias como suspeitas. As opes de data e hora ajudam a ordenar as evidncias dentro do projeto, o que pode contribuir para a identificao de tendncias. Voc deve marcar a opo de Credibility (Credibilidade) em cada elemento de evidncia/ argumento que fornecer. Esta op-

o ajuda a eliminar evidncias potencialmente confusas e uma das colunas padro exibidas na matriz.

Consistncia e consenso
Ao terminar de fornecer todas as evidncias e argumentos, clique no link Edit your consistency scores (Editar a graduao das consistncias) e comece a analisar a sua matriz pessoal. A metodologia ACH determina que se trabalhe horizontalmente a matriz, linha a linha, marcando as linhas das evidncias/argumentos como Very Inconsistent, Inconsistent, Neutral, Consistent ou Very Consistent a cada hiptese (gura 4). Trabalhar linha a linha importante por for-lo a observar cada pea de evidncia individualmente, o que no ocorreria se o fluxo do trabalho corresse de modo vertical. Ao terminar, voc pode clicar em Stop editing, fazendo com que o ACH recarregue sua matriz pessoal e atribua um cdigo de cores as suas respostas. A qualquer hora, voc pode retornar e alterar as respostas dadas. Assim que todos os outros membros da equipe terminarem suas

Linux Magazine #79 | Junho de 2011

75

TUTORIAL | Anlise e soluo de problemas com ACH

matrizes pessoais, voc pode olhar a tela Group Matrix (gura 5). O mapa de calor retrata as reas de consenso e as de discordncia. As cores so mais escuras onde h mais divergncias, de forma a ser possvel ter uma viso instantnea das reas para onde sua equipe precisa direcionar seu foco. Os pontos onde h consenso so brancos, e cada ponto sinalizado com um retngulo azul, branco ou amarelo, indicando se o grupo chegou a um acordo sobre se a evidncia suporta ou contradiz a hiptese. No exemplo, possvel ver um grande desacordo na clula (1,1) que corresponde ideia de que as reclamaes de Walter quanto falta de transparncia da gerncia suportam a hiptese de que ele um espio. Esta informao permite fazer um exame bem especfico da questo em discusso todas as partes parecem concordar que Walter fez as reclamaes, mas o que se est debatendo o significado delas. Da mesma forma, possvel observar consenso no fato de que viajar nas frias para a cidade onde reside o chefe da empresa concorrente sustenta a hiptese de ele ser um espio. Tambm h consenso quan-

to ao fato de ser incoerente estar excessivamente estressado fora do trabalho, depois das frias (ele no deveria estar mais relaxado?). possvel gerar uma matriz comparativa entre as suas prprias respostas e as de outro participante usando a barra de ferramentas abaixo da matriz de grupo. Esta viso de mapa de calor permite ver os pontos convergentes e divergentes entre os dois participantes. As outras ferramentas permitem ver as matrizes pessoais de outros usurios, criar matrizes privadas ou duplicadas que permitem separar partes do projeto ou imprim-las.

Saiba mais
O mapa de calor bsico deve apontar os pontos que necessitam de mais debate, apesar de ele no fazer uso de inteligncia artificial ou qualquer outro algoritmo para mostrar o que est acontecendo com o Walter. Para encontrar uma soluo, a equipe vai precisar analisar as evidncias e as hipteses e ento se reunir para falar sobre os resultados. Dentro do grupo, voc pode decidir quais argumentos so os mais persuasivos, quais so suspeitos e quais so irrelevantes o ACH pode ajudar a sintetizar esta

anlise e por fim, determinar a resposta mais provvel. Uma grande parte deste processo no pode ser automatizada o caso das discusses dentro das equipes que fazem as anlises. Contudo, todos os participantes do projeto podem deixar comentrios em cada linha de evidncia (disponibilizados como pgina web e relatrio XML), alm de uma thread das discusses dentro do projeto, disponvel atravs de um clique no cone Chat, no canto inferior esquerdo. possvel aprofundar-se mais em cada projeto com o Sort Evidence (Organizar Evidncia) e as ferramentas do Show Data Column (Coluna de Exibio de Dados) onde tambm se pode adicionar mais metadados viso da matriz para observar data/hora, tipo de inteligncia, cdigo, sinal ou peso da credibilidade de cada linha de evidncia/argumento diretamente (gura 6). Estes fatores no alteram os contedos da matriz principal, de forma que no contribuem com os pontos de desacordo ou os consensuais; mas podem ter valor inestimvel ao se discutir determinados dados com o grupo. A ferramenta Sort Evidence

Figura 5: Mapa de calor de uma matriz de grupo no ACH.

76

www.linuxmagazine.com.br

Anlise e soluo de problemas com ACH | TUTORIAL

Figura 6: Aprofundando-se na evidncia atravs do exame de metadados da evidncia ou argumento.

permite organizar as linhas de evidncia/argumento por meio de duas variveis quaisquer (grau de credibilidade, tipo de inteligncia, data etc.). Assim, possvel acessar informao adicional, tal como quando houve maior tendncia a sustentar uma hiptese ou outra ou quando um determinado tipo de inteligncia voltou-se para uma direo. A opo Sort Hypotheses (Organizar Hipteses) permite organizar por data ou graduar as hipteses por suas inconsistncias. O ACH coloca um valor de graduao abaixo do cabealho de cada coluna de hiptese que representa uma mdia do peso dos argumentos marcados como Inconsistent ou Very Inconsistent. Esta abordagem permite que tpicos problemticos venham tona e refora uma pea chave da metodologia ACH: focalizar qual evidncia diz no ser verdadeira, ainda que voc, intuitivamente, goste ou no dela. medida em que voc vai eliminando hipteses por este caminho, a reflexo prossegue e voc poder, eventualmente, ver-se frente nica explicao possvel. O projeto ACH ainda est sob desenvolvimento ativo, apesar de

que, ao se considerar a maturidade da metodologia, ele esteja provavelmente completo de recursos para o momento. Ser interessante ver o projeto ser integrado a outros pacotes de softwares corporativos, tais como engenharia de deciso, ERP e gesto de projetos. A inteligncia de negcios de cdigo aberto ainda um campo pequeno, mas est em crescimento. O ACH uma ferramenta fcil de usar que pode realmente possibilitar um

melhor gerenciamento de decises. Ao seguir o projeto ACH no Twitter [4], ser possvel conhecer estudos de casos de negcios que se beneficiam do uso do ACH e que podem dar ideias sobre como sua organizao pode se beneficiar tambm. Mesmo que voc esteja convencido de que a CIA secretamente controla o tempo ou transmite mensagens codificadas atravs da rede eltrica, o ACH uma bela pea de software a qual vale a pena dar uma olhada sria.

Mais informaes
[1] Pgina do projeto ACH: http://competinghypotheses.org/ [2] O software original: http://www2.parc.com/istl/projects/ach/ach.html [3] Como o ACH funciona: http://competinghypotheses. org/docs/The_ACH_Methodology_and_Its_Purpose [4] ACH no Twitter: http://www.twitter.com/OpenSourceACH

Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/5130

Linux Magazine #79 | Junho de 2011

77

SERVIOS

Linux.local
O maior diretrio de empresas que oferecem produtos, solues e servios em Linux e Software Livre, organizado por Estado. Sentiu falta do nome de sua empresa aqui? Entre em contato com a gente: 11 3675-2600 ou anuncios@linuxmagazine.com.br
Fornecedor de Hardware = 1 Redes e Telefonia / PBX = 2 Integrador de Solues = 3 Literatura / Editora = 4 Fornecedor de Software = 5 Consultoria / Treinamento = 6 Empresa
IMTECH Magiclink Solues F13 Tecnologia Nettion Tecnologia e Segurana da Informao Linux Shopp Megawork Consultoria e Sistemas Spirit Linux 3WAY Networks Instituto Online Linux Place Microhard TurboSite Zarafa Brasil iSolve Mandriva Conectiva Telway Tecnologia Fuctura Tecnologia

Cidade
Salvador Salvador Fortaleza Fortaleza

Endereo Bahia
Av. Antonio Carlos Magalhaes, 846 Edifcio MaxCenter Sala 337 CEP 41825-000 Rua Dr. Jos Peroba, 275. Ed. Metropolis Empresarial 1005, STIEP

Telefone
71 4062-8688 71 2101-0200 85 3252-3836

Web
www.imtech.com.br www.magiclink.com.br www.f13.com.br www.nettion.com.br

1 2 3 4 5 6

Cear
Rua Padre Valdevino, 526 Centro Av. Oliveira Paiva, 941, Cidade dos Funcionrios CEP 60822-130 85 3878-1900

Esprito Santo
Vila Velha Vitria Vitria Goinia Belo Horizonte Belo Horizonte Belo Horizonte Belo Horizonte Belo Horizonte Curitiba Curitiba Curitiba Recife Rua So Simo (Correspondncia), 18 CEP: 29113-120 Rua Chapot Presvot, 389 sl 201, 202 Praia do Canto CEP: 29055-410 Rua Marins Alvarino, 150 CEP: 29047-660 27 3082-0932 27 3315-2370 27 3227-5543 62 3232-9333 31 3224-7920 31 3284-0575 31 3281-5522 0800 702-9004 31 2626-6926 41 252-2977 41 3360-2600 41 3203-0375 www.linuxshopp.com.br www.megawork.com.br www.spiritlinux.com.br www.3way.com.br www.institutoonline.com.br corporate.linuxplace.com.br www.microhard.com.br www.turbosite.com.br www.zarafabrasil.com.br www.isolve.com.br www.mandriva.com.br www.telway.com.br www.fuctura.com.br www.clavis.com.br www.linuxsolutions.com.br www.multipla-ti.com.br www.nsi.com.br www.openit.com.br www.unipi.com.br

Gois
Av. Quarta Radial,1952. Setor Pedro Ludovico CEP.: 74830-130

Minas Gerais
Av. Bias Fortes, 932, Sala 204 CEP: 30170-011 Rua do Ouro, 136, Sala 301 Serra CEP: 30220-000 Rua Repblica da Argentina, 520 Sion CEP: 30315-490 Rua Paraba, 966, Sala 303 Savassi CEP: 30130-141 Rua dos Goitacazes, 103 Sala 2001 CEP: 30190-910

Paran
Av. Cndido de Abreu, 526, Cj. 1206B CEP: 80530-000 Rua Tocantins, 89 Cristo Rei CEP: 80050-430 Rua Francisco Rocha 1830/71

Pernambuco
Rua Nicargua, 159 Espinheiro CEP: 52020-190 81 3223-8348 21 2561-0867 21 2526-7262 21 2203-2622 21 2220-7055 21 2508-9103 22 2725-1041

Rio de Janeiro
Clavis Segurana da Informao Rio de Janeiro Linux Solutions Informtica NSI Training Open IT Unipi Tecnologias Rio de Janeiro Rio de Janeiro Rio de Janeiro Campos dos Goytacazes Novo Hamburgo Novo Hamburgo Gravata Lajeado Novo Hamburgo Porto Alegre Porto Alegre Mltipla Tecnologia da Informao Rio de Janeiro Av. Rio Branco 156, 1303 Centro CEP: 20040-901 Av. Presidente Vargas 962 sala 1001 Av. Rio Branco, 37, 14 andar CEP: 20090-003 Rua Arajo Porto Alegre, 71, 4 andar Centro CEP: 20030-012 Rua do Mercado, 34, Sl, 402 Centro CEP: 20010-120 Av. Alberto Torres, 303, 1andar Centro CEP: 28035-581

Rio Grande do Sul


4up Solues Corporativas Denitiva Informtica RedeHost Internet Solis DualCon Datarecover LM2 Consulting Pso. Calado Osvaldo Cruz, 54 sl. 301 CEP: 93510-015 Rua General Osrio, 402 - Hamburgo Velho Rua Dr. Luiz Bastos do Prado, 1505 Conj. 301 CEP: 94010-021 Av. 7 de Setembro, 184, sala 401 Bairro Moinhos CEP: 95900-000 Rua Joaquim Pedro Soares, 1099, Sl. 305 Centro Av. Carlos Gomes, 403, Sala 908, Centro Comercial Atrium Center Bela Vista CEP: 90480-003 Rua Germano Petersen Junior, 101-Sl 202 Higienpolis CEP: 90540-140 Av. Venncio Aires, 1137 Rio Branco CEP: 90.040.193 Rua dos Andradas, 1234/610 Centro CEP: 90020-008 Rua Santa Rita, 282 CEP: 90220-220 51 3581-4383 51 3594 3140 51 4062 0909 51 3714-6653 51 3593-5437 51 3018-1200 51 3018-1007 51 3331-1446 51 3301-1408 51 3024-3568 www.4up.com.br www.denitiva.com.br www.redehost.com.br www.solis.coop.br www.dualcon.com.br www.datarecover.com.br www.lm2.com.br www.lnx-it.inf.br www.tehospedo.com.br www.propus.com.br www.wshost.com.br www.digivoice.com.br www.dextra.com.br www.insignesoftware.com www.microcamp.com.br www.pc2consultoria.com

Lnx-IT Informao e Tecnologia Porto Alegre TeHospedo Propus Informtica Ws Host DigiVoice Dextra Sistemas Microcamp PC2 Consultoria em Software Livre Porto Alegre Porto Alegre Arthur Nogueira Barueri Campinas Campinas Carapicuiba

So Paulo
Rua Jerere, 36 Vista Alegre CEP: 13280-000 Al. Juru, 159, Trreo Alphaville CEP: 06455-010 Av. Andrades Neves, 1579 Castelo CEP: 13070-001 Av. Thomaz Alves, 20 Centro CEP: 13010-160 Rua Edeia, 500 - CEP: 06350-080 19 3846-1137 11 4195-2557 19 3213-2100 19 3236-1915 11 3213-6388

Rua Antnio Paioli, 320 Pq. das Universidades CEP: 13086-045 19 3256-6722

Insigne Free Software do Brasil Campinas

78

www.linuxmagazine.com.br

Linux.local | SERVIOS

Empresa
Epopia Informtica Redentor Go-Global AW2NET Async Open Source Delix Internet 2MI Tecnologia e Informao 4Linux A Casa do Linux Accenture do Brasil Ltda. ACR Informtica Agit Informtica Altbit - Informtica Comrcio e Servios LTDA. AS2M -WPC Consultoria Blanes Bull Ltda Commlogik do Brasil Ltda. Computer Consulting Projeto e Consultoria Ltda. Consist Consultoria, Sistemas e Representaes Ltda. Domnio Tecnologia tica Tecnologia Getronics ICT Solutions and Services Hewlett-Packard Brasil Ltda. IBM Brasil Ltda. iFractal Integral Itautec S.A. Komputer Informtica Konsultex Informatica Linux Komputer Informtica Linux Mall Livraria Tempo Real Locasite Internet Service Microsiga Locaweb Novatec Editora Ltda. Novell Amrica Latina

Cidade
Marlia Osasco Santana de Parnaba Santo Andr So Carlos So Jos do Rio Preto So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo

Endereo So Paulo (continuao)


Rua Gois, 392 Bairro Cascata CEP: 17509-140 Av. Yojiro Takaoca, 4384, Ed. Shopping Service, Cj. 1013 CEP: 06541-038 Rua Edson Soares, 59 CEP: 09760-350 Rua Orlando Damiano, 2212 CEP 13560-450 Rua Voluntrio de So Paulo, 3066 9 Centro CEP: 15015-909 Rua Franco Alfano, 262 CEP: 5730-010 Rua Teixeira da Silva, 660, 6 andar CEP: 04002-031 Al. Ja, 490 Jd. Paulista CEP: 01420-000 Rua Alexandre Dumas, 2051 Chcara Santo Antnio CEP: 04717-004 Rua Lincoln de Albuquerque, 65 Perdizes CEP: 05004-010 Rua Major Quedinho, 111, 5 andar, Cj. 508 Centro CEP: 01050-030 Av. Francisco Matarazzo, 229, Cj. 57 gua Branca CEP 05001-000 Rua Trs Rios, 131, Cj. 61A Bom Retiro CEP: 01123-001 Rua Andr Ampre, 153 9 andar Conj. 91 CEP: 04562-907 (prx. Av. L. C. Berrini) Av. Anglica, 903 CEP: 01227-901 Av. das Naes Unidas, 13.797, Bloco II, 6 andar Morumbi CEP: 04794-000 Rua Caramuru, 417, Cj. 23 Sade CEP: 04138-001 Av. das Naes Unidas, 20.727 CEP: 04795-100 Rua das Carnaubeiras, 98 Metr Conceio CEP: 04343-080 Rua Nova York, 945 Brooklin CEP:04560-002 Rua Verbo Divino, 1207 CEP: 04719-002 Av. das Naes Unidas, 12.901, 25 andar CEP: 04578-000 Rua Tutia, 1157 CEP: 04007-900 Rua Fiao da Sade, 145, Conj. 66 Sade CEP: 04144-020 Rua Dr. Gentil Leite Martins, 295, 2 andar Jd. Prudncia CEP: 04648-001 Av. Paulista, 2028 CEP: 01310-200 Av. Joo Pedro Cardoso, 39 2 andar Cep.: 04335-000 Av. Dr. Guilherme Dumont Villares, 1410 6 andar, CEP: 05640-003 Av. Dr. Lino de Moraes Leme, 185 CEP: 04360-001 Rua Machado Bittencourt, 190, Cj. 2087 CEP: 04044-001 Al. Santos, 1202 Cerqueira Csar CEP: 01418-100 Av. Brigadeiro Luiz Antonio, 2482, 3 andar Centro CEP: 01402-000 Av. Braz Leme, 1631 CEP: 02511-000 Av. Pres. Juscelino Kubitschek, 1.830 Torre 4 Vila Nova Conceio CEP: 04543-900 Rua Luis Antonio dos Santos, 110 Santana CEP: 02460-000 Rua Funchal, 418 Vila Olmpia Av. Alfredo Egdio de Souza Aranha, 100 Bloco B 5 andar CEP: 04726-170 Av. Rouxinol, 1.041, Cj. 204, 2 andar Moema CEP: 04516-001 Av. Cardoso de Melo, 1450, 6 andar Vila Olmpia CEP: 04548-005 Av. Brigadeiro Faria Lima, 3900, Cj 81 8 andar Itaim Bibi CEP: 04538-132 Rua Baro do Triunfo, 550, 6 andar CEP: 04602-002 Av. das Naes Unidas, 11.541, 16 andar CEP: 04578-000 Av. Brig. Luis Antonio, 2344 cj 13 Jd. Paulista CEP:01402-000 Rua Mourato Coelho, 299, Cj. 02 Pinheiros CEP: 05417-010 Av. Jabaquara, 2940 cj 56 e 57 Rua Joo Gomes Junior, 131 Jd. Bonglioli CEP: 05299-000 Av. Brig. Faria Lima, 1355, 19 Pinheiros CEP: 01452-919 R. Alexandre Dumas 1658 6, 7 e 8 andares Chcara Santo Antnio CEP: 04717-004 Av. Paulista, 925, 13 andar Cerqueira Csar CEP: 01311-916 Av. Naes Unidas, 12.995, 10 andar, Ed. Plaza Centenrio Chcara Itaim CEP: 04578-000 Rua Santa Ignia, 211/213, Box 02 Centro CEP: 01207-001 Rua So Jos, 1126 Centro Caixa Postal 71 CEP: 15.900-000

Telefone
14 3413-1137 11 2173-4211 11 4990-0065 16 3376-0125 11 4062-9889 11 4203-3937 11 2125-4747 11 3549-5151 11 5188-3000 11 3873-1515 11 3255-4945 11 3879-9390 11 3228-3709 11 5506-9677 11 3824-4700 11 5503-1011 11 5071-7988 11 5693-7210 11 5017-0040 11 5093-3025 11 5187-2700 11 5502-5000 0800-7074 837 11 5078-6618 11 5545-2600 11 3543-5543 11 5034-4191 11 3773-9009 11 5034-4191 11 5087-9441 11 3266-2988 11 2121-4555 11 3981-7200 11 3544-0500 11 6979-0071 11 3345-3900 11 5189-3000 11 5052- 8044 11 2165-6500 11 3529-6000 11 5097-3014 11 5503-2400 11 2925-8724 11 3898-2121 11 5052-5958 11 3731-8008 11 3039-2000 11 3305-7000 11 3145-5888 11 5503-6510 11 3362-1334 16 3252-7308

Web
www.epopeia.com.br www.redentor.ind.br www.go-global.com.br www.aw2net.com.br www.async.com.br www.delixhosting.com.br www.2mi.com.br www.4linux.com.br www.acasadolinux.com.br www.accenture.com.br www.acrinformatica.com.br www.agit.com.br www.altbit.com.br www.wpc.com.br www.blanes.com.br www.bull.com www.commlogik.com.br www.computerconsulting.com.br www.consist.com.br www.dominiotecnologia.com.br www.etica.net www.getronics.com/br www.hp.com.br www.br.ibm.com www.ifractal.com.br www.integral.com.br www.itautec.com.br www.komputer.com.br www.konsultex.com.br www.komputer.com.br www.linuxmall.com.br www.temporeal.com.br www.locasite.com.br www.microsiga.com.br www.locaweb.com.br www.novateceditora.com.br www.novell.com/brasil www.oracle.com.br www.proelbra.com.br www.e-provider.com.br www.redhat.com.br www.samurai.com.br www.sap.com.br www.savant.com.br www.simplesconsultoria.com.br www.smart-tec.com.br www.snapit.com.br www.stefanini.com.br www.sybase.com.br www.unisys.com.br www.utah.com.br www.webnow.com.br www.wrl.com.br www.systech-ltd.com.br

1 2 3 4 5 6

Rua Costante Piovan, 150 Jd. Trs Montanhas CEP: 06263-270 11 2106-9392

Oracle do Brasil Sistemas Ltda. So Paulo Proelbra Tecnologia Eletrnica Ltda. Provider Red Hat Brasil Samurai Projetos Especiais SAP Brasil Savant Tecnologia Simples Consultoria Smart Solutions Snap IT Stefanini IT Solutions Sybase Brasil Unisys Brasil Ltda. Utah Webnow WRL Informtica Ltda. Systech So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo So Paulo Taquaritinga

Av. Juscelino Kubitschek, 510, 9 andar Itaim Bibi CEP: 04543-000 11 3046-7388

Linux Magazine #79 | Junho de 2011

79

Calendrio de eventos
Evento Data
26 de junho a 01 de julho 29 de junho a 02 de julho 10 e 11 de setembro

ndice de anunciantes
Local
Fortaleza, CE

Informaes
http://www.agilebrazil.com

Empresa
Tecla Othos TeHospedo Unodata UOL Host CentralServer

Pg.
02 07 09 11 13 15 18, 19 21 28, 29 31 41 47 51 65 81 83 84

SERVIOS

Agile Brazil 2011 FISL 12 - Frum Internacional de Software Livre QCon So Paulo 2011

Porto Alegre, RS

http://fisl.org.br

Plusserver Konsultex FISL12

So Paulo, SP

http://www.qcon.com.br

Impacta Smart WatchGuard Senac F13 NetCom Bull Microsoft

Latinoware 2011

19 a 21 de outubro Foz do Iguau, PR http://www.latinoware.org 17 e 18 de novembro http://events.linuxfoundation. org/events/linuxcon-brazil

LinuxCon Brasil 2011

So Paulo, SP

Nerdson Os quadrinhos mensais da Linux Magazine

80

www.linuxmagazine.com.br

Linux Magazine #80


PREVIEW

Novas tecnologias
Nesta edio confira as ferramentas mais atuais que se tornaro padro em um futuro prximo: alternativas para uso de ZFS no Linux e as novidades do HTML5 que iro redefinir a web. Alm disso, mostraremos como montar um storage iSCSI sem equipamento especial e apresentaremos o hwloc, uma ferramenta de topologia interna de servidores que ajuda voc a entender onde seus processos esto sendo executados. No deixe para amanh aquilo que pode aprender na edio #80 da Linux Magazine.

Ubuntu User #22


Ubuntu 11.04
O novo Ubuntu 11.04, codinome Natty Narwhal, est saindo do forno. Muitas mudanas so esperadas e previstas para este lanamento. Entre elas, podemos destacar o novo modo de organizao da rea de trabalho, que agora utiliza o Unity, a polmica interface de usurio da verso netbook, que foi totalmente reescrita para a verso 11.04. Os recursos multitouch tambm vm aperfeioados e com muitas novidades. No perca!

Admin Magazine #2
Windows para prossionais
A segunda edio da Admin Magazine traz as melhores ferramentas para profissionais Windows. Com ela, voc vai aprender mais sobre o suporte a suas aplicaes legadas com o XP Mode, gerenciamento de discos virtuais e controle de servidores com FreeNX. Alm disso, vamos dar uma olhada nas novidades do Windows Small Business Edition e SQL Server 2008 R2. Em Junho, nas bancas.

82

www.linuxmagazine.com.br