Instalando o glances no SaltStack

Este é um exemplo de deixar a instalação automatizada do Glances através do SaltStack.

glances.sls

Atualizando a GLIBC no Puppet

$ mkdir -p /etc/puppet/manifests/classes

$ cd /etc/puppet/manifests/classes

$ vim linux_packages.pp

class linux_packages {

  package {'bash':
    ensure => latest,
  }

  package {'glibc':
    ensure => latest,
  }

}

$ cd /etc/puppet/manifests

$ vi site.pp

import "classes/*.pp"

if versioncmp($::puppetversion,'3.6.1') >= 0 {
  Package {
    allow_virtual => false,
  }
}

node 'linuxservers' {
  include linux_packages
}

node /^lanersrv0*/ inherits linuxservers { }

Habilitando IP de origem no acess_log do Weblogic

Configurar o Header HTTP, no meu caso usei o Netscaler, deve ser configurado no Services

Netscaler-ServiceName

 

 

 

 

 

 

 

Criação da biblioteca para pegar o Header gerado no Netscaler

$ cd /home/oracle

$ mkdir log

$ vim MyOriginalClientIPField.java

import weblogic.servlet.logging.CustomELFLogger;
import weblogic.servlet.logging.FormatStringBuffer;
import weblogic.servlet.logging.HttpAccountingInfo;

/* This example outputs the X-Forwarded-For field into a
* custom field called MyOriginalClientIPField
* */


public class MyOriginalClientIPField implements CustomELFLogger{
  public void logField(HttpAccountingInfo metrics
  FormatStringBuffer buff) {
    buff.appendValueOrDash(metrics.getHeader("IP-Netscaler"));
  }
}

Compilando a classe que acabamos de gerar

$ javac MyOriginalClientIPField.java

$ jar cvf0 MyOriginalClientIPField.jar MyOriginalClientIPField.class

 

Copiar o .class para o diretório dentro do Weblogic

$ cp  MyOriginalClientIPField.class /u01/middleware/domains/WLDOMAIN/lib

 

Hora de configurar .class criado no Weblogic, vamos configurar na JVM, no CLASS_PATH do Server Start

Weblogic_CLASSPATH

 

 

 

 

 

Configurar na JVM, na parte do Logging / HTTP em modo Advance, não esquecer de acertar x- antes do nome da classe.

Format: Exetend

Extended Logging Format Fields: x-MyOriginalClientIPField

Logging-HTTP

 

 

 

 

 

 

VPN com OpenVPN

Para começar a fazer a VPN necessitamos fazer configurações de rede e levantar as redes que teremos na VPN.

Levantar as redes

Rede interna: 172.16.22.0/24, 10.0.0.0/8

Rede VPN: 172.16.23.0/24

Habilitar o ip_forward, para que os pacotes possam passar pelas interfaces

$ echo 1 > /proc/sys/net/ipv4/ip_forward # Isso habilita o forward, mas se rebootar volta para 0

Vamos deixar o ip_forward automático no boot

$ vi /etc/sysctl.conf
..
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Agora que ambiente esta preparado vamos para instalação do OpenVPN
$ aptitude install openvpn

Copiando os scripts que vão facilitar nossa vidas e muito
$ cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa

Configurando as variáveis para criação das chaves
$ cd /etc/openvpn/easy-rsa

No arquivo vars vamos apenas trocas essas variáveis, use de acordo queira, se a cidade for São Paulo use SaoPaulo
$ vi vars

# These are the default values for fields
# which will be placed in the certificate.
# Don’t leave any of these fields blank.
export KEY_COUNTRY=”BR”
export KEY_PROVINCE=”SP”
export KEY_CITY=”Cerquilho”
export KEY_ORG=”Laner”
export KEY_EMAIL=”alex@laner.net.br”

Criando diretórios onde vamos colocar as chaves
$ mkdir /etc/openvpn/easy-rsa/keys

Agora vamos criar as chaves do servidor
$ cd /etc/openvpn/easy-rsa
$ . /vars
$ ./clean-all
$ mv clean-all naousar.clean-all  # Esse comando apaga todas as chaves, então não vamos usar ele novamente e fazendo isso evita problemas
$ ./build-ca
$ ./build-key-server server
$ ./build-dh

Criando as chaves dos usuários
$ cd /etc/openvpn/easy-rsa
$ . ./vars
$ ./build-key alexlaner
$ ./buid-key rootsh

Configurando IPs para cada usuário da VPN
$ mkdir /etc/openvpn/ccd
$ vi /etc/openvpn/ccd/alexlaner
ifconfig-push 172.16.23.2 255.255.255.0
$ vi /etc/openvpn/ccd/rootsh
ifconfig-push 172.16.23.3 255.255.255.0
Agora vamos configurar o servidor
$ vi /etc/openvpn/server.conf

