sexta-feira, 14 de dezembro de 2012

Como formatar um disco no Linux


No sistema Windows é comum o termo "formatar o disco". Em Linux, essa ação é chamada de "criar um sistema de arquivos".

No Windows, temos basicamente dois sistemas de arquivos: o Fat (em suas várias versões) e o Ntfs. No Linux, há uma infinidade de sistemas de arquivos diferentes para as mais variadas tarefas. Se você quer "formatar" um pendrive para usá-lo em todos os tipos de computadores, formate-o com Fat.

No Linux, o comando mais usado para criar um sistema de arquivos é o mkfs. No exemplo abaixo, vamos formatar a partição /dev/sda5.

# fdisk -l /dev/sda5
GNU Fdisk 1.2.4
Copyright (C) 1998 - 2006 Free Software Foundation, Inc.
This program is free software, covered by the GNU General Public License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.


Disk /dev/sda5: 1 GB, 1019934720 bytes
255 heads, 63 sectors/track, 124 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot      Start         End      Blocks   Id  System 
/dev/sda5p1               1         125     1004031   83  Linux 
Warning: Partition 1 does not end on cylinder boundary.                

Para ver quais sistemas de arquivos o mkfs pode criar, digite mkfs e tecle TAB duas vezes.

# mkfs

mkfs          mkfs.btrfs    mkfs.ext2     mkfs.ext4     mkfs.minix    mkfs.ntfs     
mkfs.bfs      mkfs.cramfs   mkfs.ext3     mkfs.ext4dev  mkfs.msdos    mkfs.vfat     

Primeiramente vamos criar um sistema de arquivos FAT...

# mkfs.vfat /dev/sda5
mkfs.vfat 3.0.9 (31 Jan 2010)

montamos o disco...

# mount /dev/sda5 /mnt/sda5/

e vemos quanto espaço temos disponível.

# df -h /dev/sda5 
Sist. Arq.            Size  Used Avail Use% Montado em
/dev/sda5             975M  4,0K  975M   1% /mnt/sda5

Para criar um NTFS...

# umount /dev/sda5 
# mkfs.ntfs /dev/sda5
Cluster size has been automatically set to 4096 bytes.
Initializing device with zeroes: 100% - Done.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.
# mount /dev/sda5 /mnt/sda5/
# df -h /dev/sda5 
Sist. Arq.            Size  Used Avail Use% Montado em
/dev/sda5             977M  5,4M  972M   1% /mnt/sda5

Ext2...

# umount /dev/sda5 
# mkfs.ext2 /dev/sda5
mke2fs 1.41.12 (17-May-2010)
/dev/sda5 alignment is offset by 512 bytes.
This may result in very poor performance, (re)-partitioning suggested.
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1 blocks, Stripe width=0 blocks
62592 inodes, 250000 blocks
12500 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=260046848
8 block groups
32768 blocks per group, 32768 fragments per group
7824 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376

Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
# mount /dev/sda5 /mnt/sda5/
# df -h /dev/sda5 
Sist. Arq.            Size  Used Avail Use% Montado em
/dev/sda5             962M  1,3M  912M   1% /mnt/sda5

Ext4...

# umount /dev/sda5 
# mkfs.ext4 /dev/sda5
mke2fs 1.41.12 (17-May-2010)
/dev/sda5 alignment is offset by 512 bytes.
This may result in very poor performance, (re)-partitioning suggested.
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1 blocks, Stripe width=0 blocks
62592 inodes, 250000 blocks
12500 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=260046848
8 block groups
32768 blocks per group, 32768 fragments per group
7824 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376

Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
# mount /dev/sda5 /mnt/sda5/
# df -h /dev/sda5 
Sist. Arq.            Size  Used Avail Use% Montado em
/dev/sda5             974M   30M  896M   4% /mnt/sda5

E o novo sistema Btrfs...

# umount /dev/sda5 
# mkfs.btrfs /dev/sda5

WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using

