MTR: Saiba a quem culpar em caso de problemas com internet e rede :D

Quantas vezes já tivemos problemas com uma conexão e o seu provedor manda “reiniciar o modem” ou o seu administrador de rede diz que “aqui não tem nada”, mas sequer verificou o problema?

Há um X9 (dedo-duro) a seu favor, o utilitário mtr. Vamos testá-lo com um endereço famoso:

mtr google.com.br

A primeira imagem a seguir vai te ajudar a ter uma noção do que ele faz. Todos os resultados estão 100%.

Mas esta outra, que tive que forjar uma falha porque não tinha nada ruim no momento, vai te ajudar a entender melhor.

Perceba a porcentagem de perda de pacotes.

Eu apenas editei a imagem para servir de exemplo, não derrubei nenhum link. :D

Pronto, o seu maior informante acabou de te revelar o culpado dos problemas.

Algumas dicas (e umas óbvias):
- Se o problema está no IP da sua máquina em um IP da sua rede interna, mãos à obra, ou fale com o administrador da sua rede.
- No nosso exemplo, o provedor pode resolver esse problema.
- Se o problema está além do provedor, o que pode acontecer é você contatar os responsáveis por “aquele salto” ou verificar se o seu provedor pode te ajudar.
- Uma verificação legal é testar de um link de um provedor concorrente, seja 3G, cabo ou ADSL. Nestas horas que a gente acaba se lembrando dos amigos :D.

256 cores no shell

Quem leu os posts [Deixando o prompt colorido] e [Usando cores e efeitos no shell] gostou da idéia de colorir os caracteres do shell e o prompt com 16 cores.

Porém, é possível que o seu shell tenha 256 cores, sendo as 16 que já vimos até então (do padrão ANSII) e mais 240 novas.

Para explicar novamente o que expliquei em [Usando cores e efeitos no shell], é mais cômodo você ler o artigo que citei antes, pois o uso das 256 cores é mais complexo (sem saber o básico, você terá dificuldades de compreender), e depois volte a partir daqui para continuar de onde parou :D

Vamos aos exemplos agora.

Para imprimirmos o nome “Alice” apenas em violeta, ou seja,  Alice 

echo -e "\033[0;38;5;129m Alice \033[0m"

"Alice" com fundo verde-limão e texto em negrito:  Alice 

echo -e "\033[1;48;5;118m Alice \033[0m"

Para entender melhor:
echo -e "\033[1;48;5;118m Alice \033[0m"

O número 1 é o código do negrito. Se ele for 0, não é negrito. Os demais efeitos estão em [Usando cores e efeitos no shell].

O número 48 é para que a cor seja especificada como plano de fundo. Se for 38 a cor é especificada para o texto.

Não sei qual é a finalidade desse número 5, mas ele deve estar ali. Se for omitido ou colocar outro número no lugar, não vai funcionar.

O número 118 é o código da cor verde-limão. O código do violeta é 129. A tabela completa com todos os códigos de cores está no final desse artigo.

E é possível combinar as cores de textos e de plano de fundo também.

"Alice" com texto em violeta com fundo verde-limão sem efeitos, ou seja,  Alice 

