TIAGO.DIAS.ETI.BR GNU/Linux, BSD, Unix-Like & PHP

31Jul/10Off

Como calcular UMASK

Para calcular o UMASK precisamos utilizar 2 regras básicas:

1. Para calcular umask de diretórios:

Basta subtrair 7 menos o valor da umask

Exemplo:

777 (regra) - 333 (umask) = 444 (permissão)

Tagged as: Continue reading
9Aug/09Off

Solaris: How to Reboot / Shutdown

No Solaris temos vários comandos para fazer um reboot ou shutdown.

Para Reboot:

Não é um comando interativo e pode ser interrompido com ^C.

Filed under: Solaris Continue reading
1Jun/09Off

SSH timeout for connection idle

Recentimente percebi que em alguns servidores que eu estava logando quando uma conexão ssh ficava aberta por mais de 5 minutos sem que eu tomasse nenhuma ação, a mesma se encerrava automaticamente por inatividade.

Para solucionar este problema, encontrei duas opções:

1. Configuração realizada no servidor SSH

30May/09Off

SSH Tunnel Proxy

O conceito é praticamento o mesmo do X11 Forward, com esta opcão do SSH direcionamos uma porta do servidor remoto para qualquer porta local.

Exemplo, para direcionar a porta 25 do servidor para a porta 3000 local mantendo a conexão por 60 segundos:

30May/09Off

SSH: X11 Forwarding

Com esta opção no SSH podemos redicionar conexão ao X Window no servidor para o servidor X local.

Ao realizar a conexão no servidor X Remoto a conexão é direcionada por default ao DISPLAY :10

Para isto realizamos a seguinte configuração nos arquivos abaixo:

30May/09Off

SSH sem senha

Primeiro precisamos gerar um par de chaves públicas/privadas para autenticar com chaves RSA2 ou DSA.

RSA:
ssh-keygen -t rsa
DSA:
ssh-keygen -t dsa

As chaves são gerados no $HOME do usuário que você esta utilizando.

Tagged as: Continue reading
16Jan/09Off

Solução para mensagem “Terminal too wide”

No Solaris algumas vezes encontramos este erro quando utilizamos o editor VI:

Terminal too wide

Utilizamos o comando abaixo:

# /usr/openwin/bin/resize

Se mesmo assim não funcionar, para solucionar este problema precisamos incrementar o número de colunas utilizando o comando abaixo:

# stty columns 120

OBS.:

Uma melhor solução é instalar o VIM

Filed under: Solaris Comments Off
10May/08Off

Troubleshooting snmpdx

A pouco tempo encontrei o seguinte log no /var/adm/messages em alguns servidores Solaris 8, fazendo com que o file system /var chega-se em 100% várias vezes.

May 5 21:01:05 sserver8 /usr/lib/snmp/snmpdx: [ID 702911 daemon.error] session_open() failed for a pdu received from localhost.55659
May 5 21:01:05 sserver8 /usr/lib/snmp/snmpdx: [ID 702911 daemon.error] community_check();bad community from localhost

Realizei os seguintes procedimentos.

  • Verifiquei o /etc/hosts, em busca de entradas duplicadas.

127.0.0.1 localhost

10.0.0.11 sserver8

  • Alterei as seguintes linhas abaixo no arquivo /etc/snmp/conf/snmpd.conf.

system-group-read-community S89priv

trap-community S89priv

managers localhost snmpman

  • Depois realizei a seguinte configuração em /etc/snmp/conf/snmpdx.acl

acl = {

{

communities = public

access = read-only

managers = *

}

}

Nota: S89priv é o nome da comunidade

  • Após isto é necessário realizar um restart do serviço

/etc/rc3.d/S76snmpdx stop

/etc/rc3.d/S76snmpdx start

E por fim você irá constatar que as mensagens de erro não mais ocorrem.

tail -f /var/adm/messages.

Espero que a dica tenha sido útil.

Filed under: Solaris Comments Off
30Apr/08Off

How to Find

Busca por nome de arquivos e/ou diretórios (pode-se realizar busca com expressões regulares)

  • Case sensitive

# find / -name "*.sh" -print
# find / -name apache2 -print
# find / -name "[Bb]ind*" -print

  • Case insensitve

# find / -iname "*lock*" -print

Busca com dois parâmetros (AND/OR)

  • Arquivos .sh e .ksh

# find / \( -name \*.sh -a -name \*.ksh \) -print

  • Arquivos .sh ou .ksh

# find / \( -name \*.sh -o -name \*.ksh \) -print

Busca por owner

  • User ID

# find / -user www

  • Group ID

# find / -group bin

Busca por tipo de permissões

  • Octal

# find /usr/sbin/ -perm +0500
# find /usr/sbin/ -perm -0664
# find /usr/sbin/ -perm 0775

  • Symbolic

# find /usr/sbin/ -perm +ug=rx
# find /usr/sbin/ -perm -u=rw
# find /usr/sbin/ -perm o=r

Busca apenas no diretório corrente

# find /usr -name "*.txt" -maxdepth 1 -print

Busca no diretório corrente e desce um subdiretório

# find /usr -name "*.txt" -maxdepth 2 -print

Busca apenas no file system corrente (existindo por exemplo um file system /usr/aap, este será excluído da busca)

# find /usr -xdev -name "*.txt" -print

Busca mantendo no diretório corrente (não é preciso utilizar -depth)

# find /usr -name "*.txt" -prune

Busca por tipo

  • Somente arquivos

# find / -name apache2 -type f -print

  • Somente diretórios

# find / -name apache2 -type d -print

  • Somente links

# find / -name apache2 -type l -print

  • Arquivos no home do usuário com 2 hard links