fs created label (null) on /dev/sda5
nodesize 4096 leafsize 4096 sectorsize 4096 size 976.56MB
Btrfs Btrfs v0.19
# mount /dev/sda5 /mnt/sda5/
# df -h /dev/sda5 
Sist. Arq.            Size  Used Avail Use% Montado em
/dev/sda5             977M   56K  851M   1% /mnt/sda5

Reparem que o tamanho real disponível para uso depende do sistema de arquivo. Geralmente, quanto mais seguro o sistema, maior o espaço utilizado para consistências e, consequentemente, menor o espaço "útil" disponível no disco. A excessão é o Ext2 se comparado ao Ntfs.

quinta-feira, 13 de dezembro de 2012

Disco com defeito? Use Myrescue

Se você está tendo problemas ao tentar ler um disco, pode ser que o disco esteja com defeito (badblock). Discos rígidos, pendrives, cd, dvd e qualquer tipo de midia pode sofrer problemas de corrosão, falhas magnéticas, riscos, etc. Todas essas falhas podem ser testadas, e quando possível corrigidas, com o comando badblocks, como expliquei em um artigo há alguns dias.

Mas, e se mesmo após o badblocks e o fsck serem usados o disco continuar inacessível? Neste caso, tente usar o Myrescue.

O Myrescue lê todo o disco tentando várias vezes os setores com defeito e gera uma imagem do disco. Essa imagem pode ser montada via loopback.

Para exemplificar seu uso, eu estava com um cd do Ubuntu que não conseguia ler. Usei o Myrescue para tentar criar uma imagem deste cd.

# myrescue /dev/sr0 ubuntu.iso
block 000173028 (000000000-000179057)   ok 000173028   bad 000000000   src read failed: Input/output error
block 000173085 (000000000-000179057)   ok 000173084   bad 000000001   src read failed: Input/output error
block 000174281 (000000000-000179057)   ok 000174279   bad 000000002   src read failed: Input/output error
block 000174292 (000000000-000179057)   ok 000174289   bad 000000003   src read failed: Input/output error
block 000174303 (000000000-000179057)   ok 000174299   bad 000000004   src read failed: Input/output error
block 000174304 (000000000-000179057)   ok 000174299   bad 000000005   src read failed: Input/output error
block 000174305 (000000000-000179057)   ok 000174299   bad 000000006   src read failed: Input/output error
block 000174306 (000000000-000179057)   ok 000174299   bad 000000007   src read failed: Input/output error
block 000174307 (000000000-000179057)   ok 000174299   bad 000000008   src read failed: Input/output error
block 000174308 (000000000-000179057)   ok 000174299   bad 000000009   src read failed: Input/output error
block 000174309 (000000000-000179057)   ok 000174299   bad 000000010   src read failed: Input/output error
block 000174310 (000000000-000179057)   ok 000174299   bad 000000011   src read failed: Input/output error
...

A saída acima está resumida.

O Myrescue leu o cd e gerou um arquivo chamado ubuntun.iso. Esse arquivo eu pude montá-lo pelo comando mount.

# mount -o loop ubuntu.iso /media/cdrom
# ls /media/cdrom
autorun.inf  dists    isolinux  pics preseed    ubuntu
casper     install  md5sum.txt  pool README.diskdefines  wubi.exe
#

Isso não tornou o meu cd bootável, mas já foi possível ler alguns arquivos. Se esse cd contivesse arquivos realmente importantes eu conseguiria recuperá-los, pelo menos a maioria deles.

O uso do Myrescue não elimina outras opções de reparação profisisonais, mas já é uma grande ajuda. Tenha em mente também que você precisa ter espaço livre no disco suficiente para caber todo o drive/midia testada. Ou seja, para você recuperar um disco de 1Tb você precisará ter pelo menos 1Tb de espaço disponível.


quarta-feira, 12 de dezembro de 2012

IPv6 no Linux com Miredo

Se você quer ter suporte a IPv6 no Linux, basta instalar o Miredo.

apt-get install miredo

O Miredo fornece uma interface IPv6 do tipo Teredo. Com ele você pode navegar na Internet usando o novo protocolo IPv6.


teredo    Link encap:Não Especificado  Endereço de HW 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          endereço inet6: fe80::ffff:ffff:ffff/64 Escopo:Link
          endereço inet6: 2001:0:53aa:64c:2009:5fca:3777:e46d/32 Escopo:Global
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1280  Métrica:1
          RX packets:31 errors:0 dropped:0 overruns:0 frame:0
          TX packets:111 errors:0 dropped:0 overruns:0 carrier:0
          colisões:0 txqueuelen:500 
          RX bytes:4353 (4.2 KiB)  TX bytes:10545 (10.2 KiB)


Se você não sabe o que é IPv6, veja os artigos abaixo.


Não é necessário nenhuma configuração extra. Se você estiver atrás de um firwall, basta liberar o acesso a porta UDP 3544 para o endereço 83.170.6.76. E também adicione o dns do Google em teu arquivo /etc/resolv.conf.


nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844



terça-feira, 11 de dezembro de 2012

Descobrindo senhas com Medusa

Medusa é uma aplicação usada para ataques de força bruta. Esse tipo de ataque consiste em tentar vários login/senha contra um alvo até que a senha seja descoberta.

Esse tipo de ataque é útil quando os usuários utilizam senhas fáceis, como sequencias numéricas, datas, palavras do dicionário, etc. Mesmo com um link de internet ruim, é possível testar centenas de logins por segundo. Ou seja, basta que o invasor rode o programa antes de dormir que pela manhã um par de usuário/login terá sido descoberto pela manhã.

A maioria das grandes empresas usam técnicas para evitar esse tipo de ataque, como bloqueio de usuários com falhas de login sucessivas, ferramentas de detecção de intrução, checagem de log, etc. Mas sempre tem aqueles que não se preocupam com isso.

Abaixo, um exemplo do uso, onde fiz um ataque via ssh, usando um arquivo contendo os usuários e um outro com senhas. A saída está resumida.

$ medusa -h servidor -U tmp/user.txt -P tmp/password.txt -M ssh -f 
Medusa v2.0 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks


The default build of Libssh2 is to use OpenSSL for crypto. Several Linux
distributions (e.g. Debian, Ubuntu) build it to use Libgcrypt. Unfortunately,
the implementation within Libssh2 of libgcrypt appears to be broken and is
not thread safe. If you run multiple concurrent Medusa SSH connections, you
are likely to experience segmentation faults. Please help Libssh2 fix this
issue or encourage your distro to use the default Libssh2 build options.

ACCOUNT CHECK: [ssh] Host: servidor (1 of 1, 0 complete) User: root (1 of 3, 0 complete) Password: M[E4]rchen (1 of 60 complete)
ACCOUNT CHECK: [ssh] Host: servidor (1 of 1, 0 complete) User: root (1 of 3, 0 complete) Password: Aschenputtel (2 of 60 complete)
ACCOUNT CHECK: [ssh] Host: servidor (1 of 1, 0 complete) User: root (1 of 3, 0 complete) Password: Br[FC]derchen (3 of 60 complete)
ACCOUNT CHECK: [ssh] Host: servidor (1 of 1, 0 complete) User: root (1 of 3, 0 complete) Password: D[E4]umling (4 of 60 complete)
ACCOUNT CHECK: [ssh] Host: servidor (1 of 1, 0 complete) User: teste (3 of 3, 2 complete) Password: Simeliberg (22 of 60 complete)
ACCOUNT CHECK: [ssh] Host: servidor (1 of 1, 0 complete) User: teste (3 of 3, 2 complete) Password: Sterntaler (23 of 60 complete)
ACCOUNT CHECK: [ssh] Host: servidor (1 of 1, 0 complete) User: teste (3 of 3, 2 complete) Password: Tischlein (24 of 60 complete)
ACCOUNT CHECK: [ssh] Host: servidor (1 of 1, 0 complete) User: teste (3 of 3, 2 complete) Password: Vom (25 of 60 complete)
ACCOUNT CHECK: [ssh] Host: servidor (1 of 1, 0 complete) User: teste (3 of 3, 2 complete) Password: teste (26 of 60 complete)
ACCOUNT FOUND: [ssh] Host: servidor User: teste Password: teste [SUCCESS]

Neste caso, no servidor existe um usuário "teste" com a senha "teste".

O Medusa tem módulos para vários aplicações, como ftp, pop3, Mysql, Web, etc. Com um man medusa você obtém uma lista dos parâmetros que podem ser passados ao medusa.

Para instalá-lo, use o famoso apt-get install medusa.

quarta-feira, 5 de dezembro de 2012

Lxde, um ambiente gráfico leve e bonito

No mundo Linux, estamos acostumados com praticamente três ambientes gráficos: Kde, Gnome e Unity (usado pelo Ubuntu). Mas existe uma infinidade de gerenciadores de janelas para os mais diversos gostos, como o Window Maker, Backbox, AfterStep, etc.

Um ambiente que está sendo cada vez mais usado é o Lxde, principalmente por que as últimas versões do Kde e Gnome são muito pesadas e não agradaram a muitos, sem falar no Unity que também não agradou


Uma ótima alternativa para o teu desktop Linux. Ele já é o meu segundo ambiente. Ainda prefiro o Gnome versão 2, mas a versão 3 não me agradou. Provavelmente eu vou migrar para o Lxde mais cedo ou mais tarde.

Para instalá-lo, use apt-get install lxde.


terça-feira, 4 de dezembro de 2012

Como checar se seu disco tem erros físicos

No Linux, um utilitário que testa o disco em busca de erros físicos, semelhante ao Scandisk do Windows, é o Badblocks.

Entre as várias opções, as que eu mais uso são :

-w : faz o teste escrevendo no disco. Ela apaga todos os dados. Ideal para usar em um disco novo;
-n : faz o teste escrevendo no disco, mas não apaga os dados.
-v : mostra um pouco mais de informaçoes, visto que o programa é bem espartano.

Abaixo eu mostro a saída do comando onde testo um pendrive.

root@notebook:/home/ricardo# badblocks -nv /dev/sdb1
Checking for bad blocks in non-destructive read-write mode
From block 0 to 779120
Testing with random pattern: Pass completed, 0 bad blocks found.
root@notebook:/home/ricardo#

Se forem encontrados erros, o número do bloco será mostrado. Em um disco rígido grande, esse teste opde demorar algumas horas. Em um disco de 1Tb isso pode levar 3 dias.

sexta-feira, 30 de novembro de 2012

Navegando na Internet em modo texto.

Se você administra algum servidor Linux/Unix provavelmente está acostumado com o terminal. Geralmente um servidor Linux não possue interface gráfica, e algumas vezes precisamos navegar pela Internet. Como resolver isso?

Para nevegação em modo texto temos três grandes softwares. O Links, o Lynx, e o Links2.

O Links é o mais espartano. Em sua configuração padrão, ele mostra as páginas com apenas um tipo de fonte e em uma única cor. Não mostra figuras, a menos que você recompile o programa. Veja como fica o site da Uol pelo Links:


Já o Lynx possuem um colorido mais elegante.


O Llinks2 basicamente é um Links compilado com o módulo gráfico habilitado.


Os três programa estão disponíveis via apt-get.


quinta-feira, 29 de novembro de 2012

Conversão de audio com Lame

Há algum tempo atrás eu publiquei um post mostrando como converter arquivos de video e audio usando o ffmpe. Agora eu vou mostrar o Lame.

O Lame é voltado para  trabalhar com arquivos de audio, oferecendo várias opções de qualidade, tipo, tamanho, etc. Em sua forma mais simples, basta informar os arquivos de entrada e saída. 

$ lame entrada.mp3 saida.wma
ID3v2 found. Be aware that the ID3 tag is currently lost when transcoding.
LAME 3.98.4 32bits (http://www.mp3dev.org/)
CPU features: MMX (ASM used), SSE (ASM used), SSE2
Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz
Encoding You're No Different (Album Version) .mp3
      to saida.wma
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3
    Frame          |  CPU time/estim | REAL time/estim | play/CPU |    ETA 
 13369/13371 (100%)|    0:12/    0:12|    0:12/    0:12|   27.542x|    0:00 
------------------------------------------------------------------------------------------------
   kbps        LR    MS  %     long switch short %
  128.0        9.4  90.6        99.5   0.3   0.2
Writing LAME Tag...done
ReplayGain: -10.0dB
$

No exemplo acima, eu converti um arquivo mp3 para wma. Esse programa é ótimo para usar em scripts, ou para converter vários arquivos de uma vêz.

Para instalá-lo, use o tradicional apt-get install lame.

terça-feira, 27 de novembro de 2012

Cliente universal de vpn

O Kvpnc é um cliente vpn universal que funciona com a maioria dos servidores Vpn.



 Ele tem suporte aos seguintes padrões:

  • Cisco
  • IPSec
  • Freeswan
  • Openswan
  • StrongSwan
  • Racoon
  • Pptp (Microsoft)
  • Openvpn
  • L2TP
  • Vtun
  • OpenSSH



Faltou suporte ao Checkpoint. Mas nem a própria Checkpoint tem cliente para Linux, a não ser a vpn ssl deles.

Para instalar o cliente, basta digitar apt-get install kvpnc na linha de comando.

sexta-feira, 23 de novembro de 2012

Print de tela com Ksnapshot

Quem costuma escrever documentação de sistema, apostilas de software e tutoriais, deve estar acostumado a tirar print de tela. No Linux, uma ótima ferramernta para essa função é o Ksnapshot.



Com ele você pode tirar uma cópia da tela toda, somente de uma janela, de uma região selecionada com o mouse, ou de uma seção de uma janela; também pode programar um tempo de espera antes de tirar a "foto". Todos os meus posts são feitos usando essa ferramenta.

Quem usa o ambiente Kde já deve estar acostumado com esse aplicativo. Para os demais, um simples apt-get install ksnapshot instalará a programa.

quarta-feira, 21 de novembro de 2012

Gerenciamento gráfico de arquivos

No Linux, há dois ambiente gráficos principais: o Kde e o Gnome. Ambos possuem ferramentas gráficas para o gerenciamento de arquivos. Quem usa Kde está acostumado com o Konqueror, que tem suporte a abas, a divisão de janelas, a scp e ftp, como no print de tela abaixo, onde eu tenho aberto o ambiente de rede, um ftp e o meu diretório padrão, além de uma outra aba.



Quem usa Gnome provavelmente usa o Nautilus, que também tem suporte a rede e ftp, mas não a scp.


Independente do ambiente gráfico utilizado, você pode usar qualquer um dos gerenciadores de arquivos que quiser. Eu, por exemplo, uso Gnome, mas prefiro o Konqueror para administrar meus arquivos.

quarta-feira, 14 de novembro de 2012

Live cd Olonca - Versão 2012

Já faz algum tempo que eu trabalho numa distribuição personalizada do Linux contendo tudo o que eu preciso, desde ferramentas para manutenção em computadores e softwares para servidores, até jogos para demostrar para o meus amigos. Agora disponibilizo esse live cd.


Essa distro é baseada no Debian-CDD, mas foi praticamente feita do zero. Ainda não tem um instalador, afinal, não era essa a intensão; mas estou desenvolvendo um.

Entre os softwares, a distro contém:


  • Firefox;
  • Google Chromium (integrado com Squid e Dansguardian);
  • Tor navegator;
  • Clamav;
  • VirtualBox;
  • ManDVD;
  • 2ManDVD;
  • Openshot;
  • BROffice;
  • Evolution;
  • Supertux;
  • Extreme Tux Racer; 
  • Samba;
  • Webmin;
  • Miredo (suporte ipv6);
  • Apache2;
  • Arpwatch;
  • Metasploit;
  • Snort;
  • Fail2ban;
  • Vários drivers, inclusive para controladoras scsi da HP;
  • Várias ferramentas de manutenção.


E, claro, todos os softwares que já comentei aqui no meu blog, prontos para funcionar.

A iso está em http://dl.dropbox.com/u/1178568/olonca.iso, e o md5 é 91d8a12ba114d505e5699577562f6676


quarta-feira, 24 de outubro de 2012

Procurando arquivos com Kfind

Há duas semanas atrás eu publiquei um artigo mostrando como procurar arquivos através do find. Agora, prá você que acha muito complicado a interface de texto, o Kfind pode ser a opção melhor.


Através de uma interface gráfica é possível pesquisar por tipo de arquivo, por tamanho, data de criação, data de modificação, dono do arquivo, programa que o criou, e até pelo conteúdo dentro do arquivo. Uma mão na roda.

Se você use o Kde, já deve conhecer o Kfind. Senão, instale-o com:

apt-get install kfind.

quinta-feira, 18 de outubro de 2012

Apostila de Shell Script

Está disponível em https://hotfile.com/dl/175732443/a39e87e/ShellScript.zip.html um conjunto de matérias da LInux Magazine sobre Shell Script.

São vários arquivos pdf em uma série muito boa escrita por Julio Cezar Neves, um mago no assunto. A série segue uma sequência parecida com a do livro que li mesmo autor e que me fez criar gosto por programação de scripts.


quarta-feira, 10 de outubro de 2012

Procurando arquivos com Find

Depois de um mes de férias, volto a escrever no blog. Agora vou falar do find, uma ferramenta muito útil para procurar arquivos pela linha de comando. Melhor que explicá-lo é ver alguns exemplos de sua utilização.

Para listar todos os ítens da pasta /home/ricardo cujo nome contenha 2012 e a extenção .txt, use:

$ find /home/ricardo -name *2012*.txt
/home/ricardo/tmp/20120101.txt
/home/ricardo/ProgramasRFB/IRPF2012/TryLock2012.txt
/home/ricardo/Documentos/Documentacao/Outros/Compensacao_2012.txt
/home/ricardo/Documentos/Documentacao/Feitos/Feitos_2012.txt

Para encontrar o ítens da pasta /home/ricardo/Documentos modificados a menos de 3 dias e a mais de 1 dia, digite:

$ find /home/ricardo/Documentos/ -mtime -3 -mtime +1
/home/ricardo/Documentos/Contas
/home/ricardo/Documentos/Contas/Cartao_Credicard_20121008.pdf
/home/ricardo/Documentos/Contas/Bateria_celular.pdf

Para listar os ítens da pasta /home/ricardo que foram acessados a menos de 2 minutos, digite:

$ find /home/ricardo/ -amin -2
/home/ricardo/.config/chromium/Local State
/home/ricardo/.mozilla/firefox/ht1sguqp.default/sessionstore.js
/home/ricardo/.purple/certificates/x509/tls_peers/api.twitter.com
/home/ricardo/.purple/blist.xml
/home/ricardo/.gconfd/saved_state

Listando arquivos (apenas arquivos, sem pastas, links simbólicos, etc) da pasta /home/ricardo que foram acessados a menos de 1 minutos:

$ find /home/ricardo -amin -1 -type f
/home/ricardo/.mozilla/firefox/ht1sguqp.default/sessionstore.js
/home/ricardo/.mozilla/firefox/ht1sguqp.default/places.sqlite
/home/ricardo/.mozilla/firefox/ht1sguqp.default/places.sqlite-journal
/home/ricardo/.mozilla/firefox/ht1sguqp.default/Cache/0FB71300d01
/home/ricardo/.mozilla/firefox/ht1sguqp.default/Cache/AD773ACBd01
/home/ricardo/.mozilla/firefox/ht1sguqp.default/Cache/0F955364d01
/home/ricardo/.mozilla/firefox/ht1sguqp.default/Cache/8F923340d01
/home/ricardo/.purple/certificates/x509/tls_peers/api.twitter.com
/home/ricardo/.purple/blist.xml
/home/ricardo/.gconfd/saved_state
/home/ricardo/.evolution/mail/local/Noticias
/home/ricardo/.evolution/mail/local/folders.db
/home/ricardo/.evolution/mail/config/state

É possível executar um comando para cada objeto encontrado (por exemplo, para compactar arquivos antigos). No exemplo abaixo, executo o comando stat em cada arquivo da pasta /home/ricardo/tmp que tenha sido criado e menos de 1 dia.

$ find /home/ricardo/tmp -ctime -1 -type f -exec stat {} \;
  File: "/home/ricardo/tmp/20120101.txt"
  Size: 104       Blocks: 8          IO Block: 4096   arquivo comum
Device: 801h/2049d Inode: 655384      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/ ricardo)   Gid: ( 1000/ ricardo)
Access: 2012-10-10 14:20:21.877216007 -0300
Modify: 2012-10-10 14:20:21.877216007 -0300
Change: 2012-10-10 14:20:21.877216007 -0300
  File: "/home/ricardo/tmp/20120101.txt~"
  Size: 62         Blocks: 8          IO Block: 4096   arquivo comum
