Remover arquivos de nome igual em varias pastas

As vezes, precisamos remover diversos arquivos de nome igual ou semelhante em diversas pastas em determinado diretorio. E para realizar o procedimento o comando é bem simples, basta combinar o find com rm.

find ./* -iname ‘*Nome_do_arquivo*’ -exec rm -rf -v {}  \;

Onde o find vai procurar tudo daquele diretório atual “para baixo”, após procurar basta utilizar  -exec seguido do procedimento desejado que no caso é remoção (rm -rf).

Alterar cor shell ssh

Ao logar no SSH de servidores com versão de CENTOS, por padrão temos letras azuis em fundo preto no qual dificulta a visualização do conteúdo. Para realizarmos a alteração basta seguir os passos:

1) Edite /etc/DIR_COLORS coom ROOT
2) Localzie a linha
DIR 01;34 # directory
e mude para
DIR 01;33 # directory
3) Salve o arquivo
4) Faça o mesmo passo para /etc/DIR_COLORS.xterm (caso tenha o arquivo)
5) Faça um novo login 

***Testado nas versões 5.x.x 7.x CentOS

Redirecionamento de paginas

Abaixo vamos vamos abordar alguns metodos para redirecionamento de paginas:

Redirect com PHP

Você pode utilizar o código abaixo:
<? header(“location: http://www.seudominio.com.br/”); ?>

Redirect com HTML
Utilize o código abaixo:

<meta http-equiv=”refresh” content=”0;url=http://www.seudominio.com.br/pagina.htm”>
Onde 0 é o número de segundos antes de abrir a url.

Redirect com ASP
Use o código abaixo:

<% Response.Redirect “http://www.dominio.com.br” %>

 

Removendo arquivos linux com exceção

Muitas das vezes precisamos realizar remoção de arquivos em determinados diretório, porém  queremos remover tudo exceto os arquivos com extensão x y ou z.

Geralmente ficamos perdidos ou tentamos fazer scripts mirabolantes para resolver algo que é relativamente simples, com  um simples comando rm, podemos resolver nosso problema. Abaixo irei dar um simples exemplo:

Antes de mais nada precisamos habilitar a função extglob, no qual ira nos permitir utilizar o rm de uma forma “diferenciada”.

  1. Logue no SSH e execute shopt -s extglob
    1
  2. Verifique se a função foi realmente ativada shopt extglob:
    screenshot_1
  3. Apagar todos os arquivos do diretório local EXCETO o arquivo   arquivo1.doc rm -rf !(arquivoarquivo1.doc):
    screenshot_7O caráter de “!” funciona como negação no comando  utilizado, sendo assim ira remover tudo exceto  o que estiver em parenteses. Mais um exemplo, no qual ira informar  que queremos exceção para mais de um arquivo rm -rf !(arquivoarquivo1.doc|arquivoarquivo2.doc):screenshot_6
  4. Você pode definir por extenção ou qualquer trecho, como por exemplo todos os arquivos com prefixo teste, ou um prefixo .zip, .php, .tar.gz, assim como vamos ver no exemplo abaixo     
    rm -rf !(*.zip|*.php)
    :
    screenshot_5

Como iniciar a instalação do CPanel no Servidor Linux?

Você pode instalar o cPanel em seu servidor dedicado linux, sem maiores complicações. cPanel é um painel de controle para hosting, comercial e bem utilizado. Com ele, administra-se serviços como:

  • Servidor de email exim;
  • Servidor de páginas eletrônicas;
  • Servidor de banco de dados mysql ou postgresql;
  • Servidor de DNS bind;
  • Dentre outros.

O gerenciamento do servidor é através de uma completa e funcional interface web, o que torna a administração dos recursos, muito mais fáceis. Vamos então, ao processo de instalação do CPanel.

Continue lendo

Verificando a fila de emails no Exim

Para verificar o conteúdo da fila de emails no exim, através do SSH, faça:

Exibir o número total de mensagens da fila

exim -bpc

Lista completa de mensagens

exim -bp

Para verificar o conteúdo de um email, use:

Exibe o log da mensagem

exim -Mvl <message ID>

Exibe o corpo da mensagem

exim -Mvb <message ID>

Exibe o cabeçalho da mensagem

exim -Mvh <message ID>

Configurando wildcard em servidor com cPanel e Apache

O tutorial abaixo é um guest post do nosso leitor: Rafael Viana. Visitem seu site: RafaelFPViana.com

Este tutorial serve para ajudar como configurar um domínio para funcionar da seguinte forma:

http://bobmarley.letrasdemusicas.com.br

http://blew.nirvana.letrasdemusicas.com.br

Ou seja, faz com que subdomínios sejam configurados para cair na mesma página do site principal, ao invés de serem configurados para utilizarem uma pasta na conta do cliente.

O que é necessário

  • Domínio em questão precisa estar registrado e com os dns apontando para o servidor
  • Acesso ao WHM como root
  • WHM com o ConfigServer Explorer instalado ou acesso SSH como root
  • Saber a versão do Apache
  • Saber o nome de usuário de FTP/[cPanel] para o domínio a ser instalado o wildcard

Configurando os DNS

  • Acesse o WHM e vá em Main >> DNS Functions >> Edit DNS Zone
  • Procure o domínio em questão na listagem e clique no botão Edit
  • Na primeira linha do formulário em Add New Entries Below this Line adicione um * (asterístico ) no primeiro campo
  • No terceiro campo onde está com a palavra Select, selecione a opção CNAME
  • Aparecerá um novo campo, coloque o endereço do site em que estamos instalando o wildcard sem o www e com um . (ponto), geralmente este campo é idêntico ao primeiro campo no início do formulário de edição de zona de dns, portanto poderá copiar e colar sem problemas.
  • Clique em Save
  • Pronto, dns configurado, estarei utilizando o domínio dominio.com.br como teste, portanto a minha linha ficou mais ou menos assim:
* 14400 IN CNAME dominio.com.br.

Configurando o Apache

  • Primeiramente cerfique-se que o ConfigServer Explorer está instalado, sem ele você terá que fazer por SSH
  • Se o ConfigServer Explorer estiver instalado, no campo Change Directory… digite /usr/local/apache/conf/

Diretórios

  • Caso o diretório userdata não exista em /usr/local/apache/conf/ iremos criar
  • Caso o diretório std não exista em /usr/local/apache/conf/userdata/ iremos criar
  • Agora iremos criar um diretório de acordo com a sua vesão do apache, ou seja, se o seu apache é versão 2.0.63 iremos crair o diretório 2, caso a versão seja 1.3.41 iremos crair o diretório 1, isso dentro de /usr/local/apache/conf/userdata/std/, para o exemplo irei criar o diretório 1.
  • Agora crie um diretório com o nome de usuário dentro /usr/local/apache/conf/userdata/std/1/, irei criar o diretório usuario como exemplo

Arquivo

Agora que estamos dentro do diretório do usuário /usr/local/apache/conf/userdata/std/1/usuario/ crie um arquivo chamado ServerAlias.conf

Dentro deste arquivo coloque o seguinte:

ServerAlias *.dominio.com.br

Salve o arquivo

Aplicando as configurações

Agora digite o seguinte comando, poderá ser feito por SSH ou até mesmo no ConfigServer Explorer no último campo do formulário, o campo Command:

perl /scripts/ensure_vhost_includes --user=usuario

Note que em –user= eu digitei usuario, este é o meu usuário de exemplo, troque para o nome de usuário que você está configurando o wildcard.

Finalizando

Agora basta reiniciar o Apache e aguardar a propagação dos DNS.

Identificando consultas lentas no MySQL (slow-queries)

O MySQL pode geralmente causar grandes problemas num servidor quando existem consultas que abusam do sistema.

Neste artigo ensinaremos a você como identificar corretamente as consultas (queries) que estão causando problemas para o servidor.

O servidor MySQL pode escrever um log contendo as consultas que demoram mais que “X” segundos. Porém, por padrão este recurso vem desabilitado.

Vamos ver como habilitar o recurso:

1. Log no seu servidor como root
2. Abra o arquivo my.cnf:

pico /etc/my.cnf

3. Dentro da seção [mysqld] adicione as seguintes linhas

log-slow-queries = /var/log/mysql-slow.log
long_query_time = 3

Isto é apenas um exemplo. Você pode usar qualquer nome de arquivo para o log. Você também pode estipular o tempo máximo de uma consulta. A partir deste tempo,a consulta será gravada. No nosso exemplo, colocamos 3 segundos.

4. Após as alterações, salve o arquivo.

No pico, faça: CTRL+X e YES

5. Agora nós temos que criar o arquivo de log.

touch /var/log/mysql-slow.log

6. Agora vamos mudar o dono do arquivo, para que o mysql tenha permissão de escrever nele.

chown mysql.root /var/log/mysql-slow.log

7. E então, reiniciamos o mysql

service mysql restart

O serviço deverá reiniciar corretamente. Caso não reinicie, veja se você fez tudo corretamente no arquivo my.cnf.

8. Aguarde alguns minutos e então examine o conteúdo do arquivo de log que foi criado.

Um exemplo de como fazer isto:

cat /var/log/mysql-slow.log
tail /var/log/mysql-slow.log
tail -50 /var/log/mysql-slow.log

Depois de identifica a consulta, otimize ou elimine ela.

Depois que identificar o problema, é recomendado que você remova a entrada referente a slow-queries no my.cnf (ou comente ela). Isto é importante, pois o uso de slow-queries degrada a performance do mysql. Você pode comentar o arquivo my.cnf:

#log-slow-queries = /var/log/mysql-slow.log
#long_query_time = 3

Não se esqueça de reiniciar o MySQL em seguida.

service mysql restart

Lançamento cpanel-fácil 0.0.1

Lançado oficialmente hoje o script cpanel fácil 0.0.1.

A ideia do script é automatizar as rotinas de instação e configuração de servidores linux automatizados para WHM/cpanel. Nesta primeira versão de inauguração, o script executa automaticamente as seguintes rotinas:

1. Restringe o acesso a ssh para utilizar somente o protocolo 2
2. Desabilita o uso de register_globals no php.ini
3. Desabilita dl_function no php.ini
4. Desabilita funções consideradas perigosas no php.ini
5. Altera o limite máximo de upload em php
6. Restringe o acesso a diversos arquivos de sistema, melhorando a configuração
7. Instala e configura o APF Firewall

Acesse a página do script, em:

http://www.servidorgerenciado.com.br/cpanel-facil/

Usando o comando screen

Antes de começar, eu vou informar a vocês o que podemos fazer usando o comando screen.

Como um linux sysadmin, é muito comum você ter a necessidade de rodar vários comandos de uma vez. Você provavelmente irá abrir várias sessões do ssh para isto, porém, existe uma maneira melhor, mais segura e recomendada.

Outra necessidade que frequentemente irá surgir, é rodar um comando ou script que levará horas para terminar, como por exemplo um rsync. Isto requer que vocÊ mantenha a conexão aberta no ssh, pois se você fechar, o script ou comando também se encerrará, o que pode ser um problema se você tiver a sua conexão a internet interrompida.

Face a estes problemas, podemos começar a apresentar a vocês o comando screen.

Screen – torna possível rodar vários pseudo terminais, manipular e salvar suas entradas e saídas no screen, além de copiar e colar entre as janelas.

Vou mostar como rodar um comando que leva horas, dentro de um screen.

Vamos primeiramente instalar o screen, usando yun, apt-get, ou algum gerenciador de pacotes que você tiver disponível.  Em nosso exemplo usaremos o yum.

yum install screen

Agora digite:

screen

Este comando iniciará uma nova janela dentro do screen para você. Você tem também a opção de iniciar o comando dando um nome a janela (parametro -S). Exemplo:

screen -S janela1

Neste caso, a janela se chamará “janela1”.

O screen funciona como qualquer outra sessão dentro do ssh. Você pode digitar qualquer comando agora, que irá rodar normalmente.

Se você quiser sair da sessão do screen, deixando-a ativa, e manter o comando que estava sendo executado, faça:

Ctrl-a d (pressione control +a, solte, e em seguida aperte d)

Então, quando você quiser voltar a janela screen, digite:

screen -r

Outras opções que você tem quando está dentro do screen são:

1. Para criar uma nova sessão:

Ctrl-a c

2. Para alterar entre as sessões:

Ctrl-a n

Existem outras possiblidades de uso. Para maiores informações e ajuda, você pode utilizar no seu terminal:

man screen

Como instalar PRM (Process Resource Monitor)

O que é e como funciona PRM (Process Resource Monitor) ?

Em poucas palavras:

PRM monitora a tabela de processos ativos. Caso algum destes processos ultrapasse o recurso definido (memória, cpu ou numero de processos), um e-mail é enviado ao administrador e como opção o processo é interrompido.”Killado”.

As configurações do prm no arquivo “conf.prm” irão determinar algumas ações do PRM. Na pasta rules alguns processo são tratados separadamente com definições particulares aos mesmos.

O PRM (Process Resource Monitor) é  sem duvida alguma muito util para evitar alguns tipos de abusos e principalmente sobrecargas desnecessárias ao servidor.
Vamos a instalação:

No SSH root, faça o download do PRM:

 wget http://www.rfxnetworks.com/downloads/prm-current.tar.gz

Descompacte o arquivo:

 tar xvfz prm-current.tar.gz

Acesse a pasta e instale:

cd prm-0.5/
./install.sh

Neste ponto o PRM já estará instalado, agora vamos configurá-lo:

Edite o arquivo de configuração:

pico /usr/local/prm/conf.prm

Na opção:

# enable kernel logging [0=disabled,1=enabled]
USE_KLOG="0"

Mude para:

# enable kernel logging [0=disabled,1=enabled]
USE_KLOG="1"

Na opção:

# enable user e-mail alerts [0=disabled,1=enabled]
USR_ALERT="0"

Mude para:

# enable user e-mail alerts [0=disabled,1=enabled]
USR_ALERT="1"

**A função USR_ALERT “1” irá habilitar o envio de e-mails de alerta ao Administrador caso algum processo ultrapasse o recurso definido.

Em:

# e-mail address for alerts
USR_ADDR="root"

Mude para:

# e-mail address for alerts
USR_ADDR="seuemail@dominio.com.br"

Na maioria das situações não será necessário fazer nenhuma outra modificação, abaixo estarei apenas fazendo uma descrição das funções (apesar de algumas serem bastante óbvias)

# path to user e-mail message file
USR_MSG="$INSPATH/usr.msg"

Este é o caminho do template para o “corpo do e-mail” de alerta que será enviado ao administrador.

# subject of e-mail alerts
SUBJ="Process status report from $HOSTNAME"

Este será o assunto do e-mail de alerta enviado ao administrador.
(A variável $HOSTNAME irá retornar o hostname de seu servidor.)

# check 5,10,15 minute load average. [1,2,3 respective of 5,10,15]
LC="1"

Este será o tempo que o PRM irá verificar o numero de processos ativos. Sendo:
1 = 5 minutos
2 = 10 minutos
3 = 15 minutos

# min load level required to run (decimal values unsupported)
MIN_LOAD="1"

Esta opção define o load mínimo para que o PRM seja ativado.

# seconds to wait before rechecking a flaged pid (pid's noted resource
# intensive but not yet killed).
WAIT="12"

Segundos para aguardar uma nova “rechecagem” de pids dos processos ativos.

# counter limit that a process must reach prior to kill. the counter value
# increases for a process flaged resource intensive on rechecks.
KILL_TRIG="3"

Limite que um processo precisa ser executado para que as regras do PRM sejam checadas.

# argument to pass onto kill commands
KARG="9"

Qual o argumento para o comando kill (padrão e recomendado 9).

# Max CPU usage readout for a process - % of all cpu resources (decimal values unsupported)
MAXCPU="40"

Máximo de CPU (em percentual) para iniciar a leitura das regras

# Max MEM usage readout for a process - % of system total memory (decimal values unsupported)
MAXMEM="20"

Máximo de Memoria (em percentual) para iniciar a leitura das regras

# Max processes for a given command - this is not max processes for user but rather the executable
MAXPS="25"

Máximo de processos para iniciar a leitura das regras.

Para finalizar , salve (ctrl+x y ) e saia do pico.

Germano P Ferreira
Administrador Linux

Como saber o numero de conexões ao servidor por ip

Esta é uma dica muito simples, porém acredito ser muito útil quando desejamos saber o numero de conexões ativas no servidor e assim killar possíveis abusos.

Digite no prompt de comando :

netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

Você verá uma lista como esta:

2 xx.xx.xxx.xxx.1
5 xx.xx.xxx.xxx.2
8 xx.xx.xxx.xxx.3
12 xx.xx.xxx.xxx.4
16 xx.xx.xxx.xxx.6
...

Sendo:
xxx. será o ip cliente e o numero antes do ip é referente ao numero de conexões em seu servidor.

Germano P Ferreira
Administrador Linux

Como criar um alerta por e-mail ao acessar o SSH como root ?

Abaixo vamos criar um alerta que será enviado a sua conta de e-mail toda vez que alguém efetuar login no SSH como root em seu servidor.

Efetue login no SSH de seu servidor como root.

Edite o arquivo .bashrc

pico /root/.bashrc

Após a ultima linha cole o texto abaixo modicando SeuServidor para Nome do Seu Servidor , e voce@seudominio
pelo seu e-mail :

echo 'ALERT - Acesso ao Root (SeuServidor) em:' `date` `who` | mail -s "Alerta: Acesso ao root por `who | cut -d"(" -f2 | cut -d")" -f1`" voce@seudominio

Salve e saia do pico( ctrl+x e y).

Feito. Quando alguém efetuar login em seu ssh como root, você receberá um e-mail informando o nome do servidor, IP de quem efetuou o login, hora e data.

Muito simples e sem duvida bastante util 🙂

Germano Pires Ferreira
Administrador Linux