terça-feira, 29 de janeiro de 2013

O comando está demorando muito?

Quem administra um servidor Linux está acostumado a criar script. E certamente já se deparou com um comando ou rotina que demora demais atrapalhando o fluxo do programa. As vezes pode ser um arquivo muito grande que está demorando para ser tratado (uma conversão de um arquivo de video muito grande), ou uma transferência de arquivos que está demorando mais do que o esperado. Seria muito interessante que o script fosse inteligente o suficiente para detectar essa demora e derrubar o processo em questão. Uma forma de fazer isso é com o comando "timeout".

Vamos supor que você tem um script que cuida da conversão de arquivos de video, e que há uma fila de arquivos para ser processados. O comando seria algo parecido com isso:

$ ffmpeg -i origem.wmv destino.avi

Vamos supor que se um arquivo demorar mais que 10 minutos para ser convertido, o processo deverá ser cancelado, uma mensagem de erro gerada, e o próximo arquivo da fila deverá ser processado. O comando seria algo parecido com isso:

$ timeout 600 ffmpeg -i origem.wmv destino.avi

Caso o comando demore mais do que 600 segundos (10 minutos), o comando é cancelado e é gerado o erro 124 que poderá ser tratado no teu script.

O mesmo serve também para conexões demoradas. Abaixo um exemplo de uma conexão sendo fechada após 5 segundos.

$ timeout 5 telnet 172.20.1.4 25
Trying 172.20.1.4...
Connected to 172.20.1.4.
Escape character is '^]'.
220 fpasrv029.fpanet.inet Microsoft ESMTP MAIL Service ready at Tue, 29 Jan 2013 10:37:17 -0200
$ echo $?
124



quinta-feira, 24 de janeiro de 2013

Faça anotações em arquivos pdf com Okular

Há vários programas para leitura de pdf, como o Krita e o Acrobat Reader. Mas o Okular faz mais do que apenas visualizar.

Com ele eu posso grifar uma parte do texto, escrever uma anotação, fazer um círculo colorido, destacar um parágrafo, e muito mais. Aquilo que você faria com um documento impresso e uma caneta do tipo marca-texto você pode fazer com o Okular. O arquivo original não é alterado, mas sempre que você reabrir o arquivo na mesma máquina essas anotações estarão ali.

Abaixo um exemplo de uma revista toda anota pelo Okular.


O Okular faz parte do Kde, e você pode instalá-lo através do apt-get install okular.


terça-feira, 22 de janeiro de 2013

segunda-feira, 21 de janeiro de 2013

pfSense, um software completo para teu gateway

Na maioria das empresas de pequeno e médio porte existe um único equipamento que funciona como gateway da rede, proxy, firewall, vpn, etc. Para levantar um equipamento assim você pode instalar o Linux e todos os softwares necessários, como iptables, Squid, OPenVPN, Qos, etc; ou pode instalar o pfSense.





Primeiramente baixe a iso de http://pfsense.ufms.br/downloads e grave o cd. Dê o boot no equipamento.


A primeira pergunta que ele faz é se você quer configurar a vlan. No meu caso, não.


Escolha a interface Wan, ou seja, a interface que estará voltada para a Internet.


Responda "y".


Você pode testá-lo através do live-cd, mas vamos instalá-lo para que as configurações não sejam perdidas depois do boot. Escolha 99.


Escolha "Accept these settings".


Escolha "Quick / Easy instalation".


Todos os dados do hd serão perdidos. Escolha "OK".


Aqui eu gosto de escolher a opção "Standard Kernel". Após o boot, tente acessar o endereço http://. A tela abaixo deve aparecer.


O usuário padrão é "admin" e a senha padrão é "pfsense".


Agora é só testar a opções, que são bem amigáveis e intuitivas.


O pfSense tem suporte a firewall, nat, redundância e balanceamento de link, vpn, estatísticas de rede, dns dinâmico, servidor dhcp, entre outros.

Para mais informações, acesse http://www.pfsense.org/





sexta-feira, 18 de janeiro de 2013

Backup e restore de máquinas com Redo Lice CD


Para fazer a migração de uma máquina, ou para fazer um backup completo do teu equipamento, uma forma bem fácil é usar Redo Live CD.


Primeiramente, baixe a iso em http://sourceforge.net/projects/redobackup/?source=dlp. Após criar o disco, faça boot por ele. A tela acima irá aparecer. Escolha a primeira opção.