Device: 801h/2049d Inode: 655401      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/ ricardo)   Gid: ( 1000/ ricardo)
Access: 2012-10-10 14:20:21.877216007 -0300
Modify: 2012-10-10 14:20:21.877216007 -0300
Change: 2012-10-10 14:20:21.877216007 -0300

Para mover esses mesmos arquivos para a pasta /tmp, use:

$ find /home/ricardo/tmp -ctime -1 -type f -exec mv {} /tmp \;

O comando mv será executado para cada arquivo encontrado, e o {} será substituído pelo nome do arquivo no comando em questão.

Para apagar os arquivos criado a mais de 1 mes na área pública do servidor, digite:

$ find /home/temporario -ctime +31 -type f -exec rm -f {} \;

ou

$ find /home/temporario -ctime +31 -type f -delete

Também é possível encontrar os arquivos que possuem o atributo suid. No exemplo abaixo, listamos os arquivos da pasta /bin e executamos um ls -l em cada um.

$ find /bin -perm /+s -exec ls -l {} \;
-rwsr-xr-x 1 root root 31360 Out 14  2010 /bin/ping
-rwsr-xr-x 1 root root 47304 Jan 25  2011 /bin/umount
-rwsr-xr-x 1 root root 35252 Out 14  2010 /bin/ping6
-rwsr-xr-x 1 root root 29152 Fev 15  2011 /bin/su
-rwsr-xr-x 1 root root 68316 Jan 25  2011 /bin/mount

