Todos os posts de Gustavo

Introdução a shell script

Introdução Programar em shell faz voltarmos a filosofia clássica do UNIX que é quebrar projetos complexos em subtarefas mais simples (isso é conhecido como princípio KISS, de Keep It Simple Stupid). Um conhecimento em shell script é essencial para qualquer um que deseja se tornar um administrador de sistemas, pois usando scripts, podemos realizar tarefas de administração muito mais rapidamente e muito mais facilmente (imagine a diferença entre ter que cadastrar trezentos usuários manualmente ou fazer um script com 6 linhas que cadastra todos estes usuários e ainda pode definir uma senha padrão para eles).

Continue lendo Introdução a shell script

Configurando um squid como proxy transparente

Configurando um squid como proxy transparente Este artigo foi originalmente publicado no site do Fundão. Atualizações, se existirem, serão colocadas nesta página.

Este tutorial não pretende ser um guia completo para uma configuração avançada
de Squid, ele apenas vai mostrar como fazer algumas configurações simples mas
que permitirão que se tenha um servidor atuando como gateway de uma rede
fazendo cache de http.

Continue lendo Configurando um squid como proxy transparente

Análise 01: Fedora Core 6

Análise 01 – Fedora Core 6
Esta é a primeira análise que estou escrevendo neste site. Pretendo de agora em diante, sempre que tiver tempo, testar novas distribuições e novos softwares e deixar minhas impressões aqui.

Parte do que escrevi aqui foi baseado no documento Release Notes do Fedora Core 6, onde obtive links e alguns detalhes sobre algumas ferramentas.

Resumo: Minha avaliação foi bastante positiva, tanto que já migrei meu notebook e meu desktop para a nova versão do Fedora (ok, já usava o Fedora Core 5, uma migração dessas é menos traumática). No Desktop eu fiz a instalação “do zero”, formatei a partição e instalei o Linux. No notebook, atualizei utilizando o yum (onde aproveitei e escrevi este tutorial). Recomendo a migração para quem já usa outra versão do Fedora e recomendo um teste para quem usar outra distribuição de Linux.

Continue lendo Análise 01: Fedora Core 6

Dica 18: Usando yum-presto no Fedora 7 e no CentOS 5

Dica 18 – Usando o yum-presto no Fedora 7 e no CentOS 5
Mesmo em dias como hoje, onde uma conexão banda larga de alguns Mbps está custando relativamente pouco (pelo menos aqui em São Paulo), economizar no tamanho dos downloads de atualizações é muito importante. Eu pelo menos prefiro esperar um minuto ao invés de meia hora para atualizar meu sistema.

Continue lendo Dica 18: Usando yum-presto no Fedora 7 e no CentOS 5

Dica 16: Criptografia usando GPG – dicas rápidas

Dica 16 – Criptografia usando GPG – dicas rápidas
O gpg (GnuPG) é uma ferramenta livre para o uso de criptografia. É utilizado para criptografar arquivos, emails e etc.

Para criptografar, você precisará ter sua chave privada e a chave pública de quem vai receber o arquivo. Quem for receber o arquivo, deverá ter a sua chave pública, senão não terá como descriptografar seu arquivo.

Continue lendo Dica 16: Criptografia usando GPG – dicas rápidas

Dica 15: Como fazer upgrade do Fedora Core 5 para Fedora Core 6 usando yum

Dica 15 – Como fazer upgrade do Fedora Core 5 para Fedora Core 6 usando yum
Neste tutorial explicarei como fazer upgrade do Fedora Core 5 para Fedora Core 6 usando o yum. Para fins de ter o tutorial pronto na data do lançamento da versão final, fiz este procedimento utilizando a versão test 3.

Continue lendo Dica 15: Como fazer upgrade do Fedora Core 5 para Fedora Core 6 usando yum

Dica 14: Como saber qual processo está utilizando determinada porta

Dica 14 – Como saber qual processo está utilizando determinada porta

Pra que saber qual processo está utilizando determinada porta ?

Imagine a situação: seu servidor está se comportando de maneira estranha, muito tráfego na rede por exemplo, e você analisa a rede e descobre que seu servidor está com uma ou mais portas abertas e ouvindo conexões.

Primeiro, como saber quais são as portas que estão abertas no Linux ? Para isso, vamos utilizar o comando netstat. De acordo com a página man do netstat (que pode ser acessada digitando man netstat), o netstat mostra conexões de rede, tabelas de roteamento, estatísticas de interface e conexões, mascaradas.

Neste artigo, precisaremos saber quais portas estão listen ou ouvindo (ou seja, aguardando conexões) no protocolo tcp. Para isso, usaremos os parâmetros n e a do netstat para não resolver nomes (vai mostrar somente o IP, que deixa o comando mais rápido) e mostrar todas as conexões respectivamente. Sem usar o a, o netstat só irá mostrar as portas que está conectadas. Alé disso, vamos usar o grep para filtrar o que for somente tcp e o que estiver com status listen, assim:

netstat -na | grep tcp | grep -i listen

Para saber que processo está utilizando determinada porta, execute o fuser seguido da porta/protocolo. Por exemplo, para ver qual processo está utilizando a porta 22, usamos o fuser assim:

# fuser 22/tcp
22/tcp: 1683

O comando fuser informou que a porta 22/tcp está sendo usada pelo processo cujo PID é 1683. Então temos que somente usar o ps para descobrir quem é o processo 1683:

# ps aux | grep 1683
root 1683 0.0 0.2 4984 1080 ? Ss 08:46 0:00 /usr/sbin/sshd

Neste caso, descobrirmos que a porta 22/tcp estava sendo usada pelo sshd. Nada anormal neste servidor :)

Podemos usar este procedimento para verificar todas as portas que estão abertas.

Para melhorar a dica, pode-se elaborar um script para automatizar esta tarefa. Este script poderia comparar as portas que estão abertas no momento com uma lista predefinida e, caso não estivesse ok, o script poderia enviar um email informando isso.


Atualizado em 14 de julho de 2009:

Complementando, no caso de um Sun Solaris, pode-se usar uma combinação dos comandos lsof, grep e ps, assim (supondo que desejamos saber o que roda na porta 12345):

# lsof |grep 12345
java      11110    root   10u  IPv4 0x300099a61e0           0t0     TCP *:12345 (LISTEN)
Aqui temos um processo do java rodando na porta 12345 TCP cujo PID é 11110 (segunda coluna). Então, basta um ps -ef com grep nesta porta, assim:
 
# ps -ef|grep 11110
root 11110     1  0   jul 06 ?       11:15 /opt/java/bin/java
 
 
Com isso, sabemos que é um processo do java que roda na porta 12345 e que o mesmo está no diretório /opt/java/bin/java.
 

Atualizado em 15 de maio de 2020:

 
Quase 10 anos após a última atualização (!!!), incluindo o comando para o Mac (pelo menos para a versão 10.13, High Sierra, mas acredito que também sirva para outras versões) .
 
Supondo que deseja saber qual processo está rodando na porta 22 TCP, basta executar:
 
# lsof -i tcp:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
launchd 1 root 40u IPv6 0xd7b650b0ec48643b 0t0 TCP *:ssh (LISTEN)
Uma observação é que o Mac possui um sistema mais ou menos (pelo menos para esse tipo de exemplo) como o antigo inetd de outros Unix. É um daemon que aguarda conexões e somente então o processo correspondente irá atender as requisições. Não serve para qualquer tipo de serviço, mas deixei o exemplo já para o pior caso.
 
Quando já há alguma conexão em andamento, a saída seria semelhante a essa:
 
# lsof -i tcp:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
launchd 1 root 21u IPv4 0xd7b650b0f19880eb 0t0 TCP 10.0.1.9:ssh->10.0.1.4:rfio (ESTABLISHED)
launchd 1 root 40u IPv6 0xd7b650b0ec48643b 0t0 TCP *:ssh (LISTEN)

Caso queria visualizar todas portas abertas, basta executar lsof -i.