Categoria Dicas&Soluções

porplague70

Bash Command Line Examples.

After having spent years on unix systems, shell scripting still continues to elude me. Hence these reminders.

contents
  1. For Loops over lists
  2. While loop
  3. The Absolute Current Working Directory
  4. Getting a line count on various directories

For Loops over lists

  • To add a bunch of files to subversion
for f in Button.phi Buttons.phi Cells.phi ; do svn add $f; done
for f in `ls -l *.phi`; do svn add $f; done
  • A more complete sample
ls *.xml
file1.xml  file2.xml  file3.xml

ls *.xml > list

for i in `cat list`; do cp "$i" "$i".bak ; done

ls *.xml*
file1.xml  file1.xml.bak  file2.xml  file2.xml.bak  file3.xml  file3.xml.bak
  • To clear emails to us**@ex*****.com out of my mail queue after inspecting the affected files
cd /path/to/mailqueue
ls -l `grep -l 'us**@ex*****.com' \`find . -type f\``
rm -f `grep -l 'us**@ex*****.com' \`find . -type f\``

Note: Be sure to run the ls before the rm.

  • A little awking. PIDs of all processes using alsa. Grabs the 2nd column out of a listing.
lsof | grep alsa | awk '{print $2}'
  • This alias produces a sorted list of services and the ports they’re listening on.
alias ports='sudo /usr/bin/lsof -nPi | grep LIST | awk '\''{printf "%-20s%-5s%-5s%s\n",$1,$5,$7,$8}'\'' | sort | uniq'
  • Running ports would then produce something like this:
cupsd               IPv4 TCP  127.0.0.1:631
master              IPv4 TCP  127.0.0.1:25
mysqld              IPv4 TCP  127.0.0.1:3306
portmap             IPv4 TCP  *:111
rpc.mount           IPv4 TCP  *:657
rpc.statd           IPv4 TCP  *:894
smbd                IPv4 TCP  *:139
smbd                IPv4 TCP  *:445
sshd                IPv6 TCP  *:22

While loop

  • Keeping my mail inbox from overflowing while running email stress tests
cd /path/to/maildir/new
while true; do rm -f *; sleep 5; done

The Absolute Current Working Directory

  • AKA Getting the realpath of a location.
  • This is really more useful in scripts, but here goes:
MYCWD=`dirname \`readlink -e $0\``

Getting a line count on various directories

T=0; \
for f in dir1 dir3 dir10; do \
  N=0; \
 for n in `find $f -type f -exec wc -l {} \; | awk '{print $1}'`; do\
    N=$(‎( $M + $n )); \
  done; \
  T=$(‎( $T + $N)); \
  echo $N - $f; \
done; \
echo $T - Total

4686 - dir1
4894 - dir3
981037 - dir10
990617 - Total
porplague70

Visualizando o conteúdo das mensagens fila postfix.

Para visualizar o conteúdo de uma mensagem, utilizamos o comando “postcat” como neste exemplo:

postcat -vq MESSAGEID

O exemplo da mensagem acima, seria:

postcat -vq 96C9D1D1620

A saída do comando acima seria similar a esta:

ro**@lo*******.localdomain:~# postcat -vq D576011ED32
postcat: name_mask: all
postcat: inet_addr_local: configured 2 IPv4 addresses
postcat: inet_addr_local: configured 2 IPv6 addresses
*** ENVELOPE RECORDS deferred/D/D576011ED32 ***
message_size: 705 713 1 0 705
message_arrival_time: Tue Nov 24 19:30:25 2015
create_time: Tue Nov 24 19:30:25 2015
named_attribute: log_ident=D576011ED32

…….

porplague70

Removendo comentários (#) dos arquivos de configuração

REMOVENDO COMENTÁRIOS (#) DOS ARQUIVOS DE CONFIGURAÇÃO

Já teve uma caso de precisar verificar somente as linhas que não estão comentadas no seu arquivo de configuração? Me encontrei com um caso assim, ao pegar um arquivo.conf que eu já usava no Squid e implementar em uma nova máquina.

OBS: Somente para teste. Copie o arquivo para a pasta teste. Exemplo:

# cp /etc/squid/squid.conf /tmp/squid.conf-teste
# egrep -v “^#|^$” /tmp/squid.conf-teste > /tmp/squid.conf-teste2

Entre no arquivo com VI e irá perceber que as linhas comentadas não estão mais presentes no arquivo.

porplague70

INSTALEI O FREEBSD E ESQUECI A SENHA DE ROOT

Para resolver não precisamos instalar o sistema FreeBSD de novo. Siga estes passos:

Quando aparecer a tela de boot com o Beastie na tela, selecione a opção 4, “Boot FreeBSD in single user mode”. Em determinado momento esta ação vai lhe pedir um shell, que por padrão é “/bin/sh”, apenas pressione Enter.

Checando partições:

# fsck -y

Agora digite:

# mount -a

Mudando a senha:

# passwd

Digite a senha de root nova e dê um reboot!

porplague70

atualizar pfsense via console.

na conlose digitar:

pfSense-upgrade -4

 

porplague70

Gateway Monitoring Daemon não funcionando no pfSense 2.3 – dpinger

Pessoal,

Para quem estiver tendo problemas com o “Gateway Monitoring Daemon” no pfSense 2.3, ficando sempre com o status Down, basta seguir o passo a seguir:

Motivo:

Alguns modens/roteadores descartam ICMP com 0 byte, e como o dpinger utiliza 0 byte como default, será necessário alterar o valor do parâmetro “data payload”, que estipula quatos bytes será enviado no pacote ICMP para checagem do Gateway.

Solução:

1- Vá em System -> Routing
2- Clique para editar o Gateway
3- Altere o campo “Data Payload” de 0 para 1
4- Salve e aplique a modificação
5- Reinicie o dpinger

porplague70

ACESSO REMOTO OPEN-SOURCE COM XRDP

recentemente precisei criar um servidor rdp com linux, então recorri ao ubuntu-server com o XRDP.

A instalação do ubuntu-server foi muito simples praticamente avançar, avançar e avançar. Hehe, ta ficando muito fácil as coisas ultimamente, se é que me entendem.

Bom, instalei uma opção gráfica com o LXDE já que é completa e leve:

apt-get install lxde

Depois de reiniciar instalei o xrdp:

apt-get install xrdp

Adicionei o usuário que precisava:

adduser USER

Pronto, foi só desfrutar do servidor de RDP open-source usando o xrdp.

Dica préviamente públicada em meu blog onde compartilho um vídeo também:

porplague70

liberando whatsapp ligação e video no squid.

incluir estes host na whitlist do squid.

web.whatsapp.com
web.whatsapp.com:443
dyn.whatsapp.com:443
w1.web.whatsapp.com:443
w2.web.whatsapp.com:443
w3.web.whatsapp.com:443
w4.web.whatsapp.com:443
w5.web.whatsapp.com:443
w6.web.whatsapp.com:443
w7.web.whatsapp.com:443
w8.web.whatsapp.com:443

porplague70

Erro Deprecated + erro ao conectar o dado de banco ao php

Para retirar esta advertência coloque no inicio do código da conexão a seguinte linha:
error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED);