Linux

Enviando e-mails pelo terminal ou por um script Shell no Centos Linux 6

Enviar e-mails é uma coisa bastante útil quando se utiliza rotinas automáticas, como backups, por exemplo. Abaixo mostro uma dica rápida de como fazer isso.

Nos testes utilizei o Centos 6.3 minimal, que é a versão mais "básica" do CentOS.

Antes de começar, instale o sendmail. Lembre de estar logado como root:

yum install sendmail #Instalando sendmail
chkconfig sendmail on #Configurando para iniciar servico quando o computador ligar

Depois é só seguir o exemplo abaixo para enviar um e-mail:

echo "CORPO DO E-MAIL" | mail -s "ASSUNTO DO E-MAIL" endereco@do.email

Troque ASSUNTO DO E-MAIL, CORPO DO E-MAIL e endereco@do.email pelas informações corretas, e pronto! É claro que esse é um exemplo bem simplificado, útil para enviar alertas ao administrador de um servidor. Se quizer mais detalhes, veja o link abaixo.

Fonte: http://www.dicas-l.com.br/arquivo/enviar_email_com_msmtp.php


Configurando máquinas com ou sem horário de verão brasileiro no Centos Linux 6, Ubuntu 10.04 ou Mint 13

Se você, assim como eu, está com problemas em relação ao horário de verão em alguma máquina com o CentOS Linux, três linhas de código resolvem seu problema.

A dica abaixo foi testada inicialmente no CentOS, mas posteriormente testei no Linux Mint 13 (Maya) e Ubuntu 10.04 (Lucid Lynx). Provavelmente deverá funcionar também nas versões mais recentes do Ubuntu, no Debian e no Fedora.

Não se esqueça de executar os comandos como root, digitando su antes de começar, se estiver usando o CentOS, ou sudo antes de cada comando se estiver usando Ubuntu ou Linux Mint. No caso do Debian e do Fedora, não me lembro se já vem com senha de root ou com sudo definido.

Caso a máquina esteja em um local do Brasil que não está no horário de verão:

#FAZENDO BACKUP DO ARQUIVO QUE DEFINE A HORA DO SISTEMA
cp /etc/localtime /etc/localtime_bkp

#COPIANDO ARQUIVO REFERENTE AO TIMEZONE DE RECIFE, SEM HORARIO DE VERAO
cp /usr/share/zoneinfo/America/Recife /etc/localtime

#ATUALIZANDO A HORA
ntpdate br.pool.ntp.org pool.ntp.org

Caso a máquina esteja em um local do Brasil que está no horário de verão:

#FAZENDO BACKUP DO ARQUIVO QUE DEFINE A HORA DO SISTEMA
cp /etc/localtime /etc/localtime_bkp

#COPIANDO ARQUIVO REFERENTE AO TIMEZONE DE SAO PAULO, COM HORARIO DE VERAO
cp /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

#ATUALIZANDO A HORA
ntpdate br.pool.ntp.org pool.ntp.org

Mais informações:


Fontes para Windows não funcionam no Centos Linux 6

Para resolver esse pequeno problema, copie todas as fontes que você quer para o diretório /usr/share/fonts

Atualize o sistema:

yum update

Instale as dependências:

yum install freetype

Se sua instalação for x86_64 (64 bits), instale o pacote rpm fontconfig-2.8.0-3.el6.x86_64.rpm:

rpm -Uvh ftp://mirror.switch.ch/pool/1/mirror/scientificlinux/6rolling/x86_64/os/Packages/fontconfig-2.8.0-3.el6.x86_64.rpm

Se sua instalação for i386 (32 bits), instale o pacote rpm fontconfig-2.8.0-3.el6.i686.rpm:

rpm -Uvh ftp://mirror.switch.ch/pool/1/mirror/scientificlinux/6rolling/i386/os/Packages/fontconfig-2.8.0-3.el6.i686.rpm

Se os endereços acima não funcionarem, você pode procurar um outro pelo site rpm.pbone.net

E por último, basta rodar o seguinte comando:

fc-cache -f -v

Caso esteja utilizando um servidor web como Tomcat ou Apache, talvez seja necessário reiniciar o serviço para que as alterações façam efeito.

