sexta-feira, 29 de novembro de 2013

Será que esse arquivo .txt é realmente um texto?

No mundo Windows, a extensão de um arquivo diz o tipo que ele é. Por exemplo, um .doc é um documento de texto do Word, .txt é um arquivo de texto puro do Bloco de Notas, etc. No Linux, apesar de também trabalhar com extensões, o sistema operacional tem outra forma de descobrir o tipo de arquivo. E o programa "file" mostra isso muito bem.

$ file 20131101.txt
20131101.txt: UTF-8 Unicode text

Acima, o arquivo 20131101.txt é um arquivo de texto unicode utf-8.

$ file ipv6-02.jpeg
ipv6-02.jpeg: JPEG image data, JFIF standard 1.01

Agora um arquivo jpeg.


$ file instalar.sh
instalar.sh: Bourne-Again shell script, UTF-8 Unicode text executable

Um script bash executável.

$ file disco1
disco1: data

Um arquivo do tipo data. 

$ file Livro.pdf
Livro.pdf: PDF document, version 1.4

Um pdf.

$ file teste.iso
teste.iso: data

Outro data.

Agora, se eu renomear o arquivo Livro.pdf para Livro.txt, o que será que o "file" vai mostrar?

$ cp Livro.pdf Livro.txt
$ file Livro.txt
Livro.txt: PDF document, version 1.4

Apesar do arquivo ter extensão .txt, vemos que ele é, nas verdade, um pdf.

quinta-feira, 28 de novembro de 2013

Multitarefa sem ambiente gráfico

Muita gente não sabe, mas é possível trabalhar com várias tarefas ao mesmo tempo no Linux sem usar o ambiente gráfico. Vou mostrar neste pequeno artigo como trabalhar com várias aplicações diferentes ao mesmo tempo, no modo texto, e como alternar entre elas.

Primeiramente, vamos abrir um editor de texto qualquer.

$ nano text.php


Agora tecle CTRL + Z.


Reparem que o serviço foi parado. Ele ainda está na memória, mas está congelado, conforme podemos ver com o comando ps


Reparem no número entre []. Esse é o número da tarefa que colocamos em segundo plano. Vamos iniciar uma segunda tarefa em segundo plano. Para isso, usamos "&" ao final do comando.


Para alterarmos entre as tarefas, basta usar o comando "fg" seguido do número da tarefa. Podemos também colocar uma tarefa em segundo plano com o comando "bg". Por exemplo, para fazer um download, podemos chamar o comando "links" para navegar através do site e começar o download. Após, tecle "CTRL + Z". A tarefa vai ser congelada. Execute então "bg" e a tarefa vai continuar em segundo plano. Para voltarmos ao "links" basta digitar "fg" seguido do número da tarefa.

Uso isso quando vou conectar máquinas via vnc. Após a conexão, digito "CTRL + Z" no terminal e depois "bg", liberando o terminal para outras tarefas.






terça-feira, 26 de novembro de 2013

Conversão de arquivos de midia com ffmpeg

Se você está com problemas para assitir, ouvir, ou converter arquivos de mídia, como audio e video, experimente o ffmpeg.


O ffmpeg é uma espécie de faz-tudo para audio e video. Ele consegue converter de e para os mais variados formatos de video/audio. Seu uso é simples:

# ffmpeg -i arquivo_origem arquivo_final

O software identifica o formato de origem e converte para o formato especificado na extensão do nome do arquivo. No exemplo abaixo eu converti um arquivo wmv para avi.

# ffmpeg -i Californiadreaming.wmv California.avi

Se você possui vários clipes que gostaria de ouvir em seu mp3, o ffmpeg também pode converter arquivos de video para vários formatos de audio.

# ffmpeg -i Californiadreaming.wmv California.mp3

Mas não se engane com a simplicidade da ferramenta. Ele possui opções que não acabam mais. No exemplo abaixo eu converti o video para o formato FullHD.

# ffmpeg -i Californiadreaming.wmv California.vob -s hd1080

O formato 4k (6400x4096) também já é suportado através da opção -s whuxga.

O ffmpeg já vem em muitas distribuições, pois é o backend de várias aplicações gráficas. Mas, caso não esteja instalada, basta usar o comando:

$ apt-get intall ffmpeg

Para mais opções, veja a página de manual.

$ man ffmpeg

segunda-feira, 25 de novembro de 2013

Como descobrir as regras do IPTables que não estão sendo usadas

Quanto menos regras um firewall tiver, melhor. E um firewall de borda costuma ter centenas, ou mesmo milhares de regras. Quanto mais regras ele tiver, pior será seu desempenho. Portanto, é aconselhável verificar periodicamente o uso das regras do firewall, tanto para desabilitar regras não usadas quando para priorizar as regras mais utilizadas.

No IPTables, isso pode ser feito com o seguinte comando:

# iptables -nL --verbose


Chain INPUT (policy DROP 8513K packets, 940M bytes)
 pkts bytes target     prot opt in     out     source               destination        
    0     0 REJECT     all  --  *      *       172.20.19.149        0.0.0.0/0            reject-with icmp-port-unreachable
   31  1860 REJECT     all  --  *      *       172.20.15.202        0.0.0.0/0            reject-with icmp-port-unreachable
   16  1112 REJECT     all  --  *      *       149.20.56.0/24       0.0.0.0/0            reject-with icmp-port-unreachable
    1    60 REJECT     all  --  *      *       172.20.15.177        0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       172.20.50.56         0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       10.90.1.0/24         0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       172.20.15.79         0.0.0.0/0            reject-with icmp-port-unreachable
1003M 1142G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
 132K 7916K ACCEPT     tcp  --  eth0   *       172.20.1.82          0.0.0.0/0            multiport dports 10050,10051
35371 2971K ACCEPT     icmp --  eth0   *       172.20.1.82          0.0.0.0/0          
    0     0 ACCEPT     icmp --  eth1   *       200.136.27.146       0.0.0.0/0          
5005K  300M ACCEPT     tcp  --  lo     *       0.0.0.0/0            0.0.0.0/0            multiport dports 3000,3128,8080,16667
   45  2700 ACCEPT     tcp  --  eth0   *       172.20.120.4         0.0.0.0/0            multiport dports 22,81,139,445,666,3000,4200,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.120.5         0.0.0.0/0            multiport dports 22,25,81,666,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.120.7         0.0.0.0/0            multiport dports 22,25,81,666,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.120.6         0.0.0.0/0            multiport dports 22,25,81,666,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.120.2         0.0.0.0/0            multiport dports 22,25,81,666,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.120.1         0.0.0.0/0            multiport dports 22,25,81,666,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.120.8         0.0.0.0/0            multiport dports 22,25,81,666,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.1.130         0.0.0.0/0            multiport dports 22,25,81,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.1.146         0.0.0.0/0            multiport dports 22

Reparem que essa listagem traz o número de pacotes e o tamanho total dos dados trafegados pela regra. Regras zeradas significam que não estão sendo usadas. Esses valores consideram o período compreendido entre a última ativação do firewall (ou boot o servidor) até o momento presente.