Blog de um profissional de TI apaixonado por tecnologia e que deseja compartilhar scripts, dicas e novidades.
Migrar listas de distribuição entre servidores Zimbra
Exportando listas de distribuição para arquivos no Zimbra origem:
zmprov gadl > /tmp/listas.txt
mkdir /tmp/listas;while read LIST;do zmprov gdl $LIST | grep zimbraMailForwardingAddress:| awk {'print $2'} > /tmp/listas/${LIST}.txt ;done < /tmp/listas.txt
Fonte: Antigo wiki do Sr Bastos https://github.com/coffnix
Envie os arquivos para o Zimbra destino.
Neste caso não estava disponível o arquivo /tmp/listas.txt do servidor anterior, então o script trata os arquivos de exportação para criar e popular as listas no novo Zimbra:
# Eduardo Marques
# 06/2019
# Lista os arquivos de exportação
for i in `ls /opt/migration/listas/`;do
# Cria a lista de distribuição tratando a saída removendo o ".TXT"
echo "Criando lista ${i::-4}" >> /tmp/criarlista.log
zmprov cdl ${i::-4}
# Lista emails do txt e adiciona os emails na lista.
for LMAIL in $(cat /opt/migration/listas/${i} |grep -v ^#|tr 'r' ' ');do
zmprov adlm ${i::-4} $LMAIL  >> /tmp/criarlista.log
Autor eduardoPublicado em junho 25, 2019 julho 1, 2019 Tags backup, bash, exportar, lista de distribuição, script, zimbraDeixe um comentário em Migrar listas de distribuição entre servidores Zimbra
Trocar senhas de usuários LDAP
Pequeno script em Bash usando laço while recebendo entrada de um arquivo com uma lista de usuários para trocar senhas:
# Eduardo 21/06/2019
# Muda senha de todos usuarios colocados no arquivo listas.txt.
# As senhas sao geradas automaticamente e podem ser definidas se adicionados o parametro -s.
LISTA="listas.txt"
while read NAME;do
ldappasswd  -h localhost -D "cn=Manager,dc=empresa,dc=int" -x "uid=${NAME},ou=People,dc=empresa,dc=int" -w secret 2>> erromudasenha.log
done < ${LISTA}
Autor eduardoPublicado em junho 21, 2019 julho 1, 2019 Tags bash, ldap, ldappasswd, postfix, scriptDeixe um comentário em Trocar senhas de usuários LDAP
Script de Backup do fileserver para bucket S3 na AWS
O script a seguir foi usado para enviar backup de uma pasta do fileserver para o bucket no S3 da Amazon.
O pré requisito não abordado desde script é que você já tenha instalado e configurado o AWS cli no servidor e que também já configurado o Mutt para envio de e-mails.
# Autor: Eduardo Marcial
# Data: 23-05-2019
# Backup aws
# Para restaurar backup pode ser usado:
# "aws s3 cp --recursive s3://backup-namebucket/dir/ /dest/dir"
# Carrega variáveis
DATE=`date +%d%m%y%H%M`
proc=`ps aux | grep "aws s3" | grep -v grep | awk '{print $2}' | xargs | awk '{print $1}'`;
log='/var/log/bkp-aws.log';
# Checagem de processos de backup rodando.
if [ $proc ]; then
echo "O processo AWS S3 está rodando" -`date` >> $log;
echo " " >> $log;
#Rodando AWS cli s3
/usr/local/bin/aws s3 sync /home/arquivos/ s3://backup-bucketname/ 2>> /var/log/bkp-aws.log
cat /var/log/bkp-aws.log | mutt -s "Relatório de backup AWS com exceções" [email protected]
cat /var/log/bkp-aws.log | mutt -s "Sucesso no envio de backup para AWS" [email protected]
echo "Done ! "-`date` >> $log;
Autor eduardoPublicado em junho 6, 2019 junho 27, 2019 Tags Amazon, AWS, backup, bash, S3, scriptDeixe um comentário em Script de Backup do fileserver para bucket S3 na AWS
VPN PPTP Client rodando em Linux
Configure a VPN PPTP Client:
pptpsetup –create cppronuvem –server scb-srv03.scbadvogados.adv.br –username vpnmatriz –password [email protected] –encrypt
Crie um script para iniciar a VPN automaticamente em caso de queda:
vi /etc/check-vpn.sh
HOST="192.168.199.199″
VPN_NAME="cppronuvem"
DAY=$(date +'%d/%m/%Y')
HOUR=$(date +'%H:%M:%S')
DATE="${DAY} ${HOUR}"
PINGRES=$(ping -c 3 ${HOST})
PLOSS=$(echo ${PINGRES} : | grep -oP 'd+(?=% packet loss)')
if [ "${DEBUG}" -eq "1" ];then
echo "[${DATE}] Loss Result: ${PLOSS}"
if [ "100" -eq "${PLOSS}" ];then
{ ps auxw|grep pppd|grep ${VPN_NAME}|awk '{print $2}'|xargs kill; } 2> /dev/null
echo "[${DATE}] Iniciando PPTP Client : ${HOST}"
/usr/sbin/pppd call ${VPN_NAME}
echo "[${DATE}] PPTP iniciada: ${HOST}"
echo "[${DATE}] PPTP OK: ${HOST}"
Dê permissão de execução ao script:
chmod +x /etc/check-vpn.sh
Adicione ao /etc/crontab:
* * * * * root /etc/check-vpn.sh >> /var/log/vpncheck.log 2>&1
Caso seja necessário adicionar alguma rota após o início da VPN, adicione a mesma no script abaixo:
vi /etc/ppp/ip-up.local
route add -net 10.4.202.0 netmask 255.255.255.0 gw 192.168.199.199
Autor eduardoPublicado em novembro 21, 2018 junho 27, 2019 Deixe um comentário em VPN PPTP Client rodando em Linux
Descobrir conta enviado SPAM no Zimbra – Discover SPAM account sent in Zimbra
Avaliação de fluxo de email para checagem da saúde do Zimbra, é um ótimo indicativo de roubo de conta para Spam.
Evaluation of e-mail flow for Zimbra's health check, is a good indication of account theft for Spam.
Verificar quantidade de emails enviados por conta:
Check quantity of emails sent per account:
cat /var/log/zimbra.log | sed -n 's/.*sasl_username=//p' | sort | uniq -c | sort -n
Contas disparando emails:
Accounts firing emails:
tail -f /var/log/zimbra.log | sed -n 's/.*sasl_username=//p'
English by translate.google.com 😛
Autor eduardoPublicado em outubro 22, 2018 junho 27, 2019 Deixe um comentário em Descobrir conta enviado SPAM no Zimbra – Discover SPAM account sent in Zimbra
Zimbra – Erro ao enviar email 530 5.7.0 Must issue a STARTTLS command first (in reply to MAIL FROM command)
Erro "530 5.7.0 Must issue a STARTTLS command first (in reply to MAIL FROM command)"
Retorno de email com o seguinte erro:
530 #5.7.0 Must issue a STARTTLS command first (in reply to MAIL FROM command)
Precisa habilitar postfix_smtp_tls_security_level na conf do postfix.
Verificar configuração.
$ zmlocalconfig -e postfix_smtp_tls_security_level=may
$ zmlocalconfig|grep postfix_smtp_tls_security_level
$ zmmtactl stop ; sleep 1 ; zmmtactl start
Autor eduardoPublicado em setembro 28, 2018 junho 27, 2019 Tags email, zimbraDeixe um comentário em Zimbra – Erro ao enviar email 530 5.7.0 Must issue a STARTTLS command first (in reply to MAIL FROM command)
Isso faz com que não seja necessário rodar o rsync daemon no cliente.
Com a configuração do ssh também é possível efetuar o login direto por ssh sem senha.
Permitir ssh conectar sem senha:
Esses comandos abaixo devem ser executados no servidor que VAI conectar sem senha (ORIGEM):
Com essa configuração acima, o ssh já funciona sem senha quando se tenta conexão do servidor origem para o servidor destino.
Agora iremos melhorar a segurança deste acesso:
No arquivo /root/.ssh/authorized_keys do servidor DESTINO, fica a chave criada. Deve-se então adicionar na linha da chave o seguinte:
Ou seja, o comando from restringe somente para o ip de origem e o command permite que o comando especificado seja executado quando o servidor de origem fizer o ssh no servidor de destino. O resto da linha é o que já existe no arquivo authorized_keys.
Para aumentar ainda mais a segurança, podemos forçar que o Login de root seja efetuado somente para o comando indicado no arquivo acima, basta efetuar o procedimento abaixo, que seta a variavel PermitRootLogin como forced-commands-only:
OBS: Isso restringe totalmente o acesso de root diretamente, de qualquer máquina.
Autor eduardoPublicado em agosto 24, 2018 junho 27, 2019 Tags backup, rsyncDeixe um comentário em Como fazer rsync entre servidores sem senha
Na administração de servidores Linux o load average é quase instintivamente consultado, essa preocupação se deve ao fato da carga do sistema ser uma métrica usada para medir e dimensionar servidores e seus trabalhos, vale lembrar que muitas vezes lidamos com instâncias em nuvem e neste ambiente o load average pode significar economia ou prejuízo a depender das métricas utilizadas.
Embora seja um assunto muito bem documentado, vou me aventurar um pouco nele também. Abaixo uma imagem de load average gerada pelo monitoramento do Zabbix ao longo de sete dias de um servidor Oracle.
É possível observar picos regulares causados devido a uma rotina de backup agendada no cron, embora não exista a informação da quantidade de CPUs este histórico nos indica um consumo padrão muito abaixo dos picos. Processos em espera devido ao atraso de IO de um HD externo faz o load average subir, mas não por um gargalo do processador mas sim pelas limitações da USB ou do disco.
No Linux podemos ver load average através de vários comandos, dois deles são o uptime e o top.
Os dois comandos fazem a mesma impressão da informação da carga do sistema, abaixo o primeiro deles o "uptime" mostra o load average. São apresentados 3 números representando a média de processos rodando ou em espera pelo processador nos últimos 1, 5 e 15 minutos.
Nesta saída do uptime e podemos concluir que existem 0,97 processos em execução e/ou esperando no último minuto e que está havendo um crescimento em comparação com os últimos 5 e 15 minutos.
Na saída do top confirmamos que o load segue baixo agora em 0,47, com tendência de queda se observamos os últimos 5 e 15 minutos. Na mesma tela a linha CPU(s) um pouco abaixo podemos verificar que o wait está em 0.0%, bem alinhado com o resultado do load, assim como o idle bem alto 97,2% confirmam que o servidor está bem ocioso.
Mas olhando apenas o load average muitas vezes não podemos concluir muita coisa além da tendência de subida ou queda de carga, mas a partir do momento que se conhece o número de CPUs podemos ter uma visão mais clara.
lscpu – Mostra informações detalhadas de CPU.
Conhecendo o número de CPUs percebemos que o servidor está realmente muito ocioso, para 32 CPUs mesmo um load de 32 poderia não significar um problema, caso ele estivesse apenas esperando para gravar um subprocesso limitado à velocidade de um hd externo por exemplo.
Acredito que dentro da funcionalidade básica deste recurso para por aqui já é o suficiente, contudo não poderia deixar de falar sobre algumas curiosidades que achei numa pesquisa pelo Google .
A primeira é sobre s RFC 546 de 1973 descrevendo uma análise de load average nos dinossauros BBN-TENEX e USC-ISI.
Fonte: http://tenex.opost.com/kapix.html
O climax fica por conta do gráfico das cargas feito a mão.
Trecho da RFC interpretando o gráfico:
Interpreting data such as this is tricky business. However, it is difficult to resist making the following observations:
1. The shapes of the BBN and ISI curves are approximately the; furthermore, there is no skew between the curves. This suggests that the user populations for the two systems have similar working habits and are acclimated to the same time zone.
2. The significant features of both curves appear to be strongly correlated with "normal events" in the day of a user living on East Coast time,suggesting that the load at both sites is influenced most strongly by such users:
a. the load begins to increase between 7-8 a.m. EDT as users begin their daily computing;
b. it dips between 10-11 a.m. EDT (smoothed to a smaller rate of increase in the ISI curve) as users take their coffee break;
c. the load peaks sharply between 1-2 p.m. EDT as users return from lunch to resume their computing;
d. it decreases as the afternoon continues and as users go home from work;
e. it reaches a local minimum between 6-7 p.m. EDT (minimum not present in ISI curve) when most people eat dinner;
f. it increases to an evening peak between 9-10 p.m. EDT as some users come back from dinner and after dinner activities to resume their computing.
3. The curve for ISI is smoother than the one for BBN: the "coffee break" dip appears only as a decrease in slope; the dinner break and evening peak are completely smoothed out. This smoothing is probably due to the influence of the West Coast users of the ISI machine.
4. During July the BBN system was more heavily loaded than the ISI system. Since the data collected did not include the number of active jobs it is not possible to determine from the data whether BBN had more users or just more demanding users."
Autor eduardoPublicado em agosto 21, 2018 junho 27, 2019 Tags desempenho, hardwareDeixe um comentário em Load Average no Linux
Desde o dia 13 de março de 2018, foi removida do skype a opção de configuração manual de proxy. Segue:
https://support.skype.com/pt-br/faq/FA1017/posso-me-conectar-ao-skype-por-meio-de-um-servidor-proxy
Para corrigir este problema, crie um arquivo com os hosts do skype, e libere via masquerade.
1- Crie uma lista com os hosts do skype:
# for i in {0..20} ; do dig +short dsn$i.d.skype.net >> /home/firewall/lista-skype.txt; done | sort | uniq
2- Libere via MASQUERADE:
for host_skype in $(cat /home/firewall/lista-skype.txt);do
iptables -t nat -A POSTROUTING -s $LAN -d ${host_skype} -o $INTF -j MASQUERADE
* Onde $LAN e $INTF são as interfaces previamente declaradas.
Autor eduardoPublicado em agosto 14, 2018 junho 27, 2019 Tags proxy, skypeDeixe um comentário em Liberar Skype em rede com Squid Proxy
Backup Incremental com rsync
O programa rsync é um utilitário de cópia muito utilizado para fazer backups, ele aceita diversos parâmetros como uso de chaves, manipulação de parâmetros, cópias diferenciais e incrementais.
Abaixo vou deixar um pequeno bashscripts de backup incremental.
Frisando que no backup incremental o local que recebe a cópia completa sempre fica atualizada e o que é mudado é adicionado na pasta de "incrementais".
ANTES DO RSYNC
/DADOS/word.doc 13 kb
/BKPFULL/DADOS/word.doc 13 kb
DEPOIS DO RSYNC COM MUDANÇA NA ORIGEM NO DIA 01/01/2022
/DADOS/word.doc 124 kb
/BKPFULL/DADOS/word.doc 124kb
/BKP_INCR/01-01-2022/DADOS/word.doc 13 kb
# valedolinux.com.br
# Data: 2018
# Backup Incremental
DATA=$(date +%F) #Carimbo de data aaaa-mm-dd
ORIGEM="/home/setores"
COMPLETO="/mnt_hdext/backup-incremental/FULL"
DESTINO="/mnt_hdext/backup-incremental/$DATA"
PASTLOG="/mnt_hdext/backup-incremental/log"
LOG="$PASTLOG/log-$DATA" #Log do backup
UUID_HD_USB=""
# CHECA MONTAGEM DO HD EXTERNO
CHECK_MOUNTED=$(mount |grep -w /mnt_hdext|tail -1|wc -l)
if [ "${CHECK_MOUNTED}" = "0" ]; then
mount /dev/sdb1 /mnt_hdext 2>> ${LOG}
echo -e "n ERRO AO MONTAR HD-EXTERNO USB UUID="${UUID_HD_USB}"." >> $LOG
echo -e "n OK – HD-EXTERNO USB MONTADO COM SUCESSO" >> $LOG;
# CRIA DIRETORIOS E ARQUIVOS
if [ ! -d ${DESTINO} ]; then
mkdir -p ${DESTINO}
if [ ! -d ${COMPLETO} ]; then
mkdir -p ${COMPLETO}
if [ ! -d ${PASTLOG} ]; then
mkdir -p ${PASTLOG}
# Inicio de bkp
echo "Inicio de backup $(date)" >> $LOG
# REALIZAR BKP
sudo rsync -azbvP –exclude='TEMP' –delete –backup-dir=$DESTINO $ORIGEM $COMPLETO 2>> $LOG
# SE NÃO HOUVE ERRO NO BACKUP FAZ LIMPEZA – 60 DIAS
find $DESTINO -maxdepth 1 -mtime +60 -exec rm -rf {} ; 2>> $LOG
echo "Erro ao realizar backup incremental. $DATA" >> $LOG
echo "Fim de backup $(date)"
Autor eduardoPublicado em julho 19, 2018 junho 27, 2019 Tags backup, rsyncDeixe um comentário em Backup Incremental com rsync