Para mais detalhes sobre o find, use o man.

$ man find

É bem provável que o comando find já faça parte de todas as distribuições Linux.

quarta-feira, 29 de agosto de 2012

HOWTOs e FAQs Linux no formato ASCII


"O pacote doc-linux-text fornece os atuais HOWTOs e FAQs Linux no formato ASCII. O pacote doc-linux-html fornece os mesmos documentos no formato HTML.

O número da versão reflete o mês no qual o doc-linux-text foi criado.

Todos os arquivos estão disponíveis no endereço http://www.tldp.org/ (com versões em ASCII, DVI, HTML, postscript e SGML)."

Essa é a descrição do pacote doc-linux-text. Uma ótima ajuda para quem administra sistemas Linux. Pode ser instalado vi aapt-get.

sexta-feira, 24 de agosto de 2012

Entendendo TCP/IP Parte 3 - Resolução de nomes

Vejo muitos técnicos em informática com dificuldades para entender o conceito de resolução de nomes DNS, endereços NetBIOS, e as ferramentas usadas para administração e manutenção nessa área. Por isso resolvi divulgar novamente um artigo que escrevi sobre esse assunto há pouco mais de um ano.



quarta-feira, 22 de agosto de 2012

Hping3, mais do que somente ping

Se você costuma testar a estabilidade da rede usando o ping, experimente o hping3.

Com o hping3 você pode controlar melhor o uso do ping. Uma opção que costumo usar faz com que centemas de pacotes icmp sejam enviados para o alvo em um segundo. Muito bom para testar a estabilidade da rede, ou para testar o quanto uma máquina aguenta de requisições.