Vamos fazer o backup primeiro. Clique em "Backup".


Escolha do disco de origem.


Escolha a partição.


Escolha o destino. No meu caso, eu escolhi Ftp e preenchi com os dados do meu servidor.


Digite o nome do arquivo.


A cópia está sendo feita.


Seu backup está pronto. Agora basta fazer o mesmo processo na máquina destino escolhendo a opção "Restore" no início.

Para o pessoal de Help Desk que vive fazendo mudanças e migrações de desktop dos usuários, esse live-cd é uma mão na roda.



quinta-feira, 17 de janeiro de 2013

Netcat, o canivete suíço de rede

O netcat é uma ferramenta muito interessante que pode fazer coisas malucas com a rede. Melhor do que tentar explicar é mostrar alguns exemplos de uso.

Vamos supor que você precisa criar uma imagem do disco, mas (logicamente!) você não pode gravar essa imagem no mesmo disco. Você pode enviar a imagem diretamente para outro equipamento conforme esta vai sendo gerada. No equipamento destino, execute:

$ netcat -l 1234 | dd of=destino.iso

Na origem, digite:


$ dd if=/dev/sda1 | netcat 172.20.120.4 1234
10+0 registros de entrada
10+0 registros de saída
10240 bytes (10 kB) copiados, 2,582e-05 s, 397 MB/s

$

Explicando: no destino, o netcat abre a porta 1234 e espera por conexões. Tudo o que for recebido por ela será encaminhado para o dd, que gravará o arquivo destino.iso. Na origem, o dd está fazendo uma cópia física do disco /dev/sda1 e jogando a saída para o netcat, que se conecta ao destino 172.20.120.4 na porta 1234.

Outro exemplo:

No destino, execute

$ netcat -l 1234

Na origem, digite

# tail -f /var/log/messages

O arquivo /var/log/messages da origem vai ser mostrado no terminal do destino.



quarta-feira, 16 de janeiro de 2013

Cheque seu servidor Mysql com Mytop

Uma forma de verificar como está seu servidor Mysql neste momento é usando o Mytop. Ele é semelhanto ao top, comando muito conhecido por quem administra um equipamento Linux. Seu uso é bem simples. Basta digitar:

$ mytop -u ricardo -h 172.20.1.62 -p senha

onde:

  • -u = usuário
  • -h = endereço do servidor
  • -p = senha.

Uma tela semelhante a esta é exibida.

MySQL on 172.20.1.62 (5.1.49-3)                         up 7+06:11:39 [16:16:24]
 Queries: 25.0    qps:    0 Slow:     0.0         Se/In/Up/De(%):    117458732/00/00/00
              qps now:    1 Slow qps: 0.0  Threads:    8 (   8/   4) 6350/00/00/00
 Key Efficiency: 100.0%  Bps in/out:   0.0/  0.2   Now in/out:  14.4/ 4.7k

        Id      User         Host/IP         DB      Time    Cmd Query or State                                          
        --      ----         -------         --      ----    --- --------------                                          
    922650 ricardool      fpawks0703                    0  Query show full processlist                                  
    922703  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
    922704  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
    922708  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
    922713  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
    922716  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
    922731  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
    922732  frontend    site    adm         1  Query SELECT a.id AS a__id, a.asset_type_id AS a__asset_type_id
         2 system us                                 5 Connec Has read all relay log; waiting for the slave I/O thread
         1 system us                                 627099 Connec Waiting for master to send event      

Podemos notar que temos 25 queries rodando, sendo a maioria do usuário frontend através da máquina astolfo. Digitando -f conseguimos ver o comando que está sendo executado.

Thread 922784 was executing following query:

SELECT s.id AS s__id, s.channel_id AS s__channel_id, s.program_id AS s__program_id, s.type AS s__type, s.title AS s__title, s.description AS s__description, s.description_short AS s__description_short, s.image AS s__image, s.tv_rating AS s__tv_rating, s.tv_category AS s__tv_category, s.image_source AS s__image_source, s.date_start AS s__date_start, s.date_end AS s__date_end, s.is_active AS s__is_active, s.is_important AS s__is_important, s.is_live AS s__is_live, s.is_geoblocked AS s__is_geoblocked, s.url AS s__url, s.created_at AS s__created_at, s.updated_at AS s__updated_at FROM schedule s WHERE (s.channel_id = '3' AND s.is_important = 1 AND s.date_start >= '2013-01-14 16:16:44') ORDER BY s.date_start LIMIT 1

