Archive for Ulisses Féres

Script de sincronização e backup para Windows .vbs e .bat utilizando rsync

Para utilização/instalação do Rsync no windows procure documentações na internet como esta abaixo:
http://www.vivaolinux.com.br/artigo/Utilizando-o-RSYNC-para-fazer-backups-de-servidores-e-estacoes-Windows?pagina=1

1 – Instalação da biblioteca do rsync no windows e certificação de que a mesma funciona corretamente.
2 – Realizar as relações de confiança para servidores linux a fim da não solicitação de senhas.
3 – Utilizar a ferramenta microsoft de agendamento de tarefas.

sincroniza.bat => sincronizando dois servidores. Arquivos mais novos sobreescrevem os mais antigos em ambos os sentidos. Mapeamento de um server no outro. Usuário (manutencao) deve ser administrator, com os compartilhamento liberado para ele.

set data=%date:/=-%
net use j: \\servidor_a\EMPRESAExport senhaeh1234 /user:manutencao

echo "| ------ ------ ------ ------ ------ ------ ----------- |" >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo "| Sincronizacao realizada em %data% as %time%  |" >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo "| ------ ------ ------ ------ ------ ------ ----------- |" >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo "      ||||||| Arquivos abaixo sincronizados |||||||      " >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo " " >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"

C:\Program Files\cwRsync\cwrsync.cmd
echo "| ENVIANDO DO SERVER_A PARA SERVER_B |"  >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
"C:\Program Files (x86)\cwRsync\bin\rsync.exe" -uvha --recursive "/cygdrive/j/" "/cygdrive/c/inetpub/EMPRESAExport" >> "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo " " >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo "| ENVIANDO DO SERVER_B PARA SERVER_A |"  >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo " " >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
"C:\Program Files (x86)\cwRsync\bin\rsync.exe" -uvha  --recursive "/cygdrive/c/inetpub/EMPRESAExport/" "/cygdrive/j" >> "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"

echo " " >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo "| ------ ------ ------ ------ ------ ------ ----------- |"  >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo "| Sincronizacao finalizada em %data% as %time% |"  >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo "| ------ ------ ------ ------ ------ ------ ----------- |"  >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo " " >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo " " >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo "       ==============================================================================================       "   >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"        
echo " " >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"
echo " " >>  "C:\LOGS\Sincronizacao Inetpub EMPRESA/_%data%.txt"

backup.bat => faz backup de um diretório para outro

set data=%date:/=-%
set dia=%date:~0,2%

echo "| ------ ------ ------ ------ ------ ------ ----------- |" >>  "C:\LOGS\Sincronizacao Backup Candidato/_%data%.txt"
echo "| Sincronizacao realizada em %data% as %time%  |" >>  "C:\LOGS\Sincronizacao Backup Candidato/_%data%.txt"
echo "| ------ ------ ------ ------ ------ ------ ----------- |" >>  "C:\LOGS\Sincronizacao Backup Candidato/_%data%.txt"
echo " " >>  "C:\LOGS\Sincronizacao Backup Candidato/_%data%.txt"
echo "      ||||||| Arquivos abaixo sincronizados |||||||      " >>  "C:\LOGS\Sincronizacao Backup Candidato/_%data%.txt"
echo " " >>  "C:\LOGS\Sincronizacao Backup Candidato/_%data%.txt"

C:\Program Files\cwRsync\cwrsync.cmd
rsync -vh --recursive --delete --exclude "*.txt" root@192.168.100.154:/opt/apache/htdocs/ "/cygdrive/c/BACKUP_APLICACOES_CAND/dias/%dia%" >> "C:\LOGS\Sincronizacao Backup Candidato/_%data%.txt"

echo " " >>  "C:\LOGS\Sincronizacao Backup Candidato/_%data%.txt"
echo "| ------ ------ ------ ------ ------ ------ ----------- |"  >>  "C:\LOGS\Sincronizacao Backup Candidato/_%data%.txt"
echo "| Sincronizacao finalizada em %data% as %time% |"  >>  "C:\LOGS\Sincronizacao Backup Candidato/_%data%.txt"
echo "| ------ ------ ------ ------ ------ ------ ----------- |"  >>  "C:\LOGS\Sincronizacao Backup Candidato/_%data%.txt"

Apaga_sent.vbs => apaga arquivos recursivamente que contem no nome a expressão “eam-new”

strPasta="C:\Program Files (x86)\Persits Software\AspEmail\Queue\Sent"
set FSo = CreateObject("Scripting.FileSystemObject")
Apagar_Arquivos(strPasta)

Sub Apagar_Arquivos(Pasta)
set folder = FSO.getFolder (Pasta)

if folder.Subfolders.count > 0 then
for each SubFolder in folder.Subfolders
Apagar_Arquivos SubFolder
next
end if

