Archive for the 'Artigos' Category

Comandos e parâmetros da semana

November 20, 2009

Durante essa semana aprendi uns comandos e parâmetros interessantes para o FreeBSD:

Grep colorido

Eu sei, é frescura, mas é legal, o parâmetro –colour=auto do grep no FreeBSD deixa o texto que casou com a expressão usada destacado em vermelho.

Cmdwatch, um watch (do linux) para FreeBSD

Um comando que eu sentia falta era o watch do Linux, conheci o cmdwacth que faz o mesmo trabalho, para instalar acesse /usr/ports/sysutils/cmdwatch e dê um make install clean.

No “Freeba” não tem tac, vai de tail -r

Outra coisa que precisei essa semana, listar o conteúdo de um arquivo invertendo a saída, no Linux tem comando tac, no FreeBSD você pode usar o tail -r.

Usando PF com FIBs no FreeBSD

November 17, 2009

Com o advento das múltiplas tabelas de roteamento no FreeBSD (FIB) ficou muito fácil distribuir certos tipos de tráfego por determinados links. Por exemplo, vamos supor que temos 2 links com respectivos gateways 192.168.1.254 e 10.10.1.254, para adicionar as duas rotas como default em 2 tabelas diferentes faça o seguinte:

  • route add default 192.168.1.254
  • setfib 1 route add default 10.10.1.254

Agora temos a tabela 0 com a rota default 192.168.1.254 e a tabela 1 com a rota default 10.10.1.254, agora vamos enviar todo tráfego para porta 25 para o segundo link (10.10.1.254) usando o PF:

  • pass in quick on $int_if from any to port 25 rtable 1

Fonte: Lista do FUG.

Remontando partições no FreeBSD

November 17, 2009

Para remontar uma partição no FreeBSD enquanto ela está sendo usada use o parâmetro -u do comando mount. Por exemplo, você precisa remontar uma partição para adicionar as flags noexec, nosuid e noatime. O comando ficaria assim:

  • mount -urw -o noexec,nosuid,noatime /particao.

Novidades do Bash 4

September 29, 2009

Algumas novidades na nova versão do Bash me deixaram empolgado.

Vetores associativos

Esse recurso permite criar “dicionários” em bash, para ativá-lo use declare -A <nome_do_vetor>, exemplo:

declare -A lista
lista['nome']=”Danilo Egea”
lista['idade']=21
lista['sexo']=”nao lembro quando foi a ultima vez”

Para recuperar os valores use ${lista['nome']}, exemplo:

echo ${lista['sexo']}
nao lembro quando foi a ultima vez

Conversão de maiúsculo para minúsculo e vice versa

O Bash agora permite usar algumas expansões de variáveis novas, são elas: “,”,  “,,”, “^” e “^^”.

Para converter a primeira letra para maiúsculo use:

nome=”danilo”
echo ${nome^}
Danilo

Para converter todas as letras para maiúsculo:

nome=”danilo”
echo ${nome^^}
DANILO

Para converter a primeira letra para minúsculo:

nome=”DANILO”
echo ${nome,}
dANILO

Para converter todas as letras para minúsculo:

nome=”DANILO”
echo ${nome,,}
danilo

Usando ** para listar arquivos

Use ** para listar todos os arquivos dentro de todos os diretórios de onde você está no momento, ** expande para uma lista de todos os arquivos, exemplo:

ls **

FONTE: Linux Magazine edição 58.

Squid com ZPH

September 19, 2009

ZPH (Zero Penalty Hit) é um recurso do squid que permite a marcação de pacotes originados de algo que está em cache. Ele é usado principalmente em sistemas onde há controle de banda. Quando você faz a limitação de tráfego no servidor, os objetos que estiverem em cache também serão limitados quando solicidatos. Com o ZPH você consegue saber o que não deve passar pelo controle de banda. No seu squid.conf coloque as seguintes linhas:

zph_mode tos
zph_local 0×02

Assim o Squid irá marcar os pacotes com a flag 0×02, agora no seu firewall (IPFW no meu caso) adicione uma regra permitindo o tráfego marcado antes das suas regras de controle de banda:

ipfw -q add 50 allow ip from any to any iptos mincost

default:
 set log Phase Chat LCP IPCP CCP tun command
 set device /dev/cuaU0
# set speed 236800
 set speed sync
 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT \
           OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"

claro:
 set authname claro
 set authkey claro
 set phone *99***1\#
 set login "TIMEOUT 10 \"\" \"\" \ CAUSE ERROR PLEASE NO CHANGE!
      gin:--gin: \\U word: \\P"
 set timeout 1
 set ifaddr 10.0.0.1/0 127.0.0.1/0 255.255.255.0 0.0.0.0
 #set ifaddr 10.0.0.1/0
# add default HISADDR
 enable dns
default:
 shell logger "LABEL down (up UPTIME): OCTETSIN received, OCTETSOUT sent"

claro:
 shell route delete default