#
#======================================================================
# CONFIGURACAO OPENVPN – 20110219 – alex@laner.net.br
#======================================================================
#
# Ip do Servidor
#local
# Porta que iremos escutar
port 1194
# Protocolo que iremos usar
;proto tcp
proto udp
# Dispositivo, para usar maquinas windows e necessario usar tap.
dev tap
# Chaves CA e do servidor.
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key  # This file should be kept secret
dh /etc/openvpn/keys/dh1024.pem
# Rede que iremos disponibilizar
server 172.16.23.0 255.255.255.0
# Arquivo que armazena o ip e o cliente
ifconfig-pool-persist ipp.txt
# Rotas que vamos passar
push “route 172.16.22.0 255.255.255.0”
push “route 10.0.0.0 255.0.0.0”
# Diretorio onde abriga as configuracoes dos clientes, como rotas, ips.
client-config-dir ccd
;learn-address ./script
;push “redirect-gateway”
;push “dhcp-option DNS 10.8.0.1”
;push “dhcp-option WINS 10.8.0.1”
# Essa tag libera comunicacao entre os clientes
client-to-client
# Essa tag indica se os clientes podem usar a mesma chave
;duplicate-cn
# Checa a vida do cliente
keepalive 10 120
# TLS
;tls-auth ta.key 0 # This file is secret
# Criptografia, estamos usando AES-256
cipher AES-256-CBC   # AES
# Compressao LZO
comp-lzo
# Numero maximo de clientes, nao vamos setar isso.
;max-clients 100
# Usuario e grupo que vao rodar o OpenVPN.
user nobody
group nogroup
# Manter a persistencia do tunel e da chave.
persist-key
persist-tun
# Status do servidor.
status /var/log/openvpn-status.log
# Logs do OpenVPN.
log         /var/log/openvpn/openvpn.log
log-append  /var/log/openvpn/openvpn.log
verb 3
;mute 20
# Plugin para autenticacao local
# http://auth-passwd.sourceforge.net/
#plugin  /etc/openvpn/plugins/openvpn-auth-passwd.so vpn

Agora mais alguns detalhes antes de iniciar o servidor
$ mkdir /var/log/openvpn
$ ln -s /etc/openvpn/easy-rsa/keys /etc/openvpn/keys

Pronto, vamos colocar o servidono ar
$ /etc/init.d/openvpn restart

Checando se a interface tap0 esta no ar
$ ifconfig tap0

tap0      Link encap:Ethernet  Endereço de HW 86:82:4f:a4:2e:25
inet end.: 172.16.23.1  Bcast:172.16.23.255  Masc:255.255.255.0
endereço inet6: fe80::8482:4fff:fea4:2e25/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST  MTU:1500  Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:100
RX bytes:0 (0.0 B)  TX bytes:468 (468.0 B)

Servidor funcionando, agora vamos configurar o cliente
Para configurar o cliente necessitamos dos certificados e chave do usuário, para usarmos na máquina cliente
/etc/openvpn/keys/ca.crt
/etc/openvpn/keys/alexlaner.crt
/etc/openvpn/keys/alexlaner.key

Criando o arquivo de configuração do cliente
$ mkdir vpn
$ cd vpn
$ scp root@vpn.noisemakers.org:/etc/openvpn/keys/ca.crt .
$ scp root@vpn.noisemakers.org:/etc/openvpn/keys/alexlaner.crt .
$ scp root@vpn.noisemakers.org:/etc/openvpn/keys/alexlaner.key .
$ vi noisemakers.conf

client
dev tap
;dev-node VPN
proto udp
remote vpn.noisemakers.org 1194
;remote-random
resolv-retry infinite
nobind
persist-key
persist-tun
;mute-replay-warnings
ca ca.crt
cert alexlaner.crt
key alexlaner.key
;auth-user-pass
remote-cert-tls server
;ns-cert-type server
;tls-auth ta.key 1
cipher AES-256-CBC
comp-lzo
verb 3
;mute 20
;status openvpn-status-idev.log

Vamos fechar a VPN
$ cd vpn
$ sudo openvpn noisemakers.conf

VPN no cliente no ar, vamos verificar se esta tudo ok
$ /sbin/ifconfig tap0

tap0      Link encap:Ethernet  Endereço de HW e2:41:5b:f7:48:f4
inet end.: 172.16.23.2  Bcast:172.16.23.255  Masc:255.255.255.0
endereço inet6: fe80::e041:5bff:fef7:48f4/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST  MTU:1500  Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:100
RX bytes:0 (0.0 B)  TX bytes:7141 (6.9 KiB)