Fonte: http://www.centos.org/modules/newbb/viewtopic.php?topic_id=39629&forum=55


Como descobrir no número do processo de um programa (Ex.: java) no CentOS Linux

Eventualmente precisamos saber o número do processo de um programa.

Os números de todos os processos rodando no sistema podem ser obtidos a partir do comando:

ps aux

Se você quizer sabe o número – e apenas o número – de processo de um programa específico, como por exemplo, o Java? Você pode fazer essa forma:

/sbin/pidof java

Caso você queira outras informações, além do número do precesso, pode fazer dessa forma:

ps aux | grep java

Procedimento testado no CentOS Linux 6.3


Instalando Tomcat 6 com o Wget e iniciando como serviço no Centos 6

O Tomcat 6 é uma das poucas aplicações que prefiro instalar com Wget ao invés de utilizar o yum. Mas e óbvio que isso é uma opção pessoal, e não estou dizendo que é a melhor.

A maioria das aplicações já está utilizando o Tomcat 7, o que é mais recomendado. Mas algumas aplicações só funcionam no Tomcat 6, e precisam ser migradas para o Tomcat 7.

A distribuição que estou utilizando no exemplo é CentOS 6.3, já com acesso à internet previamente configurado. A ISO dela é essa: CentOS-6.3-x86_64-minimal.iso.

Nesse artigo não vou considerar as melhores práticas de segurança. Isso é assunto para um próximo artigo.

A versão utilizada foi a 6.0.35. Caso o link que não funcione, ou queira verificar se existe uma versão mais nova, acesse: http://tomcat.apache.org/download-60.cgi

Acesse a máquina como root, e vamos ao passo-a-passo da instalação básica:

#Atualizando o sistema
yum -y update

#Instalado as dependências
yum -y install nano wget java-1.6.0-openjdk

#Indo para o diretório raiz (/)
cd /

#Baixando o Tomcat 6
wget http://apache.mirror.pop-sc.rnp.br/apache/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz

#Descompactando
tar -zxvf apache-tomcat-6.0.35.tar.gz

#Movendo para a pastar /var
mv /apache-tomcat-6.0.35 /var/tomcat6

#Dando permissão de execução na pasta bin
chmod +x /var/tomcat6/bin

#Liberando as portas no firewall (iptables)
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
/sbin/iptables -I OUTPUT -p tcp --dport 8080 -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables restart

#Iniciando o Tomcat
/var/tomcat6/bin/startup.sh

Pronto. A instalação básica já está pronta. Agora é só acessar o servidor através de um endereço como: 192.168.0.254:8080 – trocando pelo IP correto, é claro.

Se você não sabe qual o IP, basta dar um ifconfig e olhar em "inet end".

Agora vamos configurar o Tomcat 6 como serviço e iniciar automaticamente quando a máquina ligar.

Coloque o conteudo abaixo dentro do arquivo /etc/init.d/tomcat6 (nano /etc/init.d/tomcat6)

#!/bin/bash  
# description: Tomcat Start Stop Restart  
# processname: tomcat  
# chkconfig: 234 20 80  

case $1 in
   start)
    /var/tomcat6/bin/startup.sh;;
   stop)
    /var/tomcat6/bin/shutdown.sh;;
   restart)
    /var/tomcat6/bin/shutdown.sh
    /var/tomcat6/bin/startup.sh;;
   esac
   exit 0

Depois dê permissão de execução ao script:

chmod +x /etc/init.d/tomcat6

A partir de agora, você pode iniciar, parar e reiniciar o Tomcat 6 da seguinte forma:

#Iniciando o Tomcat 6
service tomcat6 start

#Parando o Tomcat 6
service tomcat6 stop

#Reiniciando o Tomcat 6
service tomcat6 restart

Para finalizar, vamos configurar o serviço para iniciar quando a máquina ligar:

chkconfig --add tomcat6
chkconfig --level 234 tomcat6 on

Mais informações: http://www.davidghedini.com/pg/entry/install_tomcat_6_on_centos


Instalando o Nagios no Linux CentOS 5 ou CentOS 6

O Nagios, como talvez você já saiba, é um software para monitoramento de servidores. Não é o objetivo desse artigo explicar o que o Nagios faz, mas sim, como instalar rapidamente no CentOS. Inicialmente o procedimento foi executado no CentOS 5, mas foi atualizado para ser instalado tanto no Centos 5, quanto no CentOS 6.

Recomendo que utilize uma nova instalação (e de preferência que teste primeiro uma máquina virtual), e com acesso à internet.

Todos os comandos abaixo devem ser executados como root. Antes de começar, adquira permissões de root e atualize o sistema:

su -l
yum update

1. Pré-requisitos

Instale os seguintes pacotes:

yum install httpd php
yum install gcc glibc glibc-common
yum install gd gd-devel

Se você estiver instalando no CentOS 6 Minimal, instale também os seguintes pacotes:

yum install perl make

2. Dados para acesso

Crie o usuário nagios e defina a senha:

/usr/sbin/useradd -m nagios
passwd nagios

Crie o grupo nagcmd para permitir comandos externos, enviados pela interface web. Os usuários nagios e apache devem fazer parte desse grupo:

/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd apache

3. Baixe o Nagios e os Plugins

Crie um diretório para armezenar os arquivos temporariamente:

mkdir ~/downloads
cd ~/downloads