claro:
 shell route delete default
 shell route add default -interface INTERFACE

Rotacionando os logs do Squid com o Newsyslog no FreeBSD

September 19, 2009

O Newsyslog é uma ferramenta do FreeBSD criada para manutenção de logs, ela é usada pelo sistema para rotacionar logs como o /var/log/messages, /var/log/auth.log e etc. O link abaixo mostra como usá-la para rotacionar e compactar os logs do Squid, não se esqueça de colocar “logfile_rotate 0” no seu squid.conf.

REFERÊNCIA

Alterando o Splash da inicialização do Ubuntu

September 10, 2009

A pedidos de um cliente, precisei alterar o Splash da inicialização do Ubuntu para colocar o logo da empresa dele (“afff”, eu sei), o link no final do texto resolveu o meu problema. Basta converter a imagem que você quer usar para PNG, eu deixei com uma resolução de 1024×768 e 256 cores. Bem, baixe um splash de exemplo (compativel com o Splashy (vide link)), descompacte e altere o arquivo XML que está dentro dele, é possível alterar todas as características do Splash (cor da barra de progresso, tamanho e etc).

Não é necessário baixar o Splashy como descrito no texto, ele já está nos repositórios do ubuntu, instale via aptitude.

LINK NO FINAL DO TEXTO

Enviando emails com anexo via linha de comando usando o gmail

August 10, 2009

Eu queria encontrar uma maneira de fazer backup dos arquivos de configuração de servidores de maneira que ficassem guardados em um lugar seguro, como não tenho um servidor próprio, percebi que o gmail seria um ótimo lugar para fazer isso. Depois da libgmail não ter funcionado comigo, consegui fazer usando o SSMTP e o MUTT, segue abaixo como fiz e a referência que usei:

Bom, primeiro você deve ter o SSMTP e o MUTT instalados (no FreeBSD /usr/ports/mail/ssmtp e /usr/ports/mail/mutt respectivamente).

Configuração do SSMTP (arquivo /usr/local/etc/ssmtp/ssmtp.conf):

  • mailhub=smtp.gmail.com:465
  • rewriteDomain=gmail.com
  • hostname=seuFQDN
  • FromLineOverride=NO
  • UseTLS=YES
  • AuthUser=seuemail@gmail.com
  • AuthPass=suasenha

Com isso você já é capaz de enviar emails com o SSMTP, monte um arquivo de texto simples com o seguinte conteudo:

To: email_de_destino@dominio.com
Subject: assunto
teste de email com o ssmtp

Envie com o comando: ssmtp email_de_destino@dominio.com < email.txt

Configuração do MUTT:

Agora temos que configurar o MUTT de maneira que ele utilize o SSMTP para enviar emails.

Crie um script (chamado sendgmail.sh por exemplo) com o seguinte conteúdo:

#!/bin/sh
/usr/local/sbin/ssmtp $@

Coloque-o em /usr/local/bin por exemplo e dê permissão de execução para ele.

Dentro do seu diretório home crie um arquivo chamado .muttrc com o seguinte conteúdo:

set sendmail=”/usr/local/bin/sendgmail.sh”

Agora você já pode enviar emails com anexos usando o MUTT:

mutt -a backup1.tar.gz -a backup2.tar.gz -s ‘Assunto’ email_de_destino@gmail.com < /dev/null

O “< /dev/null” é para tornar o envio automático e não interativo.

Referências

Fazendo RAID 0, 1 e 10 no FreeBSD

February 3, 2008

Usei o primeiro dia de carnaval para escrever um pequeno artigo sobre a configuração de RAID no FreeBSD com GEOM, segue o link abaixo:

Fazendo RAID 0, 1 e 10 no FreeBSD

Qemu com rede no FreeBSD 7

November 7, 2007

Rápidamente, para configurar o Qemu com de rede no FreeBSD 7, siga os passos abaixo:

Carregue os seguintes módulos:

kldload if_tap

kldload if_bridge

kldload aio

Ou coloque-os para carregar automaticamente no arquivo /boot/loader.conf

if_tap_load=”YES”

if_bridge_load=”YES”

aio_load=”YES”

Ative a sysctl net.link.tap.user_open:

sysctl net.link.tap.user_open=1

Ou coloque a seguinte linha no arquivo /etc/sysctl.conf, para que ela seja alterada automaticamente:

net.link.tap.user_open=1

Crie o arquivo /etc/qemu-ifup, com o seguinte conteúdo:

#!/bin/sh
ifconfig bridge0 create
ifconfig ${1} 0.0.0.0 up
ifconfig bridge0 addm <iface> addm ${1} up

onde <iface> é sua interface de rede que irá servir de bridge.

Dê permissão de execução para o mesmo:

chmod 775 /etc/qemu-ifup

Agora inicie sua máquina virtual:

qemu -hda imagem.img -cdrom /dev/acd0 -boot c -net nic -net tap

Caso você encontre algum erro por favor comente! Tchau!