$ ping -c 3 172.16.22.2
PING 172.16.22.2 (172.16.22.2) 56(84) bytes of data.
64 bytes from 172.16.22.2: icmp_req=1 ttl=64 time=225 ms
64 bytes from 172.16.22.2: icmp_req=2 ttl=64 time=225 ms
64 bytes from 172.16.22.2: icmp_req=3 ttl=64 time=225 ms

Referência: http://everlinux.com/artigos/openvpn.html

Matrix de podre

Esse é Matrix de podre, no fundo, no fundo é legal.

$ tr -c “[:digit:]” ” ” < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR=”1;32″ grep –color “[^ ]”

Servidor http (web) simples com python

Você tem a necessidade de compartilhar o diretório que esta via http e não tem um apache ou qualquer outro webserver instalado, ou até mesmo precisa baixar um arquivo da sua máquina para um servidor que só tem wget.

As vezes colocar um webserver no ar ou um ftp para disponibilizar um arquivo e nunca mais precisar, vai ai uma solução simples.

$ cd /home/rootsh/arquivos

$ python -m SimpleHTTPServer 8000

8000 pode ser trocada, se estiver usando um usuário diferente de root, utilize acima de 1024.

Agradeço o Tiago Correale pela dica.

Instalando o Libre Office no Ubuntu

Foi adicionado no PPA os pacotes do Libre Office no Ubuntu. Agora vamos para o roteiro da instalação.

$ sudo add-apt-repository ppa:libreoffice/ppa

$ sudo aptitude update

$ sudo aptitude install libreoffice-l10n-pt-br -y

Adicionando um caracter no final da linha usando sed

Hoje tive que tiver que fazer um load de dados de uma panilha, usando o BrOffice salvei os dados da planilha em formato csv, e como estou usando Informix tive que colocar delimitado com “|”, mas mesmo assim o meu problema não estava resolvido necessitava colocar mais um “|” no final de cada linha, dai parei para pensar como fazer, ai que pensei em usar o sed, vamos mostrar como ficou o comando do sed.

$ sed ‘s/$/|/’ dados_tabela.csv > tabela.unl

Nagios NPRE – Habilitando argumentos de comando

Esse how-to é para instalar o NRPE habilitando ele argumentos de comandos.

Servidor nagios

No servidor do Nagios vamos configurar o comando no nagios

Editando o /usr/local/nagios/etc/objects/commands.cfg

$ vi /usr/local/nagios/etc/objects/commands.cfg

# ‘check_nrpe’ definindo Monitormento Remoto
define command{
command_name    check_nrpe
command_line    /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$ $ARG3$ $ARG4$
}

define command{
command_name    check_nrpev
command_line    /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$
}

$ /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

$ /etc/init.d/nagios restart

Agora na máquina que vamos monitor vamos instalar o NRPE e Nagios plugins

Nagios Plugins

Criando o usuário nagios

$ useradd nagios -d /bin/false -s /bin/false

Baixando, compilando e instalando

$ cd /usr/local/src
$ wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
$ tar xfzv nagios-plugins-1.4.15.tar.gz
$ cd nagios-plugins-1.4.15
$ ./configure
$ make
$ make install

NRPE

Baixando, compilando e instalando

$ cd /usr/local/src/
$ wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
$ tar xfzv nrpe-2.12.tar.gz
$ cd nrpe-2.12

$ ./configure –disable-ssl –enable-command-args

$ make all
$ make install

Configurando

$ echo “nrpe            5666/tcp        # NRPE” >> /etc/services

$ mkdir /etc/nrpe
$ cp /usr/local/src/nrpe-2.12/sample-config/nrpe.cfg /etc/nrpe

$ vi /etc/nrpe/nrpe.cfg

##allowed_hosts=127.0.0.1
allowed_hosts=10.10.11.12

##dont_blame_nrpe=0
dont_blame_nrpe=1

# The following examples use hardcoded command arguments…

## Essas linhas vem habiltadas por padrão, desabiltar elas.
##command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
##command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
##command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
##command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
##command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200

# The following examples allow user-supplied arguments and can
# only be used if the NRPE daemon was compiled with support for
# command arguments *AND* the dont_blame_nrpe directive in this
# config file is set to ‘1’.  This poses a potential security risk, so
# make sure you read the SECURITY file before doing this.

command[check_users]=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$
command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$
command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
command[check_swap]=/usr/local/nagios/libexec/check_swap -w $ARG1$ -c $ARG2$
command[check_procs]=/usr/local/nagios/libexec/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$

$ vi /etc/rc.local

# NRPE Nagios
/usr/local/nagios/bin/nrpe -c /etc/nrpe/nrpe.cfg -d

Vi – Vim

Putz os comandos do Vi e Vim são complicados demais, pode deixar desenhamos.