Por exemplo, o comando:

# hping3 -i u1000 8.8.8.8 -c 100 -1

envia 1000 pacotes (-c 1000) icmp (-1) para o alvo (8.8.8.8), cada pacote com um intervalo de 1000 microsegundos (-i u1000). Em outras palavras, 1000 "pings" a cada segundo. O resultado do comando está resumido abaixo.


# hping3 -i u1000 8.8.8.8 -c 1000 -1
HPING 8.8.8.8 (eth0 8.8.8.8): icmp mode set, 28 headers + 0 data bytes
len=46 ip=8.8.8.8 ttl=57 id=36829 icmp_seq=0 rtt=7.3 ms
len=46 ip=8.8.8.8 ttl=57 id=36830 icmp_seq=1 rtt=6.3 ms
len=46 ip=8.8.8.8 ttl=57 id=36832 icmp_seq=3 rtt=4.9 ms
len=46 ip=8.8.8.8 ttl=57 id=36831 icmp_seq=2 rtt=5.9 ms
len=46 ip=8.8.8.8 ttl=57 id=36834 icmp_seq=4 rtt=6.0 ms
len=46 ip=8.8.8.8 ttl=57 id=36833 icmp_seq=5 rtt=5.5 ms
len=46 ip=8.8.8.8 ttl=57 id=36835 icmp_seq=6 rtt=4.5 ms
len=46 ip=8.8.8.8 ttl=57 id=36836 icmp_seq=7 rtt=4.1 ms
(...)
len=46 ip=8.8.8.8 ttl=57 id=37804 icmp_seq=994 rtt=5.4 ms
len=46 ip=8.8.8.8 ttl=57 id=37805 icmp_seq=995 rtt=4.7 ms
len=46 ip=8.8.8.8 ttl=57 id=37806 icmp_seq=996 rtt=4.8 ms
len=46 ip=8.8.8.8 ttl=57 id=37807 icmp_seq=997 rtt=4.1 ms
len=46 ip=8.8.8.8 ttl=57 id=37808 icmp_seq=998 rtt=6.7 ms
len=46 ip=8.8.8.8 ttl=57 id=37809 icmp_seq=999 rtt=6.3 ms

--- 8.8.8.8 hping statistic ---
1000 packets transmitted, 978 packets received, 3% packet loss
round-trip min/avg/max = 1.9/5.8/1002.6 ms

#

Na minha máquina esse comando demorou 2 segundos, com 0,3% de perda. Uma ótima marca.

O hping3 pode ser instalado via apt-get.

quinta-feira, 16 de agosto de 2012

Jogo do milhão com perguntas da LPI

Quem está pensando em tirar uma certificação LPI - Linux Professional Institute - o site http://www.fuctura.com.br/jogolpi tem uma ajuda legal: o Jogo do Milhão com perguntas que caem na prova.


Ele funciona da mesma forma que o da tv, inclusive com a própria voz do Silvio Santos.

Para acessar o jogo é necessário se cadastrar no site.


Uma ótima maneira de estudar para a LPI e se divertir ao mesmo tempo.

sexta-feira, 10 de agosto de 2012

Como gerar números aleatórios em script bash

Uma forma simples de gerar números aleatório em script bash é usando a função RANDOM.

echo $((RANDOM))

Você pode especificar um intervalo. Vamos supor que você queira um número entre 0 e 100.

echo $((RANDOM % 101))

No caso eu coloquei 101, que é o limite superior, excluindo o próprio 101.

Você também pode definir um intervalo onde o limite inferior seja diferente de zero. Por exemplo, um número entre 80 e 100, inclusive.

echo $((RANDOM % 21 + 80)

Ou seja, o primeiro número é o total de números do intervalo. O segundo número é o limite inferior.

Outro exemplo, gerar um número aleatório que seja -1, 0 ou 1.

echo $((RANDOM % 2 - 1))

Um último exemplo: que tal gerar números aleatórios para a Mega Sena?

for i in `seq 6` 
do
     echo $((RANDOM % 60 + 1))
done