for each file in folder.files
set objFile = FSO.GetFile(file)
if FSO.GetExtensionName(objFile) = "eam-new" then
File.delete
end if
next
end sub

Apaga_logs.vbs => apaga registros dentro de um diretório recursivamente. 31 dias de retenção.

pasta = "C:\LOGS"
Apagar_Arquivos pasta

Sub Apagar_Arquivos(pasta)

Set objFSO = CreateObject("Scripting.FileSystemObject")
'aqui você informa o caminho da pasta

set folder = objFSO.getFolder (Pasta)

if folder.Subfolders.count > 0 then
  for each SubFolder in folder.Subfolders
   'AQUI ELE VAI PROCURAR PASTAS E SUBPASTAS.
   Apagar_Arquivos SubFolder
  next
end if


for each file in folder.files
   'AQUI DEFINE A QUANTIDADE DE DIAS.
   if DateDiff("d",file.DateLastModified,now) > 31 Then
      objFSO.DeleteFile(file.path)
   End if
next

End sub

Exemplo de uma tarefa agendada no windows para rodar o script de backup uma vez por dia as 23hrs:

Imagem 001

Imagem 005

Imagem 004

Imagem 003

Imagem 002

Exemplo de plugin Nagios – Criação

Exemplo de Script para checar status do modem GSM / Chan dongle asterisk


vim /usr/lib64/nagios/plugins/check_modens

#!/bin/bash

#DEV=$1

CRIT=1
MODEM=$1
RESULT=$(/usr/sbin/asterisk  -rx "dongle show device state $MODEM" | grep Registration |  /usr/bin/awk '{print $5}' |  /usr/bin/sed 's/,*$//')
SINAL=$(/usr/sbin/asterisk  -rx "dongle show device state $MODEM" | grep RSSI | /usr/bin/awk '{print $3}' |  /usr/bin/sed 's/,*$//')

if [ "$RESULT" == "Registered" ] ; then

        echo "O $MODEM esta funcionando corretamente com $SINAL RSSI de sinal";
        exit 0;


elif [ "$RESULT" != "Registered" ] ; then
        echo "O $MODEM NAO esta funcionando. $RESULT";
        exit 2;
else

echo "Erro ao checar servico" ;

exit 3;

fi

exit 2;

Para chamar o script:


[root@~]# /usr/lib64/nagios/plugins/check_modens <strong>chip-oi</strong>
O chip-oi esta funcionando corretamente com 20 RSSI de sinal

[root@~]# /usr/lib64/nagios/plugins/check_modens chip-teste
O chip-teste NAO esta funcionando.

[root@~]# /usr/lib64/nagios/plugins/check_modens chip-claro
O chip-claro esta funcionando corretamente com 17 RSSI de sinal

OBS: Chip-oi eh o nome do chan_dongle referente ao chip da Oi (definido por mim no dongle.conf do asterisk)

Pode-se chegar de outro server remoto adicionando o nrpe:

Leia:

  • http://blog.abratel.com.br/?p=840
  • [root@~]#  vim /etc/nagios/nrpe.cfg
    ...
    command[check_asterisk_chip-oi]=sudo /usr/lib64/nagios/plugins/check_modens chip-oi
    command[check_asterisk_chip-oi2]=sudo /usr/lib64/nagios/plugins/check_modens chip-oi2
    command[check_asterisk_chip-claro]=sudo /usr/lib64/nagios/plugins/check_modens chip-claro
    command[check_asterisk_chip-vivo]=sudo /usr/lib64/nagios/plugins/check_modens chip-vivo
    ...
    
    [root@~]# systemctl restart nrpe
    
    

    No servidor NAGIOS utilizar:

    
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       pcursos
            service_description             Checagem do Chip/Modem Oi
            check_command                   check_nrpe!check_asterisk_chip-oi
            notes_url                       http://blog.abratel.com.br/?p=954
    
    }
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       pcursos
            service_description             Checagem do Chip/Modem Claro
            check_command                   check_nrpe!check_asterisk_chip-claro
            notes_url                       http://blog.abratel.com.br/?p=954
    }
    
    

    Tabela de conversão RSSI para dbm

    Nota: Tabela para CISCO

    Cisco has the most granular dBm lookup table.
    RSSI_Max = 100
    Convert % to RSSI and lookup the result in the following table. The RSSI is on the left,
    and the corresponding dBm value (a negative number) is on the right.

    0 = -113
    1 = -112
    2 = -111
    3 = -110
    4 = -109
    5 = -108
    6 = -107
    7 = -106
    8 = -105
    9 = -104
    10 = -103
    11 = -102
    12 = -101
    13 = -99
    14 = -98
    15 = -97
    16 = -96
    17 = -95
    18 = -94
    19 = -93
    20 = -92
    21 = -91
    22 = -90
    23 = -89
    24 = -88
    25 = -87
    26 = -86
    27 = -85
    28 = -84
    29 = -83
    30 = -82
    31 = -81
    32 = -80
    33 = -79
    34 = -78
    35 = -77
    36 = -75
    37 = -74
    38 = -73
    39 = -72
    40 = -70
    41 = -69
    42 = -68
    43 = -67
    44 = -65
    45 = -64
    46 = -63
    47 = -62
    48 = -60
    49 = -59
    50 = -58
    51 = -56
    52 = -55
    53 = -53
    54 = -52
    55 = -50
    56 = -50
    57 = -49
    58 = -48
    59 = -48
    60 = -47
    61 = -46
    62 = -45
    63 = -44
    64 = -44
    65 = -43
    66 = -42
    67 = -42
    68 = -41
    69 = -40
    70 = -39
    71 = -38
    72 = -37
    73 = -35
    74 = -34
    75 = -33
    76 = -32
    77 = -30
    78 = -29
    79 = -28
    80 = -27
    81 = -25
    82 = -24
    83 = -23
    84 = -22
    85 = -20
    86 = -19
    87 = -18
    88 = -17
    89 = -16
    90 = -15
    91 = -14
    92 = -13
    93 = -12
    94 = -10
    95 = -10
    96 = -10
    97 = -10
    98 = -10
    99 = -10
    100 = -10

    Setar primeira senha no mysql ou mariadb após instalação CentOS

    Instalação

    Para instalar o MariaDB no Centos 7 execute o comando:

    
    sudo yum install mariadb-server mariadb
    
    

    Ao final da instalação deverá aparecer Complete!.

    Configuração

    Após instalado, devemos configurar alguns itens.

    O primeiro é iniciar o serviço do MariaDB. Para iniciá-lo execute o comando:

    
    sudo systemctl start mariadb
    
    

    Após iniciado, vamos configurar a senha do root. Para isso, execute o comando:

    
    sudo mysql_secure_installation
    
    

    Note que este passo solicita a configuração de outros itens, então iremos por partes.

    Inicialmente será solicitado a senha do root, conforme abaixo:

    
    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
    SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
    
    In order to log into MariaDB to secure it, we'll need the current
    password for the root user. If you've just installed MariaDB, and
    you haven't set the root password yet, the password will be blank,
    so you should just press enter here.
    
    Enter current password for root (enter for none):
    
    

    Apenas aperte Enter, pois não existe uma senha definida.

    Após isso, será solicitado se você deseja definir uma nova senha do root, conforme abaixo:

    
    Setting the root password ensures that nobody can log into the MariaDB
    root user without the proper authorisation.
    
    Set root password? [Y/n]
    
    

    Escolha Y e defina uma nova senha.

    Se tudo ocorrer bem, você deverá ver algo semelhante a:

    
    Password updated successfully!
    Reloading privilege tables..
    
    

    Ainda serão feitas outras perguntas sobre acesso a base, apenas escolha entre Y/N de acordo com a sua necessidade.

    Após configurado, vamos colocá-lo para iniciar automaticamente no boot. Para isso, execute o comando:

    
    systemctl enable mariadb.service
    
    

    Teste

    Se tudo estiver certo, agora você já pode se conectar no MySQL. Para isso, execute o comando:

    
    mysql -u root -p
    
    

    Para fazer um pequeno teste no nosso BD, vamos criar um usuário e uma base.

    Para criar uma base execute o seguinte comando:

    
    CREATE DATABASE asterisk;
    
    

    Para criar um usuário execute o seguinte comando:

    
    CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'senha';
    
    

    Para atribuir permissões de acesso a base ao usuário execute o seguinte comando:

    
    GRANT ALL PRIVILEGES ON asterisk. * TO 'usuario'@'localhost';
    FLUSH PRIVILEGES;
    
    

    Assine nosso feed e não perca a continuidade deste artigo. Até a próxima.

    Upgrading MYSQL 5.0 or 5.1 to5.5 or 5.6 on Freebsd

    Hi there!

    I just completed our upgrade of mysql so I thought I’d let people know how to do it the correct way as I can see alot of people missing some vital steps to have everything running smoothly afterwards. I managed to do the upgrade with 15 seconds of downtime (when you install 5.5 it will shutdown mysql-server so while installing mysql will be offline).

    1. The first thing you have to do is check what ports depends on your current version of mysql-client, this can be done by issuing

    (root@)~#  portupgrade -frn mysql-client
    

    Se não souber ou caso não retorne a versão do mysql verificar com o comando:

    
    (root@)~# mysql --version
    mysql  Ver 14.14 Distrib 5.6.24, for FreeBSD9.1 (amd64) using  EditLine wrapper
    
    Obs: Esse print foi feito após minha atualização. Provavelmente verás uma versão inferior a esta.
    

    if you’re using portmaster you obvisously have to change the flags to whatever the portmaster equivalent is, but as im a portupgrade kind of guy I wont get into that. What this command does is that it tries to force rebuild all ports that depends on mysql-client, but as we also used the ”n” flag, it wont start doing anything (only a test). So you should now have a huuuuge list of ports that requires the mysql-client port to work correctly, save this list to a safe location because you will need it later (you can remove mysql-client and mysql-server from this list as your going to reinstall those anyway)

    2. Now before you start doing anything stupid, after issuing the below stated commands, do NOT restart apache/php-fpm afterwards until you have rebuilt apache/php because you will then get downtime due to that because those softwares will stop working until rebuilt. If you’re using postfix for mail, it will stop working at the moment you deinstall mysql51-server, so if you’re using postfix for your mailaccounts, you want to rebuild that port the first thing you do in step 3 and then restart postfix.

    Dependendo da versão visualizada, entrar no ports para realizar a remoção:

    
    #Realizar um stop na servidor mysql:
    (root@)~# /usr/local/etc/rc.d/mysql-server stop
    
    (root@)~# cd /usr/ports/databases/mysql51-client  # caso seja 5.0 -- > cd /usr/ports/databases/mysql51-client
    (root@)~# make deinstall
    (root@)~# cd /usr/ports/databases/mysql51-server # caso seja 5.0 -- > cd /usr/ports/databases/mysql50-server
    (root@)~# make deinstall
    
    

    Now install mysql 5.5 server (will install mysql 5.5 client automatically)

    Realizar a instalação do Mysql mais atual:

    (root@)~#  cd /usr/ports/databases/mysql56-client
    (root@)~#  make install clean
    
    (root@)~# cd /usr/ports/databases/mysql56-server
    (root@)~# make install clean
    
    # Restart do servidor
    
    (root@)~#  shutdown -r now
    
    

    No meu caso o mysql não subiu corretamente após restart.
    Precisei editar o arquivo /etc/rc.conf

    (root@)~#  vim /etc/rc.conf
    mysql_enable="YES"
    mysql_args="--skip-grant-tables"
    
    
    (root@)~#  /usr/local/etc/rc.d/mysql-server restart
    
    # Verificar se subiu com:
    
    (root@)~# /usr/local/etc/rc.d/mysql-server status
    mysql is running as pid 2049.
    
    #Conectei no mysql com qualquer senha uma vez que no rc.conf fizemos um skip grant tables:
    
    (root@orion)~# mysql -uroot -p123
    Warning: Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 602
    Server version: 5.6.24 Source distribution
    
    Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>
    
    

    Now that you’ve got the new shit installed, fire it up and also run mysql_upgrade afterwards

    # Realizei o update
    
    (root@)~#  mysql_upgrade -u root -p
    
    Comentei no rc.conf a linha abaixo:
    (root@)~#  vim /etc/rc.conf
    mysql_enable="YES"
    #mysql_args="--skip-grant-tables"
    
    Realizei um novo restart 
    (root@)~#  /usr/local/etc/rc.d/mysql-server restart
    
    O modulo alarmou que já estava sendo usado. 
    Rebootar o servidor:
     
    (root@)~#  shutdown -r now
    
    
    

    After mysql_upgrade is done I usually restart mysql again (just in case)

    3. You now have mysql 5.5 installed and running, however, all your software are still using the 5.1 client, so at this point, DO NOT RESTART ANY SOFTWARE. As most software keeps a copy of it’s libraries in memory so everything should be working just fine until restart.

    If you’re running postfix, the first thing you want to do is this

    portupgrade -fO postfix
    # If your using mysql as userdatabase
    portupgrade -fO p5-DBD-mysql
    # If your using spamassassin
    portupgrade -fO p5-Mail-SpamAssassin
    There is probably more p5- ports that you have in your list, rebuild all those and then restart postfix and you should be good to go.

    Now, take the list of ports you saved in step 1 and rebuild every single one of them. You probably have alot of php ports in it if you’re using php, heres an easy way of getting that stuff rebuilt without problems

    portupgrade -fO php5*
    # If your also using pecl modules and eaccelerator
    # issue the below command
    portupgrade -fO pecl* eaccelerator
    If you’re using apache you probably have apache22, mod_perl and apr1 in the list

    portupgrade -fO www/apache22 www/mod_perl2 devel/apr1
    The most basic webstuff is now done and it’s safe to restart apache, however, you will have to rebuild all ports you have in your list for them to work correctly. So before restarting a software, make sure you have rebuilt that port and those ports that it depends on. When you think your done, meaning you have rebuilt all ports in your list, you can run pkgdb -F to remove all the dependencies to the old mysql-client. After that you can run portversion just to check that there is no dependency warning, if there is no warning, well done!

    Thats all from me this time, hope this helped someone out.