Vamos printar o código do texto violeta primeiro (\033[0;38;5;129m) e depois o código do plano de fundo verde-limão (\033[0;48;5;118m):

echo -e "\033[0;38;5;129m\033[0;48;5;118m Alice \033[0m"

"Alice" com texto em violeta e negrito com fundo verde-limão, ou seja,  Alice 

Vamos printar o código do texto violeta primeiro (\033[0;38;5;129m) e depois o código do plano de fundo verde-limão com o código de negrito junto (\033[1;48;5;118m).

echo -e "\033[0;38;5;129m\033[1;48;5;118m Alice \033[0m"

Nada impede também de você querer printar primeiro o código do plano de fundo e depois o código do texto, porque o resultado final será o mesmo, independente da ordem, porém o código do efeito deve ser especificado na última tag, do contrário, não vai sair o efeito negrito (ou qualquer outro), porque você vai acabar ativando o negrito com 1 na primeira tag, mas já o desativa logo em seguida com o 0 na segunda tag.

A seguir está a tabela completa de todas as cores:

Quem usa o terminal do Mac vai se decepcionar, porque este terminal não suporta 256 cores, os demais sim, porém quem usa o Mac pode ter esperanças nos terminais alternativos, como o Zoc, o Terminator ou o iTerm. O terminal nativo do X que é utilizado pelo Mac e pelo Linux suporta todas essas cores.

Para saber quais são os efeitos e quais programas o suportam, veja [Usando cores e efeitos no shell].

Como compilar no Mac (gcc, g++, make etc)

Para deixar o Mac pronto para compilar novas aplicações a partir dos código-fontes, você deverá baixar o Xcode no site da Apple™.

http://connect.apple.com/

É necessário se cadastrar gratuitamente como um desenvolvedor Apple (Apple Developer) antes de efetuar o download, desça até o rodapé da página que acabou de abrir para se cadastrar como Apple Developer.

Após estar cadastrado, e logado naquele site, baixe a imagem do Xcode. Se não encontrar nada sobre Xcode, clique aqui para ir direto para a página de download dele.

Depois de baixado, não tem segredos, é só abrir a imagem de disco (.dmg) baixada e clicar duas vezes no programa de instalação.

Das opções disponíveis, as que vão realmente interessar são apenas a Xcode Toolset e a Unix Development.

TrueCrypt – Aumente a segurança das suas informações

O TrueCrypt é um utilitário que é capaz de montar volumes criptografados. Estes volumes podem ser partições ou arquivos e o suporte é tanto em modo texto quanto em modo gráfico.

Neste tutorial, mostrarei como utilizá-lo no modo gráfico:

Acesse a página do TrueCrypt e faça o download dele, conforme o sistema que você utiliza.

Talvez você esteja na dúvida para descobrir qual a arquitetura do seu sistema (32 bits ou 64 bits) rode o comando:

uname -a
# Algumas distribuições exigirão que você rode este comando como root

Se nessa informação conter x86_64 seu sistema é de 64 bits.
Se retornar i686, i586, i486 ou i386, seu sistema é 32 bits.
Qualquer informação diferente desta, é porque não há suporte ainda já empacotado, então você terá que baixar o source code para Mac OS X / Linux e compilá-lo.

Assim que estiver baixado, alterne seu usuário para o root para executar a instalação dele:

$ sudo su - root
# cd /home/DIRETÓRIO/QUE/VOCÊ/EXTRAIU/O/ARQUIVO
# chmod +x truecrypt-6.3a-setup-x86
# ./truecrypt-6.3a-setup-x86

Esta é a tela de instalação, basta concordar com o contrato e iniciar a instalação.

Pronto, agora é só executá-lo, abaixo está uma imagem de como localizá-lo no Ubuntu.

A seguir a tela do TrueCrypt, para criar um volume novo, clique no botão “Create Volume”.

Vamos usar o exemplo mais simples, o de criar um volume a partir de um arquivo criptografado.

Escolha o Standard TrueCrypt volume

Nesta tela, clique no botão Select File…

… escolha em qual pasta o arquivo ficará armazenado, e informe também qual será o nome do arquivo.

Aqui são os algoritmos de criptografia que este arquivo terá, quanto mais algoritmos forem implementados melhor (opção AES-Twofish-Serpent e Serpent-Twofish-AES).

E aqui estão os algorítimos de hash disponíveis, qualquer um deles podem ser escolhidos.

Escolha o tamanho desse arquivo. No exemplo está apenas 5MB porque o intuito é guardar apenas pequenos documentos e TXTs.

Aqui você define a segurança para acesso a este novo volume que você criará.

Você pode definir uma senha, ou se preferir pode usar um arquivo de chave. Como eu sou muito desconfiado, eu usei os dois :-D.

Clique no botão “Key files…” para criar um novo arquivo de chave, e na nova janela, clique no botão “Generate Random Keyfile…”

Você pode escolher qualquer tipo de algorítimo de hash também.

Agora é só clicar no botão “Generate and Save Keyfile…” e salvar o arquivo de chave.

Ao voltar na tela anterior, clique em “Close” para voltar para a outra janela, para clicar no botão “Add Files…”

Escolha o arquivo da chave que você acabou de salvar e clique em OK.

Obs: Se a senha que você colocar possuir poucos caracteres, o TrueCrypt chamará a sua atenção.

Estamos quase no final. Escolha o formato do volume, se for FAT ele ficará compatível com Windows, mas não será possível determinar as permissões e owner/grupo dos arquivos e diretórios dentro do volume. Escolhendo EXT2 ou EXT3, somente os sistemas em Linux conseguirão ler este arquivo caso ele seja portado para outros computadores. O formato EXT3 é o mais confiável de todos.

Essa tela aparece se você não escolher o FAT, se você escolher a primeira opção ele vai voltar à tela anterior e sugerir que você mude o formato para FAT.

Nessa parte, passe o cursor do mouse sobre a janela para ele mudar o hash do volume, quanto mais você passar o mouse, mais ele vai mudar :-D

E finalmente, clique no botão “Format”. A senha de root do seu computador será solicitada.

Aqui é só clicar em Exit.

De volta à janela principal, clique em “Select File…” e escolha o arquivo de volume que você acabou de criar.
Clique em um dos números acima e em seguida no botão “Mount”.

Uma janela aparecerá pedindo que você digite a senha e/ou especifique o arquivo de chave. Neste exemplo, você terá que especificar tanto a senha quanto o arquivo de chave. Clique em “Keyfiles…” para usar o arquivo de chave que você criou.

Se o caminho do arquivo aparecer na linha correspondente ao número que você clicou, é porque seu volume foi montado com sucesso.

A partir daí ele fica acessível como um volume montado igual a qualquer outro dispositivo, como pen drive.

Para desmontar o volume basta clicar em Dismount.

Acertando a data e a hora

Com conexão à internet:

É bem mais fácil. Com o usuário root rode:

ntpdate -u IP_ou_HOST_do_SERVIDOR_NTP

Você pode usar qualquer servidor NTP, a seguir estão os três do NTP.br:

a.ntp.br
b.ntp.br
c.ntp.br

Exemplo:

ntpdate -u a.ntp.br

Sem conexão à internet:

É um pouco mais complicado. Com o usuário root rode:

date MMDDhhmmAA

Onde:
MM: Dois dígitos do mês
DD: Dois dígitos do dia
hh: Dois dígitos da hora
mm: Dois dígitos do minuto
AA: Dois dígitos do ano

E finalmente use o comando a seguir para salvar as alterações:

date -w

Um exemplo: Acertar para 23:45 do dia 15 de novembro de 2011.

date 1115234511
date -w

Veja como redefinir a senha de root caso a tenha esquecido (Red Hat, Fedora e distribuições baseadas).

Caso você precise recuperar a senha de root e não há mais forma de se logar com este usuário, nem usando o sudo su, ainda existe uma salvação:

Assim que você ligar o computador você irá para a tela de inicialização do Grub, escolha a opção que você costuma usar (como na imagem abaixo, usamos o exemplo do CentOS) e pressione a tecla E.
Como recuperar a senha de root no Red Hat

Escolha a opção do Kernel (imagem abaixo) e pressione E novamente.:
Como recuperar a senha de root no Red Hat

Acrescente no final a palavra single igual à imagem a seguir, e pressione o Enter em seguida:
Como recuperar a senha de root no Red Hat

Com isso você voltará à tela anterior mas com o parâmetro já editado, agora é só pressionar a tecla B:
Como recuperar a senha de root no Red Hat

Com o Linux carregado, basta rodar o comando passwd e definir a nova senha de root:
Como recuperar a senha de root no Red Hat

Agora reinicie seu computador e deixe-o carregar normalmente.

Veja como redefinir a senha de root caso a tenha esquecido (Debian, Ubuntu e distribuições baseadas).

Caso você precise recuperar a senha de root e não há mais forma de se logar com este usuário, nem usando o sudo su, ainda existe uma salvação:

Assim que você ligar o computador você irá para a tela de inicialização do Grub, escolha a opção que você costuma usar (como na imagem abaixo, usamos o exemplo do Debian) e pressione a tecla E.
Como recuperar a senha de root no Debian

Escolha a opção do Kernel (imagem abaixo) e pressione E novamente.:
Como recuperar a senha de root no Debian

Substitua ro por rw e acrescente no final init=/bin/bash igual à imagem a seguir, e pressione o Enter em seguida:
Como recuperar a senha de root no Debian

Com isso você voltará à tela anterior mas com o parâmetro já editado, agora é só pressionar a tecla B:
Como recuperar a senha de root no Debian

Com o Linux carregado, basta rodar o comando passwd e definir a nova senha de root:
Como recuperar a senha de root no Debian

Agora reinicie seu computador e deixe-o carregar normalmente.

Recortar, Copiar e Colar no VI / VIM

O Recortar também pode ser usado como Apagar.

Todos os comandos abaixo funcionam somente em modo de comandos (pressione ESC a qualquer momento para alternar para o modo de comando).

Copiar uma linha inteira:
Posicione o cursor sobre a linha desejada e pressione yy, esse comando copia a linha para a área de transferência do vim.

Recortar uma linha inteira:
Posicione o cursor sobre a linha desejada e pressione dd, esse comando move a linha para a área de transferência do vim.

Colar o conteúdo da área de transferência:
Pressione p.

Você também pode copiar ou recortar as linhas que estão acima ou abaixo também.

Copiar a linha atual e mais as dez linhas abaixo:
Posicione o cursor sobre a primeira linha desejada e pressione y, digite 10 e pressione seta para baixo.

Recortar a linha atual e mais as quinze linhas acima:
Posicione o cursor sobre a última linha desejada e pressione d, digite 15 e pressione seta para cima.

Salvando o resultado de um comando (sem erros e com erros juntos e separados) em arquivos.

Supondo que queiramos salvar em arquivo o resultado de “ls -l um_diretório”:

Salvando sem nenhuma mensagem de erro:

ls -l um_diretorio > resultado.txt

Você não verá nada na tela a não ser erros (se houverem, nesse caso, diretório não encontrado ou problema de permissão nele), pois tudo o que o comando acima deveria exibir na tela será salvo no arquivo “resultado.txt”.

Salvando os erros (se houverem) no mesmo arquivo:

ls -l um_diretorio > resultado.txt 2>&1

Nada será mostrado na tela, nem os erros, porque o argumento 2>&1 converte mensagens de erros em saídas normais e depois salva todo o resultado no arquivo “resultado.txt”.

Salvando os erros (se houverem) em um arquivo separado:

ls -l um_diretorio > resultado.txt 2>erros.txt

Salva o resultado do comando (sem erros) no arquivo “resultado.txt” e salva os erros no arquivo “erros.txt”. Comandos como o “find” podem retornar saídas normais e erros durante a sua execução, então esse exemplo te ajuda a filtrar todas as saídas válidas e os erros retornados por esse comando.

Deixando o prompt colorido

A distribuição Gentoo possui um prompt colorido ao acessar o shell, veja aqui como deixá-lo para a sua distribuição também.

Abra o arquivo .bashrc (faça um backup dele antes ok?) que está no seu diretório home de usuário (geralmente /home/seunome ou /root se você estiver como root).

Vá ao final do arquivo e, conforme a tabela que está no tópico [Usando cores e efeitos no shell] você pode escolher as cores para seu prompt definindo-as na variável PS1 e PS2.

A variável PS1 é a que mostra o texto no seu prompt, como:

jose@jose-desktop:~$ _

E a variável PS2 é aquele “>” que aparece quando você digita um comando com mais de uma linha, por exemplo:

jose@jose-desktop:~$ echo "
 > Ola"

Geralmente a variável PS1 tem o seguinte conteúdo:

PS1="\u@\h:\w\$ "

onde:
\u Exibe o nome do usuário (username)
\h Exibe o nome da máquina (hostname)
\w Exibe o caminho atual

E a PS2 é simplesmente:

PS2=" > "

Para apenas o nome do seu usuário aparecer em vermelho, conforme o exemplo da tabela de código de cores [aqui], definiremos por exemplo:

PS1="\033[31m\u\033[0m@\h:\w\$ "

Resultado final:
jose@jose-desktop:~$

Se quiser algo como:
jose@jose-desktop:~$

em uma linha só ficará grande, então você pode fazer dessa forma:

PS1="\033[35m\u"
PS1="$PS1\033[34m@"
PS1="$PS1\033[36m\h"
PS1="$PS1\033[32m:"
PS1="$PS1\033[33m\w"
PS1="$PS1\033[31m\$\033[0m "

Teste antes abrindo um terminal novo para ver se está tudo ok, do contrário, restaure o backup do .bashrc

Outra forma mais rápida de ele atualizar o seu prompt após essa edição é rodar o comando

source .bashrc

Detalhe importante para quem usa distribuições baseadas no Red Hat, como o próprio Red Hat, CentOS, Mandriva e Fedora, O arquivo “.bashrc” em alguns casos é o “.bash_profile”, então substitua todos os exemplos com .bashrc por .bash_profile

O que acha de editar a variável PS2 para deixá-la algo como o exemplo abaixo?

jose@jose-desktop:~$ for x in {1..7}
>>>>>> do
>>>>>> echo $x
>>>>>> done

Divirtam-se :-)