Programa Shell Script

5 respostas
programação
Dieggo

Alguém manja de programação Shell Script?

Preciso de uma ajuda, preciso executar um script que compacte um determinado arquivo e envie esse via e-mail para o usuário e caso não seja possível fazer o backup grave um log e envie o log via e-mail.

Alguém pode me ajudar?

5 Respostas

Villagram

Você pode escrever o programa para ser executado como um batch e coloca-lo no agendador de tarefas do windows, fica muito simples de fazer isto. Já tem alguma ideia da maneira como isto será executado?

Dieggo

Olá.

Veja o meu código abaixo, eu estou tentando resolver, mas não estou conseguindo, por isso gostaria de informações para que possa clarear e finalizar o Script.

#!/bin/bash

Configuração do Script

Cria diretórios na pasta do root - BKPWIN, LOG, TEMP

Cria diretório Server na raiz do C: do Windows

Instalar no Linux o sendemail, cifs-utils, rsync (caso use)

DIR_WIN é a pasta no Windows de onde será montado e copiado os dados

DIR_BKP é a pasta no Linux onde será gerado o backup zipado

DIR_TEMP é a pasta onde será copiado os dados para compactação

NOME_BKP é o nome do arquivo de backup a ser criado

USER e PASS são o nome do Usuário e a Senha a serem usados para montagem

MAIL_DEST é o email de destino

MAIL_CFG é o email de configuracao

MAIL_PASS é a senha do email de configuracao

SMTP é a configuração do Servidor SMTP

LOG é o arquivo de log criado apos backup

Variáveis do script

DIR_WIN="//192.168.0.3/server"
DIR_BKP="/root/bkpwin"
DIR_TEMP="/root/temp"
NOME_BKP="bkp_date +%d-%m-%Y_%H%M.tgz"
USER="Aluno"
PASS=“P@ssw0rd"
MAIL_DEST="[email removido]"
MAIL_CFG="[email removido]"
MAIL_PASS=”*********“
SMTP=“smtp.gmail.com:587"
LOG=”/root/log/bkp_date +%d-%m-%Y_%H%M.log”

Verifica se o diretório está vazio

LIST_DIR=ls -A $DIR_TEMP
if [ -z “$LIST_DIR” ]
then

Monta a partição do Windows no Linux

mount -t cifs $DIR_WIN $DIR_TEMP -o username=$USER,password=$PASS
cd $DIR_BKP
tar -zcvf $NOME_BKP $DIR_TEMP >> $LOG

Desmonta a partição do Windows

umount $DIR_TEMP

–> Aqui eu preciso fazer uma alteração também, se o backup foi executado com sucesso então deve ser enviado um e-mail para o usuário informando que o mesmo foi executado com sucesso e se possível o mesmo em anexo

else

–> Aqui eu preciso fazer uma alteração, se o backup não for executado então deve ser enviado um e-mail para o usuário informando que o Backup não foi executado e também o Log via e-mail

Verifica o envio de email

case $? in
0) msg=“ENVIADO COM SUCESSO”;;

  1. msg=“FALHA NO ENVIO”;;
    *) msg=“FALHA GERAL”;;
    esac
    sendemail -f “$MAIL_CFG” -t “$MAIL_DEST” -u “$msg” -m “$msg” -s “$SMTP” -xu “$MAIL_CFG” -xp “$MAIL_PASS” -o message-file=/root/LOG/bkp_date +%d-%m-%Y_*.log
    fi
Villagram

@Dieggo Está rodando o script como um serviço no linux? você tem o log do serviço do journal ou sabe qual erro está ocorrendo?

Villagram

@Dieggo Vou dar uma revisada no seu script, mas vou demorar um pouco e não a garantia que vá funcionar, pois é necessário fazer outras configurações de serviço, firewall e permissões de pastas…ajudar com essas configurações pode nos levar as vários dias de discussão.

Assim que terminar a revisão eu posto o resultado.

Dieggo

Olá

Blz, sem problemas, agradeço pelo empenho em me ajudar!

Criado 30 de abril de 2018
Ultima resposta 30 de abr. de 2018
Respostas 5
Participantes 2