Linux

Criando usuários em lote utilizando Shell Script no Linux

Se você precisar, por exemplo, criar vários usuários para um script de configuração e instalação automática de um ambiente de trabalho (meu caso), essa dica pode ser bastante útil para você.

No exemplo abaixo, cada linha corresponde a um usuário. Você pode executar cada uma manualmente, ou colocar dentro de um script:

echo "joao:123456:1002:1002:joao:/home/joao:/bin/bash" | newusers
echo "maria:123456:1003:1003:maria:/home/maria:/bin/bash" | newusers

Cada trecho da linha significa uma coisa:

NOME DO USUÁRIO:SENHA:UID:GID:DESCRIÇÃO:DIRETÓRIO HOME:INTERPRETADOR
  • UID é o código individual do usuário. De maneira geral, você vai colocar um código diferente para cada um.
  • GID é o código individual do grupo. Sem muita firula, segue a mesma lógica do UID.

O básico é isso. 🙂

Fonte: http://www.cyberciti.biz/tips/linux-how-to-create-multiple-users-accounts-in-batch.html


Ouvir a UOL 89FM – A Rádio Rock no Linux direto pelo Terminal ou Rhythmbox sem ter que abrir o navegador

Para ouvir a "UOL 89FM – A Rádio Rock" sem ter que abrir o navegador, as URLs são as seguintes:

  • 64K (Menor qualidade, menor compromentimento de banda): http://173.192.34.69/89rock64k.aac
  • 128K (Maior qualidade, maior compromentimento de banda): http://173.192.34.69/89rock128k.aac

Se quizer ouvir pelo Rhythmbox:

  1. Abra o programa
  2. Escolha a aba "Radio" ou "Rádio"
  3. Clique em "Add" ou "Adicionar" e coloque uma das URLs acima.

Para ouvir direto pelo terminal, abra o terminal e execute uma dos comandos abaixo:

  • mplayer "http://173.192.34.69/89rock64k.aac"
  • mplayer "http://173.192.34.69/89rock128k.aac"

Instalando o Tomcat 7 com OpenJDK (Java) 7 no Centos Linux 6

O Tomcat 7 utiliza precisa do Java (JDK) para funcionar. Você pode utilizar o Java da Oracle, o OpenJDK ou outro.

A vantagem de utilizar o OpenJDK é que, além de poder ser instalado pelo repositório, e assim você poder atualizar junto com o sistema (yum update), ele é completamente livre, diferente do Java da Oracle.

No nosso teste abaixo, utilizei o Centos 6.3 Minimal, que pode ser obtido clicando aqui.

Assuma o poder de root através do comando su ou sudo su e depois siga o passo-a-passo abaixo.

Atualize o sistema:

yum -y update

Instale o OpenJDK 7:

yum install -y java-1.7.0-openjdk

Baixe o Tomcat 7. Caso o link abaixo não funcione, baixe a versão mais recente em: tomcat.apache.org

wget http://apache.tradebit.com/pub/tomcat/tomcat-7/v7.0.35/bin/apache-tomcat-7.0.35.tar.gz

Descompacte o Tomcat 7

tar -zxvf apache-tomcat-7.0.35.tar.gz

Mova para o local correto (escolher o diretório /var, mas pode ser outro)

mv apache-tomcat-7.0.35 /var/tomcat7

Libere a porta 8080 no Iptables

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

Para editar arquivos de texto, você pode utilizar o vi, vim ou outro editor de sua preferência. Os comandos básicos do vi e vim são os mesmos.

Crie o arquivo tomcat7 dentro do diretório /etc/init.d/ com o conteúdo abaixo:

#!/bin/bash 
# description: Tomcat Start Stop Restart 
# processname: tomcat6
# chkconfig: 234 20 80 
 
case $1 in
   start)
    /var/tomcat7/bin/startup.sh;;
   stop)
    /var/tomcat7/bin/shutdown.sh;;
   esac
   exit 0

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

chmod +x /etc/init.d/tomcat7

Agora você pode iniciar o Tomcat 7 como serviço:

service tomcat7 start

Se quizer parar:

service tomcat7 stop

Para que o Tomcat 7 inicie automaticamente quando ligar o computador:

chkconfig tomcat7 on

Pronto! Agora é só colocar suas aplicações web java na pasta /var/tomcat7/webapps


Utilizando o Expect para automatizar um Shell Script interativo com ou sem parâmetros no Centos Linux 6

Em alguns momentos da vida de quem administra um servidor Linux, pode ser necessário utilizar o comando Expect. O expect é basicamente um "simulador de interações humanas", ou seja, ele simula o que você digitaria a partir de uma mensagem específica.

Sendo mais claro: Quando você digita um comando como:

ftp ftp.seusite.com

Em seguida aparece algo como:

220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 2 of 50 allowed.
220-Local time is now 13:30. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 15 minutes of inactivity.
Name (ftp.seusite.com:usuario):

Nesse momento você precisa digitar seu usuário, e depois uma senha. Como fazer para automatizar essa atividade, caso você queirar executar como uma tarefa agendada no Cron?

É aí que entra o Expect!

Os exemplos abaixo foram testados no Centos Linux 6, mas nada impede que funcione em outras distribuições. Lembre-se que o Expect não é uma forma segura de passar senhas, pois as mesmas terão que ser armazenadas em texto plano. Entenda os scripts abaixo apenas como exemplo.

Primeiro, vamos instalar o expect (caso já não tenha instalado):

yum -y install expect

Depois vamos criar um script como no exemplo abaixo, lembrando de substituir ftp.seusite.com pelo seu servidor de FTP, usuario pelo seu usuário e senha pela sua senha:

#!/usr/bin/expect

spawn ftp ftp.seusite.com

set timeout -1

expect "Name"
send -- "usuario\r"

expect "Password"
send -- "senha\r"

expect "Using binary mode to transfer files."
send -- "ls\r"

expect eof

Executando o exemplo acima (lembre de dar um chmod +x no arquivo!), logamos na conta de FTP e listamos (ls) os arquivos da conta.

Se deu tudo certo, serão exibidos na tela os arquivos da sua conta de FTP. Agora vamos a um exemplo com a utilização de parâmetros.

A utilidade disso é que você pode criar um script genérico para utilizar sem precisar alterar o arquivo ou criar um novo para cada conta que você tenha. Vamos ao exemplo:

#!/usr/bin/expect

set usuario [lrange $argv 0 0]
set senha [lrange $argv 1 1]

spawn ftp ftp.seusite.com

set timeout -1

expect "Name"
send -- "$usuario\r"

expect "Password"
send -- "$senha\r"

expect "Using binary mode to transfer files."
send -- "ls\r"

expect eof

Entre na pasta onde o script está salvo, e chame da seguinte forma:

./nome_do_script usuario senha

Funcionou? Não funcionou? Tem dúvidas? Use os comentários!

Fonte: http://bash.cyberciti.biz/security/expect-ssh-login-script/


Como enviar um e-mail para testar um servidor SMTP pela linha de comando no Linux

Algumas vezes é necessário testar um servidor de SMTP, e se isso só puder ser feito a partir de um servidor Linux específico, pode ser feito utilizando o comando "telnet".

Abaixo vou mostrar um passo-a-passo de como enviar uma mensagem utilizando um servidor de SMTP simples, sem autenticação, que utiliza a porta 25.

A configuração de cada servidor pode variar. Alguns funcionam em portas diferentes (465), com criptografia (SSL), com autenticação (login e senha), e por aí vai.

No exemplo, o IP do servidor de SMTP é 192.168.0.1. Troque pelo endereço correto (seja um IP ou um domínio).

Antes de mais nada, verifique se existe alguma regra de firewall bloqueando a comunicação entre as duas máquinas:

nmap 192.168.0.1 -p25

Se a porta estiver aberta, deverá aparecer algo como:

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2013-01-02 16:05 BRT
Interesting ports on xxx.xxx.xxx.xxx (192.168.0.1):
PORT   STATE SERVICE
25/tcp open  smtp

Considerando que a porta está aberta, digite:

telnet 192.168.0.1 25

Vai aparecer algo como:

Trying 192.168.0.1...
Connected to xxx.xxx.xxx.xxx (192.168.0.1).
Escape character is '^]'.
220 xxx.xxx.xxx.xxx ESMTP

Então inicie o procedimento:

HELO localmailer

Irá retornar algo assim:

250 xxx.xxx.xxx.xxx

Aí você pode informar o "From", ou seja, de quem o e-mail está vindo:

MAIL FROM:seuemail@teste.com

 

Se estiver tudo certo, uma mensagem como essa será exibida:

250 Ok

Depois digite o e-mail o "To", ou seja, o e-mail de destino. Troque seuemail@teste.com pelo seu e-mail

RCPT TO:seuemail@teste.com

 

Será retornada uma mensagem como essa:

250 Ok

Digite a linha abaixo para começar a escrever a mensagem:

DATA

Será exibida uma mensagem como essa:

354 End data with .

Aí é só digitar alguma frase, quebrar uma linha, e colocar um ponto para que o procedimento seja finalizado:

TESTE DE ENVIO DE E-MAIL
.

Se estiver tudo OK, irá aparecer algo como isso:

250 Ok: queued as 987C7EAAE5

Veja se a mensagem chegou na sua caixa de e-mail (olhe na pasta Spam também). Lembre-se que pode demorar alguns minutos para que a mensagem chegue. Depois é só sair:

QUIT

E a mensagem final do servidor:

221 Bye
Connection closed by foreign host.

Mais informações: http://www.revindex.com/Default.aspx?tabid=65&EntryID=22


Instalando o VMWare-Tools no Centos ou Red Hat Linux pelo Repositório (Yum)

Quando você utiliza uma máquina virtualizada com o VMWare, é uma boa idéia instalar o VMWare-Tools, pois aumenta a performance e dá mais controle e segurança para o gerenciamento da máquina.

Vou mostrar aqui como instalar o VMWare Tools no Centos e Red Hat, nas versões 5 e 6.

Adicione as chaves GPG do VMWare:

rpm --import http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-DSA-KEY.pub
rpm --import http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub

Se for CentOS 5 ou Red Hat 5, adicione ao arquivo /etc/yum.repos.d/vmware-tools.repo o seguinte:

[vmware-tools]
	name=VMware Tools
	baseurl=http://packages.vmware.com/tools/esx/latest/rhel5/$basearch
	enabled=1
	gpgcheck=1

Se for CentOS 6 ou Red Hat 6, adicione ao arquivo /etc/yum.repos.d/vmware-tools.repo o seguinte:

[vmware-tools]
	name=VMware Tools
	baseurl=http://packages.vmware.com/tools/esx/latest/rhel6/$basearch
	enabled=1
	gpgcheck=1

Depois é só instalar o VMWare Tools:

yum install vmware-tools-esx-nox

Mais informações:


Como matar (kill) um processo pelo nome do programa no Linux

Hoje precisei criar um script no Linux que matasse um processo pelo nome, e não pelo número. Resolvi compartilhar aqui no blog:

#!/bin/bash
# Autor: Tiago Passos

SHELL=/bin/sh
PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin

#SCRIPT QUE MATA (PELO NOME) O PROGRAMA ESPECIFICADO

#INFORME O NOME (OU TRECHO DO NOME) DO PROGRAMA QUE VOCE QUER MATAR
programa=nano

#NUMERO DO PROCESSO DO PROGRAMA
processo=$(ps -ef | grep $programa | grep -v grep | awk '{print $2}')

kill $processo >> /var/log/killpelonome

Também é possível usar o pgrep nessa lógica, e ficaria até mais limpo, mas pro meu caso específico não deu pra usar. Isso porque estava querendo matar (inicialmente) um programa executado pelo java, e precisaria idenficar esse programa pelos parâmetros que estavam sendo passados.

O pgrep (até onde sei) não identifica os parâmetros, mas apenas o nome, então não funcionaria em todas as situações.


Perdeu acesso ao roteador Mikrotik? Aprenda como resetar (restaurar) configurações de fábrica

Resetar um roteador geralmente é uma tarefa bem simples: se você ainda tiver acesso ao setup do roteador, basta ir em "System" e depois "Reset Configuration". Se você tiver perdido acesso ao roteador, encontre um botão (geralmente próximo à entrada de energia) com o texto "RESET" ou "RES".

Se o botão for daqueles que são embutidos, como na imagem abaixo:

Resetar Mikrotik - Botão

Basta pegar um clip de papel, desligar o roteador da tomada, e ligar ele novamente com o botão pressionado. Assim que as luzes começarem a piscar, solte o botão e pronto. Seu roteador está com as configurações de fábrica restauradas.

Segundo o wiki do fabricante, se você continuar com o botão pressionado mesmo depois de as luzes pararem de piscar, ele irá começar um netinstall (instalação via internet) do roteador. Mas isso eu não testei. O problema que tive foi o seguinte:

E se não tiver botão de reset!?

Sofri um pouquinho, mas consegui achar a resposta.

