Cron dentro de script [RESOLVIDO]

1. Cron dentro de script [RESOLVIDO]

João Vitor Cruz de Alcântara Barros
joaovtorcruz

(usa Ubuntu)

Enviado em 13/01/2016 - 22:11h

Galera, é possivel agendar um script, com os comandos do cron dentro de um script?
To trabalhando em um script que envia informações por email do adm com informações sobre a máquina (processos/memoria/status de rede e etc), e eu quero que esse adm na primeira vez que execute o script, escolha de quanto em quanto tempo ele deseja receber esse email. É possivel fazer isso?


  


2. MELHOR RESPOSTA

Patrick Costa da Silva
patrickpcs

(usa Nenhuma)

Enviado em 13/01/2016 - 23:54h

Sim, eu não lembro exatamente por que eu não conseguia fazer isso direto no script. Eu tinha que fazer meu script escrever todos os parâmetros a serem executados juntos ao comando "crontab" em um arquivo de texto qualquer e na string seguinte eu mandava o comando crontab receber o conteúdo desse arquivo de texto.

echo "$agenmin $agenhora $agendata $agenmes $agendia $backupscript" >> $HOME/BACKSCRIPTV1/.agendamento.bkp
crontab < $HOME/BACKSCRIPTV1/.agendamento.bkp


As variáveis $agen* são os parâmetros de minuto, hora, data, mes e dia que normalmente usamos com o crontab, essa variável $backupscript continha o a localização do script que eu queria que fosse executado. Então isso tudo ia era direcionado ">" para um arquivo ".agendamento.bkp" e depois eu executava o comando crontab recebendo "<" o conteúdo desse arquivo.

Pronto, meu agendamento estava feito. Bem, isso foi um trabalho que fiz na disciplina de "programação para redes" na facu.

3. Re: Cron dentro de script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 14/01/2016 - 00:09h

Você tem que dominar a sintaxe do arquivo de configuração do cron.
Daí você cria fácil com o comando echo.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



4. Re: Cron dentro de script [RESOLVIDO]

João Vitor Cruz de Alcântara Barros
joaovtorcruz

(usa Ubuntu)

Enviado em 14/01/2016 - 15:42h

Patrickpcs, valeu cara!! vou usar sua ideia e testar no meu script! Mas me tira uma duvida, os parâmetros que você colocou, que sao direcionados ao arquivo, já contem algo neles no arquivo? Ou você esta criando eles agora, dentro do echo?


5. Re: Cron dentro de script [RESOLVIDO]

Patrick Costa da Silva
patrickpcs

(usa Nenhuma)

Enviado em 14/01/2016 - 17:20h

essas variáveis faziam parte do meu script de menu.

Era um menu interativo que coletava as informações a respeito dos horários, data e etc.. para serem implementados no cron. Vou postar o script aqui pra vc, liga não que tem um monte de coisa noob mesmo que era minhas primeiras experiencias com shell script.