Baixe os arquivos para instalação do Nagios e dos Plugins (visite http://www.nagios.org/download/ para a última versão). Esse passo-a-passo foi testado com o Nagios 3.1.1 e Nagios Plugins 1.4.11.

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz
wget http://nagios-plugins.org/download/nagios-plugins-1.4.11.tar.gz

4. Compile e instale o Nagios

cd ~/downloads
tar xzf nagios-3.2.3.tar.gz
cd nagios-3.2.3

Execute os comandos abaixo para compilar e instalar o Nagios:

./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode

5. Configure o Nagios

Um arquivo de configuração de exemplo está no diretório /usr/local/nagios/etc

Edite o arquivo /usr/local/nagios/etc/objects/contacts.cfg e altere o e-mail associado para que você possa receber alertas:

vi /usr/local/nagios/etc/objects/contacts.cfg

6. Configure a interface web

make install-webconf

Crie o usuário nagiosadmin e digite a senha duas vezes. Não esqueça essa senha, pois ela será necessária para o acesso pela interface web:

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Reinicie o Apache:

service httpd restart

7. Compile e instale os Plugins

cd ~/downloads
tar xzf nagios-plugins-1.4.11.tar.gz
cd nagios-plugins-1.4.11
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

8. Inicie o Nagios

Configurar para que o Nagios inicie automaticamente quando o sistema iniciar:

chkconfig --add nagios
chkconfig nagios on

Verificar o arquivo de configuração:

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

Se não tiver erros (Errors ou Warnings):

service nagios start

9. Modifique as configurações SELinux

O CentOS vem com o SELinux (Security Enhanced Linux) instalado e configurado no modo "Enforcing" por padrão. Isso pode resultar em um "Internal Server Error" (Erro Interno do Servidor). Para alterar isso, digite:

setenforce 0

Para tornar a alteração permanente, altere o arquivo /etc/selinux/config e deixe a linha SELINUX=disabled

vi /etc/selinux/config

Caso prefira, ao invés de desabilitar o SELinux ou modificar para o modo permissivo, você pode utilizar os comandos abaixo para rodar CGIs no modo "Enforcing" do SELinux:

chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
chcon -R -t httpd_sys_content_t /usr/local/nagios/share/

10. Configure o Firewall

Libere a porta 80 no Firewall:

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables restart 

11. Acesse pela Interface Web

Acesse o Nagios pela interface web, pelo seu navegador:

http://localhost/nagios/

Se você estiver instalando em uma máquina remota, troque "localhost" pelo IP do servidor.

Fonte: http://nagios.sourceforge.net/docs/3_0/quickstart-fedora.html

 


Exibir espaço livre em Gigabytes (GB) com o comando df no Linux

Recentemente precisei saber o espaço livre em uma máquina Linux. O comando "df" é bem útil nesse caso.

Inicialmente ele retorna o tamanho do disco em blocos de 1 Kilobyte (KB), o que pode ser um pouco confuso. Mas existe a opção -h, que faz com que ele retorne em valores "humanos", ou seja, Megabytes, Gigabytes ou a unidade mais adequada para cada tamanho:

df -h

Só que no meu caso, o buraco era um pouco mais em baixo. Eu precisava que o comando me retornasse o valor apenas em Megabyte (MB) ou apenas em Gigabyte (GB), e não o mais adequado em cada caso.

Depois de uma boa pesquisa, consegui a solução. Com a opção -B você consegue determinar o tamanho do bloco. Então já que 1 Megabyte são 1048576 bytes, e 1 Gigabyte são 1073741824 bytes. Teríamos os seguintes comandos:

Retornar espaço livre em Megabytes:

df -B 1048576

Retornar epaço livre em Gigabytes:

df -B 1073741824

Lembrando que os valores são arredondados pelo comando.


O que significa o load average, do comando top, no Linux?

Um dos recursos "emergenciais" para que um administrador de sistemas Linux consiga entender um eventual problema com uma máquina é o load average.

Na verdade, é um conjunto de três números (Ex.: load average: 0.39, 0.66, 0.85) que dão a média de utilização de CPU em intervalos de tempo. Mas como interpretar esses valores?

O primeiro valor representa a média no último 1 minuto, o segundo 5 minutos, e o terceiro 15 minutos. Se você possui um servidor com apenas um núcleo, o ideal é que o load average esteja em 1.00.

Um valor de 1.00 significa que o processador está 100% utilizado, e não tem nenhuma sobrecarga. Um valor de 1.50 significa que o processador está com 100% de uso, e 50% de sobrecarga. E assim por diante.

Se seu servidor tiver 2 processadores (núcleos), o valor ideal é 2.00. Se tiver 3 processadores, o valor ideal é 3.00. E assim por diante.

Mas e se o valor estiver sempre alto, quer dizer que temos que colocar mais processadores?

Não. Pode ser ocasionado por vários fatores. Ex.: Disco lento ou com problemas, rede lenta, pouca memória (fazendo swap) etc.

Se o valor estiver muito baixo, também não quer dizer que é melhor. Pode ser que por algum dos motivos citados a cima, o processador não esteja conseguindo utilizar todos os recursos.

Esse valores também podem ser obtidos a partir do comando uptime. O valor de carga no momento atual (sem considerar a média) pode ser obtido a partir do comando: cat /proc/loadavg

Mais informações:


Quantas máquinas virtuais (VM) é possível hospedar em uma máquina física (Host)?

Nesses últimos dias surgiu aqui na empresa a ideia de virtualizar algumas máquinas.

Como não tenho experiência nenhuma em virtualização, é natural o receio de não saber se vale a pena, ou se vai dar certo.

Com base nesse receio, resolvi fazer alguns testes em minha máquina (Um i3 com 4GB de RAM e HD SATA2 de 7200RPM) para descobrir que carga conseguiria comportar. Informações sobre o desempenho da máquina host foram obtidas a partir do comando top.

O software que utilizei para virtualizar foi o KVM e o sistema operacional o Linux Mint 13 (Maya), que é baseado no Ubuntu 12.04. As máquinas virtuais rodam CentOS.

Depois de vários testes, cheguei a seguinte conclusão: é uma boa ideia ter pelo menos 1 núcleo para cada máquina. Na verdade eu já imaginava isso, mas depois do teste, foi confirmado.

Apesar de ser possível rodar mais VMs do que os núcleos que a máquina host possui (Ex.: uma máquina com 4 núcelos rodar 5 VMs), não é recomendável, pois o conjunto como um todo provavelmente vai ficar extremamente lento (e foi isso que aconteceu nos testes).

Também é importantíssimo que você reserve para as máquinas virtuais um pouco menos que o total que a máquina física possui. Ex.: Se você possui 4GB de RAM, é interessante que sobre pelo menos 1GB para a máquina física. Se você não fizer isso, a máquina física irá começar a usar SWAP, e ficar lenta.

Caso a máquina que você pretende virtualizar necessite de muitos recursos, é interessante em alguns casos mantê-la como uma máquina física mesmo. Caso decida virtualizar, pense com carinho nos recursos que pretende destinar a ela, e tenha uma folga para o caso de precisar de mais recursos.

O que foi notado nos testes é que a lentidão se agravou mais ainda porque todas as máquinas faziam uso excessivo de um mesmo recurso: o acesso a disco. Então ter VMs que rodem softwares com características diferentes (Ex.: alguns software requerem mais processamento, outros mais memória, outros mais acesso a disco, rede etc.) pode ser uma boa ideia.

Quer acrescentar alguma coisa? Use os comentários!

Segue abaixo os dados de todos os testes:

### CONFIGURAÇÃO DA MÁQUINA HOST
PROCESSADOR: Intel i5
MEMÓRIA: 4GB DE RAM 
DISCO RIGIDO: SATA2 7200RPM

################################################################################

### SCRIPT UTILIZADO PARA O TESTE

cd /
echo $(date +%s)
tar -zcf teste.tar var
echo $(date +%s)

################################################################################

### DADOS DOS TESTES

TESTE COM 1 VM (1 NÚCLEO - 768MB DE RAM)
ANTES
LOAD AVERAGE: 0.6, 1.2, 1.2
SWAP UTILIZADO: 15MB

PICO
LOAD AVERAGE: 2.7, 1.6, 1.82
SWAP UTILIZADO: 15MB

TEMPO DE PROCESSAMENTO: 35 segundos

--------------------------------------------------------------------------------

TESTE COM 2 VMs (1 NÚCLEO - 768MB DE RAM EM CADA VM)
ANTES
LOAD AVERAGE: 0.6. 1.2. 1.7
SWAP UTILIZADO: 15MB (DESPREZÍVEL)

PICO
LOAD AVERAGE: 2.6, 1.6, 1.7
SWAP UTILIZADO: 18MB (DESPREZÍVEL)

TEMPO DE PROCESSAMENTO (MÉDIO): 94 segundos

--------------------------------------------------------------------------------

TESTE COM 3 VMs (1 NÚCLEO - 768MB DE RAM EM CADA VM)
ANTES
LOAD AVERAGE: 0.8, 1.2, 1.5
SWAP UTILIZADO: 18MB (DESPREZÍVEL)

PICO
LOAD AVERAGE: 4.5, 2.8, 2
SWAP UTILIZADO: 18MB (DESPREZÍVEL)

TEMPO DE PROCESSAMENTO (MÉDIO): 170 segundos

--------------------------------------------------------------------------------

TESTE COM 4 VMs (1 NÚCLEO - 768MB DE RAM EM CADA VM)
ANTES
LOAD AVERAGE: 0.5, 1.6, 1.8
SWAP UTILIZADO: 18MB (DESPREZÍVEL)

PICO
LOAD AVERAGE: 7.6, 4.3, 2.8
SWAP UTILIZADO: 30MB (DESPREZÍVEL)

TEMPO DE PROCESSAMENTO (MÉDIO): 388 segundos

--------------------------------------------------------------------------------

TESTE COM 5 VMs (1 NÚCLEO - 640MB DE RAM EM CADA VM)
ANTES
LOAD AVERAGE: 0.8, 2.0, 3.1
SWAP UTILIZADO: 30MB (DESPREZÍVEL)

PICO
LOAD AVERAGE: 11.7, 7.0, 4.8
SWAP UTILIZADO: 300MB

TEMPO DE PROCESSAMENTO (MÉDIO): 2041 segundos
1 Comment more...

Listar os subdiretórios (subpastas) de um diretório (pasta) no Linux

Precisei disso hoje. Pra quem também estiver precisando, vai aqui o comando (execute no Terminal):

ls -d */

  • Publicidade

  • Redes Sociais

    Facebook  Twitter
  • Estatísticas

    Page Views (desde março de 2010):

    Estatísticas detalhadas
  • Novidades por e-mail!

    Digite seu e-mail:


    Fique tranquilo. Seu e-mail não será usado para outros fins, e você poderá se descadastrar quando quizer.

    Eu!

    Tiago Passos
    Todo o conteúdo desse site esta licenciado sob a licença Creative Commons 3.0 (CC BY 3.0). Você pode copiar e modificar o conteúdo desde que cite o autor.
    iDream theme by Templates Next | Powered by WordPress