Unix, Linux e MacOS

Não sei exatamente a data, mas em algum momento perto de 1996 eu ouvi falar sobre Unix. Na época em que o sistema operacional disponível para as massas era o Windows 95, fiquei curioso sobre o que era Unix. Era uma ideia muito abstrata, já que eu nunca tinha visto uma máquina rodando Unix pessoalmente. Conforme fui tendo mais acesso à internet e às informações em 1998, comecei a usar Linux como meu sistema operacional. ...

August 24, 2025 · Eri

Sysadmin 201

Agora que você já entendeu os pré-requisitos e os pontos negativos e positivos de ser um sysadmin (contando que tenha lido o Sysadmin 101) aqui vão algumas idéias do que buscar tecnicamente. Recebi um bocado de feedback de outros sysadmins sobre o post anterior via twitter ou IM. Se quiserem postar aqui as respostas mais gente vai poder ver. 😉 Minha experiência pessoal é como sysadmin de redes (na época basicamente com equipamentos Cisco) e com Linux/Unix. Mas certeza que a idéia geral serve pra quem pensa em seguir carreirar como Sysadmin Microsoft, Oracle ou qualquer outra variação. ...

November 22, 2010 · Eri

Não reinvente a roda você também

Preâmbulo: Recentemente coloquei no ar o FollowUpTime, que como já disse em outros posts é um sistema de monitoração para redes e servidores. Como podem imaginar, um bocado de linhas de código está envolvida num sistema assim e a conta só do engine principal passa das 90 mil linhas. Isso sem incluir templates, javascripts, etc. O sistema é composto de duas partes: Uma que roda num servidor principal gerenciando a maior parte das tarefas e as “probes”. As probes são pequenos scripts que recebem instruções sobre hosts a serem testados e respondem para o servidor principal com o tempo de resposta, um OK ou um FAIL. Simples assim. São essas probes que temos espalhados por vários cantos do planeta. Porém quando recebi a probe dos desenvolvedores me vi com um pequeno, mas incoveniente problema. Os desenvolvedores realmente optaram pelo princípio KISS. Eles me entregaram uma excelente probe que fazia o que era necessário. E nada mais. Eu tinha nas mãos um daemon que rodava em foreground e jogava mensagens para stdout e stderr e nada mais. Eu não me demorei e ataquei o problema da forma errada, pensando como um programador e não como um administrador Unix. E acabei reinventado a roda. Introdução – O problema Quando percebi o que eu tinha nas mãos logo pensei nos problemas que eu precisava resolver: Preciso iniciar o daemon sempre que der boot na máquina Preciso ser capaz de rodar em daemon em background, ou vai me zoar a seqüencia de boot Posso precisar parar/reiniciar/iniciar manualmente este daemon Se o processo morrer eu tenho que ser notificado e que, de preferência, ele seja reiniciado automaticamente E sim, esse processo não deve rodar como root Já velhaco de Linux logo pensei num script para ser colocado em /etc/init.d/ que ia resolver boa parte dos meus problemas. Com uma combinação bonita de bash scripting, várias ferramentas e comandos Linux que só se conhece depois de muito tempo de casa (como nohup, pidof, &) e gambiarras na crontab eu consegui. Consegui reinventar a roda. Não vou entrar em detalhes da solução que fiz, pois apesar de 100% funcional não era nem de perto tão bonita quanto: A solução – Daemontools Nosso caro amigo D.J.B, autor do famoso Qmail também já passou por um problema parecido com o meu, mas ao invés de criar um solução simples para resolver um problema pontual ele foi mais longe. Ele criou uma solução global que atende o problema dele, o meu e provavelmente também o seu. Na página oficial do daemontools tem uma tabela, que traduzo abaixo, comparando a ferramenta dele com outras abordagens (incluindo a minha, que utilizava init.d): <td width="86" align="center" bgcolor="#2300dc"> <strong><em><span style="font-family: Verdana; color: #ffffff;">inittab</span></em></strong> </td> <td width="86" align="center" bgcolor="#2300dc"> <strong><em><span style="font-family: Verdana; color: #ffffff;">ttys</span></em></strong> </td> <td width="86" align="center" bgcolor="#2300dc"> <strong><em><span style="font-family: Verdana; color: #ffffff;">init.d</span></em></strong> </td> <td width="86" align="center" bgcolor="#2300dc"> <strong><em><span style="font-family: Verdana; color: #ffffff;">rc.local</span></em></strong> </td> <td style="border-right: 1px solid #000000;" width="86" align="center" bgcolor="#2300dc"> <strong><em><span style="font-family: Verdana; color: #ffffff;">/service</span></em></strong> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Não</span> </td> <td style="border: 1px solid #000000;" align="center"> <span style="font-family: Verdana;">Sim</span> </td> Dá para perceber que o cara pensou em tudo e não tem porquê reinventar a roda. Vamos utilizar o daemontools! ...

July 1, 2009 · Eri

Restringindo acesso via SFTP

Restringir acesso de um usuário a seu diretório home usando o ProFTP já virou carne-de-vaca, então vou colocar um dica diferente aqui: Como manter seus usuários restritos usando SFTP. Atenção: Não estou falando de FTPS (FTP over SSL). O primeiro requisito é ter um servidor OpenSSH pelo menos na versão 4.9p1. Tanto meu Ubuntu 8.10 quanto meu OpenSuSE 11.1 vieram com pacotes superiores a essa versão, mas infelizmente o Red Hat Enterprise 5.3 não. ...

March 5, 2009 · Eri

Filosofia Unix

Eu já tinho lido a filosofia Unix algumas vezes, mas hoje cruzei de novo o texto e parei para analisar um pouco. É impressionante como minha personalidade combina com as idéias do Unix, mas eu não sei mais dizer que eu gosto do Unix por causa disso – uma atração natural pelos mesmos valores – ou se depois de 10 anos mexendo com isso eu acabei incorporando as idéias. O texto é longo e tem várias idéias, mas abaixo são as que eu mais concordo: ...

March 4, 2009 · Eri

Truques no Bash

Alguns truques para facilitar o seu dia-a-dia na linha de comando: !$ Representa a última parte do último comando executado. Exemplo: Expansão automática Expande automaticamente os valores entre chaves. Uma mão na roda para loops: Também funciona com letras: E pode ser útil em situações assim: ...

January 15, 2009 · Eri

Computadores por habitante

De acordo com o lista 10, o Canadá é o segundo país com mais computadores por pessoa, perdendo apenas para Israel. Aqui tem-se 87.6 computadores para cada 100 habitantes. Eu a esposa estamos ajudando a engordar as estatísticas, claro, mas não sei como fazer a contagem, já que “computador” é um termo muito genérico. Se contarmos como computador hardwares com plataforma x86-compativel, temos 4. Se contamos como desktop ou laptop, temos 3. Se contamos os que servem para acessar internet, temos 5. Se contarmos os que rodam alguma variante de Unix/Linux temos 6… Sei lá como fazer essas contas. ...

January 8, 2009 · Eri

Emacs

$ sudo bash Password: # test -f /bin/emacs && mv /bin/emacs /bin/emacs.NEVER # cat «EOF >/bin/emacs #!/bin/bash echo emacs: command not found EOF # exit $ logout Copiado daqui.

November 7, 2008 · Eri

OpenBSD 4.4

Lançado hoje o OpenBSD 4.4. Entre a família BSD é, sem dúvida, meu favorito. Infelizmente não tenho oportunidade de utiliza-lo desde 2003. Mas ainda assim, recomendo.

October 31, 2008 · Eri

De volta à universidade

Pois é. Estou voltando pra universidade. Mas não, não é isso que você está pensando. Estou indo trabalhar para uma universidade. Meu atual emprego até que foi interessante até um determinado ponto. Aprendi muito e vi como é infra-estrutura de IT de gente grande. E aprendi como é que se implementa Linux no que se chama “enterprise class” e entendi porque wall-street ama open source. Também me mandaram pra Nova York e me deram curso de Perl. E só de birra, resolvi aprender Python. Além de que a famosa frase “a prática leva à perfeição” se mostrou real com o tanto que tive que colocar minha experiência com Bash pra funcionar. ...

July 12, 2008 · Eri