#!/bin/bash
#Script by patrickpcs
mainmenu=69
logpath=$HOME/BACKSCRIPTV1/logbackup.log
filesconfpath=$HOME/BACKSCRIPTV1/arquivos.conf
backupscript=$HOME/BACKSCRIPTV1/backupscript.sh
echo "`date +%D-%T`---MENU---O Menu foi acessado." >> $logpath
while test $mainmenu != '0'; do
clear
echo "##########----BACKUP MENU----##########"
echo "1-) Agendamento (crontab)"
echo "2-) Arquivos Selecionados para Backup"
echo "3-) Configurar o limite de backups"
echo "0-) SAIR"
echo "#######################################"
echo -n "Menu: "
read mainmenu
case $mainmenu in
### MAIN MENU > AGENDAMENTO
1) agenmenu=69
while test $agenmenu != '0'; do
clear
echo "##########----Agendamento----##########"
if crontab -l | grep backupscript.sh > $HOME/BACKSCRIPTV1/.agendamento.bkp; then
echo -e "\e[1;32m Existe um agendamento no crontab \e[m"
cat $HOME/BACKSCRIPTV1/.agendamento.bkp
else
echo -e "\e[1;31m !!!-Nenhum agendamento configurado no crontab-!!! \e[m"
fi
echo "1-) Criar um novo agendamento."
echo "2-) Remover o agendamento."
echo "0-) Voltar."
echo "#######################################"
echo -n "Menu: "
read agenmenu
case $agenmenu in
1) clear
echo "criando novo agendamento"
crontab -l > $HOME/BACKSCRIPTV1/.agendamento.bkp
echo "0-Domingo"
echo "1-Segunda"
echo "2-Terça"
echo "3-Quarta"
echo "4-Quinta"
echo "5-Sexta"
echo "6-Sabado"
echo "*-todos os dias"
echo -n "Informe o dia da semana: "
read agendia
clear
echo "valores de 1 a 12"
echo "*-Todos os meses"
echo -n "Informe o mês: "
read agenmes
clear
echo "Valores de 1 a 31"
echo "*-Qualquer dia"
echo -n "Algum dia em especifico do mês:"
read agendata
clear
echo "Valores de 0 a 23"
echo "*-qualquer hora"
echo -n "Hora: "
read agenhora
clear
echo "Valores de 0 a 59"
echo "*-Qualquer minuto"
echo -n "Minuto: "
read agenmin
echo "$agenmin $agenhora $agendata $agenmes $agendia $backupscript" >> $HOME/BACKSCRIPTV1/.agendamento.bkp
crontab < $HOME/BACKSCRIPTV1/.agendamento.bkp
;;
2) echo "Removendo agendamento"
crontab -l > $HOME/BACKSCRIPTV1/.agendamento.bkp
cat -n $HOME/BACKSCRIPTV1/.agendamento.bkp | grep backupscript.sh
echo "Informe o número do agendamento a ser excluido."
echo -e "\e[1;31m !!!-Cuidado-!!! se informar um numero que não está na lista, \e[m"
echo -e "\e[1;31m você ira excluir outro agendamento do sistema! \e[m"
echo -n "Agendamento a ser excluido: "
read linha
sed -i "`echo $linha`d" $HOME/BACKSCRIPTV1/.agendamento.bkp
crontab < $HOME/BACKSCRIPTV1/.agendamento.bkp
;;
0)
;;
*) echo "Opcao invalida"
sleep 2
;;
esac
done
rm $HOME/BACKSCRIPTV1/.agendamento.bkp
;;
## MAIN MENU > ARQUIVOS
2) filesmenu=69
touch $filesconfpath
while test $filesmenu != '0'; do
clear
echo "########----Arquivos a serem salvos----########"
echo -e "\e[1;32m"
cat $filesconfpath
echo -e "\e[m"
echo '1-Acrescentar um novo arquivo/diretorio'
echo '2-Remover um arquivo/diretorio'
echo '0-Voltar'
echo "###############################################"
echo -n "Menu: "
read filesmenu
case $filesmenu in
1) echo 'Informe o caminho do novo arquivo/diretorio'
read
echo $REPLY >> $filesconfpath
;;
2) cat -n $filesconfpath
echo "Informe o número do arquivo/diretorio a ser excluido do backup: "
read
sed -i "`echo $REPLY`d" $filesconfpath
;;
0)
;;
*) echo "Opcao invalida"
sleep 2
;;
esac
done
;;
## MAIN MENU > LIMITE DE BACKUPS
3) maxbacksmenu=69
while test $maxbacksmenu != '0'; do
clear
echo "##########----Limite de backups----##########"
## Lendo a linha 6 de backupscript.sh que contem o valor da variavel maxbacks
maxbacks=`sed -n 5'p;' $backupscript | sed 's/.*=//g'`
if test $maxbacks != '0'; then
echo -e "\e[1;32m Número maximo de backups é: $maxbacks \e[m"
else
echo -e "\e[1;31m Sem limite de backups \e[m"
fi
echo "1-) Definir um novo limite"
echo "0-) Voltar."
echo "#############################################"
echo -n "Menu: "
read maxbacksmenu
case $maxbacksmenu in
1) echo "Informe o número maximo de backups, sendo 0 sem limites."
echo -n "N-MAX de backups: "
read
sed -i "5s/.*/maxbacks=`echo $REPLY`/" $backupscript
;;
0)
;;
*) echo "Opcao invalida"
read
;;
esac
done
;;
171) localsmenu=69
while test $localsmenu != '0'; do
clear
echo "##########----Armazenamento dos backups----##########"
## Lendo a linha 4 de backupscript.sh que contem o valor da variavel bkppath
bkppath=`sed -n 4'p;' $backupscript | sed 's/.*=//g'`
if test -z $bkppath; then
echo -e "\e[1;31m Nenhum local definido!!! \e[m"
else
echo "Diretorio de para armazenamento"
echo -e "\e[1;32m $bkppath \e[m"
fi
echo "1-) Definir um novo local"
echo "0-) Voltar."
echo "#######################################"
echo -n "Menu: "
read localsmenu
case $localsmenu in
1) echo "Digite o novo local para guardar os backups"
echo -n "Local: "
read
sed -i "4s/.*/bkppath=`echo $REPLY`/" $backupscript
;;
0)
;;
*) echo "Opcao invalida"
read
;;
esac
done
;;
0) echo "saindo"
;;
*) echo "opcao invalida"
;;
esac
done
clear
echo -n "Goku"
sleep 1
echo -n " seja"
sleep 1
echo -n " louvado."
sleep 3
clear





6. Re: Cron dentro de script [RESOLVIDO]

João Vitor Cruz de Alcântara Barros
joaovtorcruz

(usa Ubuntu)

Enviado em 15/01/2016 - 20:33h

Patrickpcs valeu cara, esse seu script me ajudou bastante!! Liga não cara, ele ta bem fácil de entender e pra mim basta, também estou iniciando no shell kk






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts