Shell Script como verificar tempo do pc ligado e backup

Iniciado por filisteus, 25 de Novembro de 2010, 18:50

tópico anterior - próximo tópico

filisteus

Tô aprendendo shell script e vi esses exercicios na net,alguém pode me ajudar a fazer?

A fim de monitorar algumas informações em um computador com
sistema Linux, seu chefe solicitou a criação de um script em shell.
Entre as informações que devem ser coletadas estão os dados da CPU
e da memória, os usuários conectados, a hora atual e o tempo que o
computador está ligado. Como este problema pode ser resolvido?


2. Sua empresa precisa realizar diariamente operações de backup sobre
vários arquivos importantes. Os arquivos a serem armazenados estão
em um diretório específico e espera-se que o arquivo de backup que
for gerado seja gravado em outro diretório especialmente designado
para esta função. A solução a ser desenvolvida apenas poderá ser
executada pelo usuário "backupuser". Como isso pode ser feita de
forma automatizada de 24h em 24h?

Numa determinada empresa foi implantada uma solução de código
livre para tratamento de mensagens de e-mails do tipo "spam". A
solução anti-spam adotada foi o SpamAssassim, implantado em um
servidor linux. Espera-se que o administrador da rede da empresa
saiba quantos spams são detectados diariamente pelo controle anti-
spam. Além disso, quando houver mais de 3000 spams detectados em
um mesmo dia, o administrador da rede da empresa deve ser
1
UNIJORGE
Curso Redes de Computadores
PAR
Prof. Marcelo Rito
notificado, por e-mail, com um aviso urgente. Como podemos
solucionar este problema?
Dicas:
O Spamassassim é um programa utilizado para o controle de
spams. Para cada dia do ano que esse programa esteja em atividade é
criado automaticamente um diretório de quarentena onde as mensagens
bloqueadas por serem suspeitas são armazenadas. Exemplos de nomes de
diretórios são: 20100309, 20100621, 20101126 (Ano+mês+dia). Dentro de
cada uma destas pastas há um diretório chamado spam. E dentro deste
diretório há um arquivo para cada spam encontrado.
Para notificar o administrador da rede usando o comando mutt


irtigor

1- /proc/cpuinfo, /proc/meminfo (ou free), who, date e uptime.
2- cron.

Kamei Hyoga

1 - pesquise sobre conky se essa informação se for só para mostrar a informação. Se for para ver em rede e/ou de vários computadores, não sei te dizer.

2 - pesquise sobre rsync

filisteus

clear
echo
echo
echo " [1] saber quem está logado nesta máquina "
echo " [2] tempo ligado (PC) "
echo " [3] Dados do processador "
echo " [4] Dados da memória "
echo " [5] Data de Hoje "
echo " [6] sair "

echo -n " >>>Digite a opção: "
read Opcao

echo
case $Opcao in
1)w
;;
2)uptime
;;
3)/proc/cpuinfo
;;
4)/proc/meminfo
;;
5)date
;;
6)echo
echo  Desenvolvido por Hellnux
echo
exit
;;
esac

echo
echo

Eu fiz esse script, mas na hora das opções 3 e 4 ele informa permissão negada

irtigor

Não percebeu que os dois são arquivos texto? Use o free e o lscpu (para dados já formatados). Viu que você está fugindo do questionário, não? Acho que a ideia era aprender a filtrar dados (grep, awk ou coisa do tipo)... não esqueça de olhar o manual de cada um (man uptime, man lscpu e etc).

cesargcomp

Citação de: filisteus online 26 de Novembro de 2010, 09:53
clear
echo
echo
echo " [1] saber quem está logado nesta máquina "
echo " [2] tempo ligado (PC) "
echo " [3] Dados do processador "
echo " [4] Dados da memória "
echo " [5] Data de Hoje "
echo " [6] sair "

echo -n " >>>Digite a opção: "
read Opcao

echo
case $Opcao in
1)w
;;
2)uptime
;;
3)/proc/cpuinfo
;;
4)/proc/meminfo
;;
5)date
;;
6)echo
echo  Desenvolvido por Hellnux
echo
exit
;;
esac

echo
echo

Eu fiz esse script, mas na hora das opções 3 e 4 ele informa permissão negada


Mude os comandos
3)/proc/cpuinfo
4)/proc/meminfo

para

3)cat /proc/cpuinfo
4)cat /proc/meminfo
Use Ubuntu. Segurança, facilidade e gratuidade em suas mãos.

filisteus


bred81

Dando uma olhada rápida, é só retirar o "if" do começo, aonde ele compara o $UID com 0.
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

filisteus

Eu exclui aquele script e tô usando esse aqui, consigo compactar numerado,fazer backup com usuário especifico, mas não consigo agendar em 24 horas, sem ter que criar um arquivo no crontab.
Alguém sabe se tem como?
quemsou=`whoami`

   if [ "$quemsou" != "backupuser" ];then
    echo "Somente paulo pode disparar uma rotina de backup. Abortando..."
    exit
else
DIR_ORIG="/home/dados"
DIR_DEST="/home/arquivos/"
BKP_NAME="backup`date +%d-%m_%H%M`.tgz"

# compactação do diretório de origem diretamente no diretório de destino
tar -czpf ${DIR_DEST}${BKP_NAME} ${DIR_ORIG}

# mensagem de resultado
echo "Seu backup foi realizado com sucesso."
echo "Diretório: ${DIR_ORIG}"
echo "Destino: ${DIR_DEST}${BKP_NAME}";
fi

irtigor

Uma saída (muito ruim), é criar um loop infinito para disparar a rotina. Use o cron ou similar (como o fcron).

filisteus

Citação de: irtigor online 27 de Novembro de 2010, 18:37
Uma saída (muito ruim), é criar um loop infinito para disparar a rotina. Use o cron ou similar (como o fcron).
Vc poderia me dizer como eu poderia adicionar isso no script?

bred81

Como assim "sem ter que criar um arquivo no crontab"?

Tá me dizendo que não consegue se não colocar a implementação do seu backup no cron?
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

filisteus

Citação de: bred81 online 27 de Novembro de 2010, 18:43
Como assim "sem ter que criar um arquivo no crontab"?

Tá me dizendo que não consegue se não colocar a implementação do seu backup no cron?
Não é isso? eu queria  saber se há forma de ser  feito com algum  código  no script

irtigor

Sabe direcionar a saída?

echo "Alguma coisa" > alguma_coisa.txt #Destrutivo (apaga)
echo "Alguma coisa" >> alguma_coisa.txt #Não destrutivo (adiciona)

Tem o tee também.

filisteus

Citação de: irtigor online 27 de Novembro de 2010, 19:16
Sabe direcionar a saída?

echo "Alguma coisa" > alguma_coisa.txt #Destrutivo (apaga)
echo "Alguma coisa" >> alguma_coisa.txt #Não destrutivo (adiciona)

Tem o tee também.
huum entendi! seria assim?
echo "0 1 * * * /bin/bash  /home/backupuser/backup.sh" >> /tmp/crontab.hyk0DM/crontab

Nesse caso meu backup seria feito a toda 1 hora da manhã