segunda-feira, 23 de dezembro de 2013

FreeBSD - script para verificar espaço disponível em partições

    Este é um script simples feito em csh para verificar se tem espaço nas partições do FreeBSD, pode ficar rodando no cron e notificar se estiver acima de um limite definido, neste caso aqui, estou usando 95% como o limite para o admin ser notificado.

####### Inicio #######

#!/bin/csh

set limite = 95

foreach i ( `cat /etc/fstab | grep ufs | awk '{ print $2 }'` )

    set ocupado = `df $i | grep -v Filesystem | awk '{ print $5 }' | tr \% ' '`
    set particao = `df $i | grep -v Filesystem | awk '{ print $6 }' | tr \% ' '`

    if ( $ocupado >= $limite ) then
        echo "Atencao: $particao passou de $limite % do uso."
        mail -s "Atencao: $particao passou de $limite % do uso." admin@seudominio.com
        # Alguma outra ação a ser executda
    endif

end

####### Fim #######

quinta-feira, 19 de dezembro de 2013

FreeBSD pkgng - tentativa de uso 1



Estou criando este poste pra ir me ajudando a me acostumar com esta novidade.

  Primeira impressão: não gostei, acabo de instalar o FreeBSD 9.2 e fazer um freebsd-update
para RELEASE-p2, micro zerado, esta era a intenção, começar do zero, e fazer tudo via
pkgng. Agora vem a supresa, o pkgng está atualizado (acima da versão 1.1.4) conforme diz no http://wiki.freebsd.org/pkgng, mas o arquivo de configuração não está atualizado, tem que apagar o /usr/local/etc/pkg.conf criar o diretório /usr/local/etc/pkg/repos e colocar um arquivo FreeBSD.conf com o conteúdo:

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
  mirror_type: "srv",
  enabled: yes
}


Segunda impressão: O objetivo era instalar um servidor OpenFire, então
depois de fazer o pkg update para atualizar a base de dados, vamos ao pkg install openfire, nada encontrado, pkg search openfire nada encontrado, solução pkg_add -vr openfire e não se fala mais nisso.

Quem sabe fica para versão 10, 11, sei lá, por hora fico com pkg_xxx e quem sabe o que mais gosto de usar que é o ports mesmo.


terça-feira, 3 de setembro de 2013

FreeBSD: Enviar email via linha de comando usando o Gmail

Usando o ssmtp no FreeBSD


Uma ferramenta bem útil para envio de emails via linha de comando, um exemplo é o envio de relatórios do servidor para o administrador. Com o bloqueio da porta 25 pelos provedores na tentativa de reduzir os SPAM's, o sendmail acabou ficando bloqueado também.

O que me motivou a pesquisar esta solucão foi a crescente migração para GVT por parte dos meus clientes, e nesta acabei ficando sem os retornos dos servidores.

Vamos ver os passos que vamos fazer:



1 - Desativar o sendmail

2 - Instalar o ssmtp

3 - Configurar o ssmtp

4 - Testar o ssmtp


Chega de explicações e vamos ao que interessa:

1 - Desativando o sendmail


Inserir as linhas no /etc/rc.conf

sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
sendmail_enable="NO"

Após inserir estas linhas, pode reiniciar o servidor ou matar todos os processos do sendmail

# killall sendmail

2 - Instalar o ssmtp


# portsnatp fetch update && cd /usr/ports/mail/ssmtp && make install replace clean


3 - Configurando o ssmtp


Arquivo do configuração /usr/local/etc/ssmtp/ssmtp.conf

root=servidorXYZ@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=servidorXYZ@gmail.com
AuthPass=senh@doSeuGmail
UseSTARTTLS=YES


4 - Enviando um email de teste


# ssmtp -v meuemail@meudominio.com.br < /etc/hosts


Algumas dicas:


Como a senha do seu email está em texto plano no /usr/local/etc/ssmtp/ssmtp.conf é fortemente recomendado definir a permissão do arquivo para 640


# chmod 640 /usr/local/etc/ssmtp/ssmtp.conf


Referencias:


http://www.freebsd.org/doc/handbook/outgoing-only.html