Você deverá abrir o case (gabinete) do roteador, e ao invés de apertar um botão de reset quando o roteador ligar, segurar uma chave de fenda em uma parte da plaquinha, como exibido na imagem abaixo:

Resetar roteador Mikrotik com chave de fenda

Agora basta acessar o roteador novamente

Conecte um cabo de rede na porta ether1 do Mikrotik e na placa de rede da sua máquina, e acesse o IP: 192.168.88.1 (Usuário: admin, sem senha).

Lembre de colocar um IP fixo na sua configuração de rede. Pode ser assim:

IP – 192.168.88.2
Máscara – 255.255.255.0
Gateway – 192.168.88.1
DNS primário – 208.67.222.222
DNS secundário – 208.67.220.220

Em algum lugar, que não me lembro qual, falava que deveria plugar o cabo de rede na ether3 do roteador. Foi o que funcionou comigo. Se não funcionar na ether1, vale a pena fazer um teste. 🙂

Mais informações:


SSH muito lento (de uma máquina Linux para outra). Como resolver?

Estava com esse problema em alguns servidores na minha rede local: quando tentava logar em alguma máquina, demorava muito pra pedir a senha. Encontrei a resposta:

Se você utilizar o parâmetro -v no ssh, você poderá descobrir o que é que está acontecendo, como no exemplo:

ssh -v tiago@192.168.0.1

No meu caso, a autenticação começava a ficar lenta quando chegava aqui:

debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Cannot determine realm for numeric host address

Aí pra resolver o problema, basta desabilitar o parâmetro GSSAPIAuthentication, assim:

ssh -o GSSAPIAuthentication=no tiago@192.168.0.1

