sexta-feira, 27 de maio de 2011

2º Encontro de Software Livre



A Training Tecnologia está promovendo o 2º Encontro de Software Livre em Brasília. O evento ocorrerá em Brasília no dia 15/06. Segue detalhes:

Palestras:

Segurança em Redes Sem Fio - 19hrs
  • Palestrante: Ribamar Alvino
Processos de Desenvolvimento com Software Livre - Case DATAPREV
  • Palestrante: Érico José Ferreira

Inscrição: 1 Kg de alimento não perecível
Local: Setor Comercial Sul, Quadra 2, Edifício Palácio do Comércio, 1º Andar – Brasília – DF
Inscreva-se!

quarta-feira, 25 de maio de 2011

Erro Apache - Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration

A dica de hoje é sobre o Apache.

Ao realizar uma configuração nova do apache, estava recebendo o seguinte erro:

[root@xxxxx conf]# /etc/init.d/httpd configtest
Syntax error on line 280 of /etc/httpd/conf/httpd.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration

Após diversas pesquisas e uma dica neste site (link), descobri que estava faltando apenas carregar no apache um módulo. Vide.

[root@xxxxx conf]# vi /etc/httpd/conf/httpd.conf
LoadModule authz_host_module modules/mod_authz_host.so

Pronto. Problema resolvido!

sexta-feira, 20 de maio de 2011

Modos de execução de um script

Basicamente, há 3 maneiras de executar um script shell no linux.
  1. Digitando o seu patch completo com o nome do script. Nesse tipo de execução é criado um subshell para execução do script e ao termino é retornado o resultado para o shell corrente ou shell pai. Exemplo:
  2. # /home/wvcardoso/script1.sh
  3. Utilizando o ponto (.) com o nome do script. Diferente do modo anterior, aqui o script é executado no shell corrente. Não é criado um shell filho!
  4. # cd /home/wvcardoso/ # ./script1.sh
  5. Utilizando o comando source. Igual ao modo anterior, aqui o script também é executado no shell corrente.
  6. # cd /home/wvcardoso/ # source script1.sh

quarta-feira, 18 de maio de 2011

Padrões Web W3C - Certificação


A W3C, que é um consócio internacional que visa desenvolver padrões para a Web, está estudando formas de criar certificações para certificar os profissionais de TI da Web.

Particulamente acho a iniciativa interessante e plausível pois com o avanço da internet e a facilidade de acesso, qualquer pessoa pode fazer uma página na web, um site qualquer, usando até mesmo um CMS da vida e já diz que é desenvolvedor Web. Espero que realmente de certo. Segue:

"O escritório brasileiro do W3C iniciou grupo de trabalho, com a participação de filiados brasileiros ao consórcio e parceiros, com o objetivo de estudar e levantar hipóteses para implantar processo de certificação profissional em padrões web.

domingo, 15 de maio de 2011

Compartilhando ADSL no Linux

Precisei compartilhar uma ADSL convencional, usando o linux. Fiquei “bobo” de ver como é simples. Segue arquitetura da rede:


Há diversas maneiras de fazer isso. Umas simples busca no google, certamente encontrara um monte. Mas fiz da seguinte maneira:

eth0 – Busca o DHCP do modem ADSL
 
[root@vm1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=08:00:27:4F:53:6B
ONBOOT=yes

eth1 – Será o gateway da tua rede interna. No exemplo – 10.10.10.1
 
[root@vm1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
HWADDR=08:00:27:1C:52:1E
ONBOOT=yes
IPADDR=10.10.10.1
NETMASK=255.255.255.0

Executando esses três comandos básicos e pronto:
 
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -P POSTROUTING DROP
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

Fonte: www.google.com.br

TAR – Multiplos arquivos

As vezes precisamos dividir um arquivo em diversos arquivos. Exemplo: Dividir um arquivo de 4Gb e transforma-lo em diversos arquivos de 700Mb para grava-los em CD.
Segue uma diquinha de ouro para isso:

1º – Compactando arquivo com tar.gz:
# tar -czvf arquivo.tar.gz arquivo.txt
2º – Dividindo o arquivo.tar.gz (tamanho 28Mb) em 3 arquivos de 10MB:
# tar -c -M –tape-length=10000 -f arquivo1.tar -f arquivo2.tar -f arquivo3.tar arquivo.tar.gz
3º – Restaurando os 3 arquivos gerados no arquivos original:
tar -x -M –file=arquivo1.tar –file=arquivo2.tar –file=arquivo3.tar arquivao.tar.gz

Montando arquivos .iso

Chega de mídia…
Montando arquivo de .iso no Linux:
# mount -o loop Arquivo.iso /mnt/PastaDestino
Montando arquivo de .iso no RWindows:
Um software chamado Daemon Tool. Funciona direitinho.

Adicionando data e hora no comando history

O comando history apresenta uma relação dos últimos comandos executados em uma máquina.
root@localhost:~# history
3  ping 10.200.144.110
4  ssh -X willian@10.200.144.110
Para aumentar o número de histórico de comandos é necessário exportar a variável HISTSIZE.
root@localhost:~# export HISTSIZE=100
root@localhost:~# history
472  netstat -anp | grep 7001
473  init 6
474  cd /home/willian/Desktop/
475  ll
476  mount
477  cd /home/willian/rede/usuario-bsa/
478  export HISTSIZE=100
Para o comando history apresentar a data e hora em que os comando foram executados, é necessário exporta a variável HISTTIMEFORMAT.
root@localhost:~# export HISTTIMEFORMAT=”- %d/%h/%Y – %H:%M:%S – ”
root@localhost:~# history
497  – 19/Out/2010 – 10:17:16 – netstat -anp | grep 7001
498  – 19/Out/2010 – 10:17:17 – /etc/init.d/httpd configtest
499  – 19/Out/2010 – 10:23:51 – /etc/init.d/httpd reload
500  – 19/Out/2010 – 10:23:53 – netstat -anp | grep 8080
502  – 19/Out/2010 – 10:26:36 – export HISTTIMEFORMAT=”- %d/%h/%Y – %H:%M:%S – “

erro: service X does not support chkconfig

Criei um script qualquer, coloquei no diretório /etc/init.d/, conferir as permissões e queria que ele iniciasse junto com o sistema operacional. Quando fui incluir no chkconfig apresentava o seguinte erro:
service script.sh does not support chkconfig
Com a ajuda de um amigo (Luís Adriano), descobrir que o chkconfig só aceita o script se nele conter pelo menos as seguintes linhas:
# chkconfig: <level> <start> <kill>
# description:
Valeu Luís…

Error: Can’t open display

É comum, em servidores, não instalarmos interface gráfica. Quando necessitamos executar algum programa que precisa dela, exportamos a interface gráfica de outro sistema operacional com a opção “-X”. Vide:
[wvcardoso@dfcdsrv0058 ~]$ ssh -X srv527
Porém me deparei com o seguinte erro:
[wvcardoso@dfcdsrv0527 ~]$ xclock
Error: Can’t open display:
Após pesquisas e com a ajuda de um amigo (Érico - Muhammad), descobrir que precisamos instalar apenas um pacote do xorg (xauth). Aí ficou fácil:
[root@dfcdsrv0527 ~]# yum search xauth
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
================== Matched: xauth ==================
xorg-x11-xauth.i386 : Utilitários de autoridade do X.Org X11
[root@dfcdsrv0527 ~]# yum install xorg-x11-xauth.i386 -y
Ao logar no sistema novamente, será criado, em teu home, um arquivo chamado .Xauthority.
/usr/bin/xauth:  creating new authority file /home/wvcardoso/.Xauthority
Valeu Muhammad!!!!

Erro: Too many open files

Em um atendimento, encontrei o seguinte erro: “Too many open files“.
Ele é ocasionado porque o sistema operacional chegou no limite de arquivos que consegue abrir simultaneamente. Esse valor é encontrado com o seguinte comando:
[root@dfcdsrv0529 ~]# ulimit -n
1024
Conferi na log do servidor tomcat
SEVERE: Protocol handler pause failed java.net.SocketException: Too many open files
Pra resolver o problema, precisei aumentar o número de arquivos que o sistema operacional consegue abrir simultaneamente.
Para isso edite o arquivo /etc/security/limits.conf:
[root@dfcdsrv0528 ~]# vim /etc/security/limits.conf
E acrescentei a seguinte linha:
#<domain>        <type>  <item>  <value>
* – nofile 4096
É só sair do sistema e logar novamente:
[root@dfcdsrv0529 ~]# ulimit -n
4096

Copiar diretório excluindo subdiretorio

Precisei fazer a cópia de um JBoss, porém excluindo subdiretorios de logs devido ao seu tamanho.
Inicialmente pensei no comando cp, porém não achei algum tipo de exclude, daí surgiu a idéia de utilizar o rsync.
Segue:
rsync -Cravz –exclude=log /opt/programas/jboss-4.2.3.GA/ /tmp/willian/

Múltiplos SCP sem digitar senha

Segue uma diquinha que usei hoje:
Precisei copiar um script para 17 servidores distintos
Para preciso usar o SCP, porém teria que digitar a senha 17 vezes.
Vide:
localhost@serpro-1430607:/$ scp script.sh wvcardoso@srv01:/home/wvcardoso/
wvcardoso@srv58′s password:
localhost@serpro-1430607:/$ scp script.sh wvcardoso@srv02:/home/wvcardoso/
wvcardoso@srv58′s password:
…. 17 vezes ….
Solução:
localhost@serpro-1430607:/$ sshpass -p “SENHA” scp script.sh wvcardoso@srv01:/home/wvcardoso/
localhost@serpro-1430607:/$ sshpass -p “SENHA” scp script.sh wvcardoso@srv02:/home/wvcardoso/
localhost@serpro-1430607:/$ sshpass -p “SENHA” scp script.sh wvcardoso@srv03:/home/wvcardoso/
…. 17 vezes também….
Melhor Solução:
Para a senha não ficar no histórico, precisei fazer um script.
Segue:
#!/bin/bash
for i in $(seq -w 1 17)
do
sshpass -p “SENHA” scp script.sh wvcardoso@srv$i:/home/wvcardoso/
done

PHP – Suporte banco Oracle

Passos para instalar extensão oracle no php5
1 – Instalar PHP Pear
# yum install php-pear php-devel glibc-headers glibc-devel gcc
2 – Instalar cliente Oracle (Requer login – http://download.oracle.com/otn/linux/instantclient)
# rpm -ivh oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm
# rpm -ivh oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm
3 – Instalar extensão pear para o oracle
pear install pecl/oci8
ou
# wget http://pecl.php.net/get/oci8-1.4.1.tgz
# pear install –offline /tmp/oci8-1.4.1.tgz
4 – no script de inicialização do httpd (na seção de definição de variáveis)
# vim /etc/init.d/httpd
### Variaveis Oracle
export ORACLE_HOME=/usr/lib/oracle/11.1/client64/lib
export NLS_LANG=”BRAZILIAN PORTUGUESE_BRAZIL.WE8ISO8859P1″
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/11.1/client64/lib
export ORACLE_SID=tsmteste
export TNS_ADMIN=/etc/
5 – criar arquivo /etc/php.d/oci8.ini
# vim /etc/php.d/oci8.ini
extension=oci8.so

Apache – [crit] (28)No space left on device

Erro encontrado no apache após chegarmos a sintaxe e dar um reload.
[root@dfcdsrv0058 ~]# apachectl -t
Syntax OK
[root@dfcdsrv0058 ~]# /etc/init.d/httpd reload
[FAILED]
Encontrei os seguinte erros na log:
[Wed Jan 19 11:02:50 2011] [crit] (28)No space left on device: mod_jk: could not create jk_log_lock
Configuration Failed
Depois de “apanhar” bastante, ter conferido espaço em filesystem, utilização de quotas de disco, desabilitar o mod_jk, etc, encontrei na web algumas dicas para conferir a utilização de semáfaro (lembrei da faculdade. :)   ).
Segue:
[root@dfcdsrv0148 ~]# ipcs -s | grep apache
0×00000000 1333166080 apache    600        1
0×00000000 1333198849 apache    600        1
….
Encontrei uma série de ocorrências. Com isso deduzi que houve algum erro e/ou lock com os semafaros utilizados pelo apache. Encontrei o possível erro, agora cade a solução?
Solução:
for i in $(ipcs -s | awk ‘/apache/ {print $2}’); do ipcrm -s $i; done
Agora consigo iniciar o apache e meu telefone para de tocar… :)
Há a possibilidade de aumentar o número de semáfaros editando o /etc/sysctl.conf. Mas precisa ser visto com cuidado.

sábado, 14 de maio de 2011

Múltiplos loopback

Configurando diversos IPs virtuais na interface de loopback:

Redhat/CentOS/Fedora
vi /etc/sysconfig/network-scripts/ifcfg-lo:1
DEVICE=lo:1
IPADDR=127.0.0.2
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
vi /etc/sysconfig/network-scripts/ifcfg-lo:2
DEVICE=lo:2
IPADDR=127.0.0.3
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
Debian/Ubuntu
vi /etc/network/interfaces
auto lo lo:1 lo:2
iface lo inet loopback
iface lo:1 inet static
address 127.0.0.3
network 127.0.0.0
netmask 255.0.0.0
iface lo:2 inet static
address 127.1.0.1
network 127.1.0.0
netmask 255.0.0.0

sexta-feira, 13 de maio de 2011

Ajustar data e/ou hora no Linux

Dica de hoje é de como ajustar data e/ou hora no Linux.
O comando é:
# date mmddhhmmyyyy
Onde:
  • mm = Mês
  • dd = Dia
  • hh = Hora
  • mm = Minutos
  • yyyy = Ano
Exemplo:
# date 200714151982
Que seria dia 20 de Julho de 1982, 14:15 hs
Porém com uma consulta simples no man, descobrir uma maneira muito mais simples.
Segue:
# date -s “25/04/2010 13:55″ (ajusta data e hora de uma vez)
Há outras variações:
# date -s 11:00 (seta a hora para as 11:00)
# date -s Qua (vira o dia para quarta-feira as 00:00)
Enfim, há diversas maneiras de modificar data e hora no linux, porém essa me pareceu a mais simples e digna para entrar em meu troubleshooting pessoal.
Até +

VMworld On-Demand Video Library

Link onde encontramos as palestras do VMware 2018 e muito mais. https://videos.vmworld.com/searchsite/2018