http://log.brandonthomson.com/2010/10/freebsd-use-gmail-instead-of-sendmail.html


segunda-feira, 17 de junho de 2013

NetBSD: Servidor NFS

Vamos montar um servidor NFS em um NetBSD, o NFS é conhecido com Network File System, uma forma de sistema *nix acessar arquivos na rede.

O que vamos usar:


  • Um equipamento com NetBSD 6.0.1 (servidor)
  • Um equipamento com FreeBSD 9.1-RELEASE-p3 (cliente)

Configurações:


  • Servidor (NetBSD)
    • IP: 192.168.1.3
    • diretório a ser compartilhado: /backup
  • Cliente (FreeBSD)
    • IP: 192.168.1.1
    • ponto de montagem: /backup

No servidor (NetBSD):


Criar o diretório a ser compartilhado e dar permissão de escrita a todos:

mkdir /backup && chmod 777 /backup

Inserir as linhas abaixo no arquivo /etc/rc.conf

rpcbind=yes
mountd=yes
nfs_server=yes
lockd=yes
statd=yes

E agora no arquivo de configuração dos diretórios a serem exportados (/etc/exports):

/backup 192.168.1.1

Agora você pode reiniciar a máquina, ou apenas usar os seguintes comandos para iniciar o servidor de NFS e seus componentes:

/etc/rc.d/rpcbind start
/etc/rc.d/nfsd start
/etc/rc.d/mountd start

No cliente (FreeBSD):


Criar o ponto de montagem:

mkdir /backup

Montar o acesso ao diretório compartilhado:

mount_nfs 192.168.1.1:/backup /backup

Para que ao reiniciar o diretório seja montado, inserir a seguinte linha no /etc/fstab

192.168.1.3:/backup /backup nfs rw 0 0

Referências:


http://www.netbsd.org/docs/guide/en/chap-net-services.html

terça-feira, 21 de maio de 2013

FreeBSD: Configurando um Zabbix Agent



    Esta postagem é um complemento para a postagem "Criando um zabbix proxy com FreeBSD" para que um micro seja monitorado via servidor zabbix proxy.

    Primeiro vamos instalar o agente zabbix.

# cd /usr/ports/net-mgmt/zabbix2-agent && make install

    Agora criar o arquivo de configuração /usr/local/etc/zabbix2/zabbix_agentd.conf , com o conteúdo:


LogFile=/tmp/zabbix_agentd.log
Server=ip_servidor_zabbix
Hostname=Zabbix server


    E iniciar o zabbix agente, primeiro inserindo a seguinte informação no /etc/rc.conf

echo "zabbix_agentd_enable=\"YES\" " >> /etc/rc.conf

    E depois

/usr/local/etc/rc.d/zabbix_agentd start

Agora os próximos passos são as configurações na interface web do zabbix.

sexta-feira, 1 de março de 2013

Virtualização: Montando um servidor NetBSD DOM0 com Xen


O que não vamos fazer

- instalar o NetBSD, recomendo baixar o cd de instalação e instalar em um HD que não tenha nada instalado, para evitar um "PQP PERDI TUDO".

O que vamos fazer

- Instalar Xentools e Xenkernel
- Configurar inicialização
- Instalar uma HVM com [windows]

O que vamos precisar

- CD de instalação do NetBSD
- Conexão com internet
- ISO de instalação do Windows

Iniciando

Efetuar a instalação do NetBSD, recomendo a leitura da documentação no site caso não tenha muita experiencia com o sistema operacional (http://www.netbsd.org/docs/guide/en/chap-exinst.html).

Agora vamos baixar os pkgsrc mais recente. Este passo pode ser feito durante a instalação do sistema operacional:

# cd /tmp
# ftp ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz
# tar -xzf pkgsrc.tar.gz -C /usr
# rm pkgsrc.tar.gz

Instalação do xentools e xenkernel

# cd /usr/pkgsrc/sysutils/xentools41 && make install
# cd /usr/pkgsrc/sysutils/xenkernel41 && make install
# cd /dev && sh MAKEDEV xen

Agora vamos acessar o cd de instalação para copiar o kernel XEN DOM0:

# mount /cdrom
# cd /cdrom/amd64/binary/kernel
# cp netbsd-XEN3_DOM0.gz /
# gunzip netbsd-XEN3_DOM0.gz

Agora vamos alterar o boot.cfg para que tenhamos o boot do kernel com XEN micro kernel XEN, inserir a linha a baixo na segunda linha do arquivo /boot.cfg :

menu=Boot Xen with 256MB for dom0:load /netbsd-XEN3_DOM0 console=pc;multiboot /usr/pkg/xen41-kernel/xen.gz dom0_mem=256M,max:256M dom0_max_vcpus=1 dom0_vcpus_pin

Isto mesmo, na segunda linha, pois por enquanto não vamos colocar o Xen como default, visto que default está como 1.

Inserir as seguintes linhas no arquivo /etc/rc.conf:

xencommons=YES
xend=YES
xenwatchdog=YES
xendomains=YES
# xendomains="vm1 vm2" # esta linha é para iniciar a máquina virtual na inicialização do DOM0

E copiar rcs do diretório de exemplo para o /etc/rc.d

# cd /usr/pkg/share/examples/rc.d && cp xen* /etc/rc.d/

Criar a configuração para placa de rede bridge em /etc/ifconfig.bridge0 onde re0 é a sua
placa de rede:

create
!brconfig $int add re0 up

Agora reiniciar o computador com um reboot e na tela do boot escolher a opcão 2 (do kernel com XEN).

Para saber se está rodando pode usar o comando:

# xm info | more

Criando uma HVM windows:

Criar o arquivo da máquina em /etc/pkg/etc/xen/win2k3 com o conteudo:

kernel = "hvmloader"
builder='hvm'
memory = 1024
name = "win2k3"
vif = [ 'type=ioemu, bridge=bridge0' ]
disk = [ 'file:/home/vms/win2k3.img,hda,w', 'file:/home/isos/win2k3.iso,hdc:cdrom,r' ]
device_model = 'qemu-dm'
boot="dc"
sdl=0
vnc=1
stdvga=0
serial='pty'
tsc_mode=0

Criar o arquivo .img que será o HD da máquina virtual:

# qemu-img-xen create /home/vms/win2k3.img 40G

Agora para iniciar a VM:

# xm create win2k3

Para acessar o console da VM vamos precisar de um VNC, que para o acesso local vamos usa o vncviewer:

# vncviewer localhost

Caso queira acesso ao console da máquina virtual pelo vnc via rede, pode alterar o arquivo /usr/pkg/etc/xen/xend-config.sxp adicionando as linhas:

(vnc-listen '0.0.0.0')
(vnc-password 'xenha')

Dicas:

- Vamos alterar o /boot.cfg a opção default para 2 (Xen Dom0)
- Se for usar a inicialização automática das VMs, criar o diretório /var/lib/xen
- Para otimizar o uso do processador do Dom0 inserir no /etc/rc.local a linha:

/usr/pkg/sbin/xm sched-credit -w 512 -d 0 

- Após quebrar muito a cabeça, muito mesmo, num momento em que estava tentando subir
a quarta VM em um servidor, começaram os erros de hotplug 768 e 5632, e não conseguia subir a VM de forma alguma, pesquisa de lá pesquisa de cá, e tá ai a solução, tem que criar novos vnd's, simples assim:

# cd /dev && ./MAKEDEV vnd4 vnd5

sexta-feira, 1 de fevereiro de 2013

Dica: aprenda a programar de graça

Este é meu primeiro post do ano, e não que dizer que eu estava de férias, é que estava bem ocupado mesmo, e um pouco sem idéias para postar.

Acabei definindo a linguagem de programação que vou me dedicar, decido pelo Python, ou
seja, além de me dedicar ao shell-script estarei estudando Python.

Bom, hoje vou dar a dica de um site que estou usando a alguns meses e estou achando muito interessante, que ensina a programar de uma forma divertida, ensinando e criando desafios.

Atualmente tem javascripts, web fundamentals, python, ruby, jQuerys, e outros. Além de sempre
aparecer novidades.

Então fica a dica: http://www.codecademy.com