# find $HOME -type f -links 2

  • Arquivos no home do usuário com mais de 1 hard link

# find $HOME -type f -links +1

Busca por tamanho de arquivo

  • Arquivos maiores que 5M

# find / -size +5000 -print

  • Arquivos menores que 5M

# find / -size -5000 -print

  • Arquivos exatamente igual a 5M

# find / -size 5000 -print

Busca de arquivos por data de: acesso, criação e modificação

  • Arquivos acessados com mais de 3 dias

# find /etc -atime +3 -print

  • Arquivos acessados com menos de 3 dias

# find /etc -atime -3 -print

  • Arquivos modificados com mais de 5 dias

# find /etc -mtime +5 -print

  • Arquivos modificados com menos de 5 dias

# find /etc/ -mtime -5 -print

  • Arquivos criados com mais de 10 dias

# find /var -ctime +10 -print

  • Arquivos criados com menos de 10 dias

# find /var -ctime -10 -print

  • Arquivos modificados exatamente há 7 dias

# find /etc -mtime 7 -print

  • Arquivos acessados nas útimas 24 horas

# find /etc -atime 0 -print

Busca de arquivos e/ou diretórios com exceção (imprime tudo exceto parâmetro informado)

# find /usr ! -name "*lib*" -print
# find /usr -not -name "*lib*" -print

Busca com execução de comandos na saída

  • Lista detalhe dos arquivos encontrados (equivalente a opção "ls -dils")

# find /var/log/ -name "*.log" -ls

  • Excluir todos os arquivos no /tmp com mais de 3 dias

# find /tmp/ -ctime +3 -exec rm -rf {} \;

  • Excluir todos arquivos no /tmp com extensão .lock sem confirmação

# find /tmp/ -name *.lock -exec rm -rf {} \;

  • Exlcluir todos arquivos no /tmp com extensão .lock com confirmação

# find /tmp/ -name *.lock -ok rm -rf {} \;

  • Excluir arquivos com nome core (-delete apenas para GNU find)

# find / -name "*core*" -type f -delete

  • Compactar todos arquivos no /tmp com extensões .tmp e .bak

# find /tmp/ \( -name \*.tmp -o \*.bak \) -exec gzip {} \;

  • Busca arquivos dentro do homedir com permissões 664 e altera para 775

# find $HOME -xdev type f -perm 664 -exec chmod 775 {} \;

Nota: Abaixo seguem alguns exemplos de expressões regulares e formatação do resultado da busca.

  • Busca todos arquivos criados com menos de 5 dias, exceto arquivos que contenham "svn" no nome.

# find . -ctime -5 -not -regex '.*svn.*' -print

  • Busca arquivos modificados a mais de uma semana e que tenham as extensões .csh ou .ksh

# find . -mtime +7 -regex '.*[ck]sh*'

  • Formanto da saída da busca

# find . -printf "%TY%TW:%p\n"
# find . -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\n'
# find . -printf '%p %a %m\n'
# find . -printf 'Name: %16f Size: %6s\n'

Importante: Descrição dos comandos acima.

%Ax - data do último acesso ao arquivo, formato da mesma definido em "x".
%Tx - data da última modificação do arquivo, formato da mesma definido em "x".

d - dia do mês
D - data (dd/mm/aa)
h - mês (nome)
H - hora
m - mês (número)
M - minutos
S - segundos
T - hora (hh:mm:ss)
w - dia da semana
W - número da semana no ano
y - ano (2 digítos)
Y - ano (4 digítos)

%a - data e hora do último acesso ao arquivo
%f - nome do arquivo (exclui PATH)
%m - permissões do arquivo (symbolic)
%p - nome do arquivo (inclui PATH)
%s - tamanho do arquivo (bytes)

\n - quebra de linha
\t - tabulação horizontal
\v - tabulação vertical

OBS.: Neste artigo coloquei os arquivos que tenho utilizado diariamente, pois o comando find tem inúmeras possíbilidades, para explorá-las, basta dar uma lida no man. E lembrar também que todos os comandos poder ser mesclados, exemplos: busca por extensão de arquivo, permissão e mais de x dias acessados ou, busca por extensão x e y, tamanho e tipo de arquivo e etc...

26Apr/08Off

Gerênciando swap

Para criar-mos uma nova partição raw swap, após criado o device (type swap), adicione a seguinte entrada em /etc/vsftap

/dev/dsk/c0t1d0s0 - - swap - no -

Depois habilitando a nova partição

# swap -a /dev/desk/c0t1d0s0

Pode adicionar uma novo área de swap através de um arquivo de swap.

# mkfile 250m /opt/myswapfile
# swap -a /opt/myswapfile
# echo "/dev/dsk/c0t1d0s0 - - swap - no -" >> /etc/vsftab

Desativando um

swap space

# swap -d /opt/myswapfile

Exibindo informações mais detalhadas da área de swap.

# swap -s
total: 402456k bytes allocated + 97104k reserved = 499560k used, 1643728k available

Neste momento verificamos que o uso real da swap é de 499560k, onde 97104k estão reservados para uso futuro e 402456k é a utilização real no momento.
O espaço livre é de 1643728k.

Para obter detalhes individuais de cada device.

# swap -l
swapfile dev swaplo blocks free
/dev/md/dsk/d20 85,20 16 4202672 3489392

Onde swapfile indica device ou arquivo de swap, a coluna deve informa o maior e menor número para o device e 0 quando for arquivo.
Em blocks temos o tamanho total da swap (blocos de 512 bytes). Finalizando em free é a quantidade de espaço livre na área de swap também em blocos de 512 bytes.

Filed under: Solaris Comments Off