Se você preferir, pode deixar a mudança permentente, alterando o arquivo /etc/ssh/ssh_config (da máquina que você está utilizando para acessar o servidor, e não do servidor!) e descomentando (remover o #) a linha:

GSSAPIAuthentication no

Dessa forma você não vai precisar passar o parâmetro toda vez que for utilizar o SSH.

Fonte: https://forums.oracle.com/forums/thread.jspa?threadID=2393548


Monitorando servidores remotos com o Nagios NRPE no Linux Centos 6

Há algum tempo atrás, escrevi um artigo sobre como instalar o Nagios em um servidor Linux Centos 5, e posteriormente atualizei para que funcionasse também no Centos 6 Minimal.

No artigo que escrevi, mostro como o Nagios pode monitorar a própria máquina, e agora irei mostrar como monitorar outras máquinas com o NRPE (Nagios Remote Plugin Executor).

Se você nunca instalou o Nagios, é importante que instale seguindo as instruções do artigo.

Para o exemplo, irei considerar duas máquinas:

  • Servidor – Servidor de monitoramento, com IP: 192.168.0.247
  • Cliente – Cliente que será monitorado, com IP: 192.168.0.248

O procedimento deve ser executado em uma máquina com instalação limpa do Centos 6 Minimal para que funcione corretamente. É importante que antes de testar em uma máquina de produção, você simule em máquinas virtuais.

As duas máquinas deverão estar com acesso à internet e com a rede local configurada.

Atenção! O Servidor já deverá estar como Nagios instalado. Se você ainda não fez isso, siga as instruções do artigo citado acima!

Execute os passos abaixo para instalar o NRPE no cliente (que será monitorado).

Obs.: Se os códigos abaixo aparecerem sem o destaque, acesse o link direto do artigo aqui.

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

yum install openssl-devel xinetd make gcc perl

2. Dados para acesso

useradd nagios
passwd nagios

3. Baixe os plugins e o NRPE

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

mkdir ~/downloads
cd ~/downloads
wget http://ufpr.dl.sourceforge.net/project/nagiosplug/nagiosplug/1.4.11/nagios-plugins-1.4.11.tar.gz
wget http://ufpr.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.12/nrpe-2.12.tar.gz

4. Instale os plugins

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
chown nagios.nagios /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios/libexec

5. Instale o NRPE

cd ~/downloads
tar xzf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure 
make all
make install-plugin
make install-daemon
make install-daemon-config
make install-xinetd

6. Configurações adicionais do NRPE

Adicione o serviço do NRPE no arquivo /etc/services. Por algum motivo que desconheço, quando copio e colo a linha a ser adicionada, eu tenho um problema (mais adiante) ao configurar a máquina servidor para se conectar com o cliente. Retorna uma mensagem como essa: CHECK_NRPE: Error – Could not complete SSL handshake. Então recomendo que você não copie e cole a linha abaixo, e sim digite ela no arquivo /etc/services (vi /etc/services):

nrpe      5666/tcp     #NRPE

Adicione o xinetd para iniciar quando a máquina ligar, e reinicie o xinetd

chkconfig xinetd on
service xinetd restart

Verifique se o NRPE está ouvindo na porta 5666

netstat -at |grep nrpe

A saída deve ser algo como:

tcp    0    0 *:nrpe    *.*    LISTEN

Verifique se o NRPE está funcionando:

/usr/local/nagios/libexec/check_nrpe -H localhost

A saída deve ser algo como:

NRPE v2.12

Agora que verificamos que o NRPE está funcionando, abra o arquivo /etc/xinetd.d/nrpe e na linha "only_from", troque o IP 127.0.0.1 pelo IP do servidor de monitoramento. No nosso caso:

only_from       = 192.168.0.247

Abra a porta 5666 no Firewall:

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

Agora execute os passos abaixo para instalar o NRPE no servidor (máquina que irá monitorar as outras)

7. Instale os pré-requisitos

yum -y install openssl-devel

8. Baixe o NRPE

Baixe os arquivos para instalação do NRPE (visite http://www.nagios.org/download/ para a última versão). Esse passo-a-passo foi testado com o NRPE 2.12.

cd ~/downloads
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz

9. Instale o NRPE

tar xzf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure 
make all
make install-plugin

10. Testando a conexão com o cliente. Lembre-se de trocar pelo IP correto

/usr/local/nagios/libexec/check_nrpe -H 192.168.0.248

Se você receber o erro CHECK_NRPE: Error – Could not complete SSL handshake, veja novamente o passo 6.

Deverá retornar algo como:

NRPE v2.12

11. Crie a definição de comando do NRPE

Adicione ao arquivo /usr/local/nagios/etc/objects/commands.cfg (vi /usr/local/nagios/etc/objects/commands.cfg):

###############################################################################
# NRPE CHECK COMMAND
#
# Command to use NRPE to check remote host systems
###############################################################################

define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }

12. Crie um template

Adicione ao arquivo /usr/local/nagios/etc/objects/linux-box-remote.cfg (vi /usr/local/nagios/etc/objects/linux-box-remote.cfg):

define host{
          name                  linux-box-remote 		; Name of this template
          use                   generic-host			; Inherit default values
          check_period          24x7
          check_interval        5
          retry_interval        1
          max_check_attempts    10
          check_command         check-host-alive
          notification_period   24x7
          notification_interval 30
          notification_options  d,r
          contact_groups        admins
          register              0 						; DONT REGISTER THIS - ITS A TEMPLATE	
          }

define host{
          use       linux-box-remote; 
          host_name cliente			; Nome do servidor (curto)
          alias     cliente			; Nome do servidor (pode ser maior)
          address   192.168.0.248   ; IP do cliente
          }

define service{
          use                 generic-service
          host_name           cliente
          service_description CPU Load
          check_command       check_nrpe!check_load
          }
define service{
          use                 generic-service
          host_name           cliente
          service_description Current Users
          check_command       check_nrpe!check_users
          }
define service{
          use                 generic-service
          host_name           cliente
          service_description /dev/hda1 Free Space
          check_command       check_nrpe!check_hda1
          }
define service{
          use                 generic-service
          host_name           cliente
          service_description Total Processes
          check_command       check_nrpe!check_total_procs
          }
define service{
          use                 generic-service
          host_name           cliente
          service_description Zombie Processes
          check_command       check_nrpe!check_zombie_procs
          }

13. Ative o template linux-box-remote.cfg.

Abra o arquivo /usr/local/nagios/etc/nagios.cfg (vi /usr/local/nagios/etc/nagios.cfg) e adicione:

#Definicoes para monitoramento de máquina linux remota
cfg_file=/usr/local/nagios/etc/objects/linux-box-remote.cfg

14. Verifique se as configurações estão corretas

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

Deverá retornar algo como:

Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

15. Reinicie os serviços e acesse o nagios

service httpd restart
service nagios restart

Agora é só acessar o servidor: 192.168.0.247/nagios e logar com o usuário nagiosadmin (e a senha que você definiu

Pronto! Agora você já pode monitorar suas máquinas remotas com o Nagios! Dúvidas? Use os comentários!

Fonte: http://www.kernelhardware.org/nagios-nrpe-to-monitor-remote-linux-server/


  • 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