-- paused. press any key to resume or (e) to explain --

Com isso é possível verificar quais comandos sql estão demorando mais. Isso pode ser muito útil para fazer uma configuração mais fina do bando de dados, melhorando scripts e sequências sql, criação de índices e visões, etc. Também pode ser usado para criar scripts de monitoramento para gerar alerta em ferramentas como Nagios e Zabbix.

O Mytop está disponível nos repositórios das principais distribuições Lionux, e nas derivadas do Debian pode ser instalada através do comando apt-get install mytop.


terça-feira, 15 de janeiro de 2013

Resolvendo nomes NetBIOS com Nbtscan


Se você trabalha em uma rede mista, provavelmente já teve dificuldade para acessar uma máquina Windows simplesmente porque não sabia o ip dela, e o Linux não resolve nomes Netbios. Escrevi um artigo no Vol ( http://www.vivaolinux.com.br/artigo/Entendendo-TCP-IP-Parte-3-Resolucao-de-nomes ) que explica isso.

O Nbtscan traduz ip para nomes Netbios. Em sua forma mais simples, digite o comando seguido do ip.

$ nbtscan 172.20.1.1
Doing NBT name scan for addresses from 172.20.1.1

IP address       NetBIOS Name     Server    User             MAC address      
------------------------------------------------------------------------------
172.20.1.1       SRV011                  00:04:23:b1:2c:88
$

É possível escanear uma rede, ou segmento de rede.

$ nbtscan 172.20.1.1/28
Doing NBT name scan for addresses from 172.20.1.1/28

IP address       NetBIOS Name     Server    User             MAC address      
------------------------------------------------------------------------------
172.20.1.6       SRV014                  00:04:23:b0:be:54
172.20.1.1       SRV011                  00:04:23:b1:2c:88
172.20.1.4       SRV029                  00:1f:29:07:39:ea
172.20.1.8       SRVAPL                    00:1c:c4:c1:9c:b4
172.20.1.2       SRV012                  00:04:23:b1:2c:26
172.20.1.5       SRV015                  00:30:48:29:2e:24
$

Há vária opções interessantes. Uma delas fornece os nomes no formato do arquivo /etc/hosts.

$ nbtscan -e 172.20.1.1/28
172.20.1.6 SRV014      
172.20.1.8 SRVAPL         
172.20.1.1 SRV011      
172.20.1.2 SRV012      
172.20.1.5 SRV015      
172.20.1.4 SRV029      
$

E possível também configurar a saída para o formato /etc/lmhosts

$ nbtscan -l 172.20.1.1/28
172.20.1.8 SRVAPL         #PRE
172.20.1.4 SRV029       #PRE
172.20.1.6 SRV014       #PRE
172.20.1.2 SRV012       #PRE
172.20.1.1 SRV011       #PRE
172.20.1.5 SRV015       #PRE
$

As opções são muitas. É possível criar um script que procure as máquina Windows pela rede e configure a saída para um arquivos no formato utilizado pelo Bind. Assim, todas as máquinas Linux/Unix conseguirão acessá-las normalmente. Aliás, atualização dinâmica de dns essa era uma das limitações do Samba. Mas isso já foi resolvido com o Samba 4.

O Nbtscan pode ser instalado com o comando apt-get install nbtscan.


segunda-feira, 14 de janeiro de 2013

Meu novo blog na Linux Magazine


Caros,

agora estou escrevendo um blog sobre ferramentas de rede na Linux Magazine. O endereço é http://linuxnewmedia.com.br/blogs/rede

Se quiserem que eu escreva sobre algum assunto envolvendo redes com Linux é só me avisarem.

Comentários, dicas e sugestões serão bemvindos.

sexta-feira, 11 de janeiro de 2013

Mysql Administrator: ferramenta gráfica para o Mysql Server

Administrar o Mysql Server pela linha de comando é um porre! Há quem diga que quem é bom em servidores não usa a interface gráfica. Cada um, cada um. Mas eu ganho muito em produtividade quando uso o Mysql Administrator.


Com ele eu posso, de uma forma simples, criar databases, tabelas, usuários, permissões, enfim, tudo o que eu faria pela linha de comando.


Essa ferramenta pode ser baixada em http://mysql-administrator.softonic.com.br, e tem para Windows e Linux.