Monitoramento de usuário via screenshots
Publicado por Maicon Souza (última atualização em 18/10/2016)
[ Hits: 3.475 ]
Homepage: ---
Esse script foi criado devido a uma necessidade real. Na empresa onde trabalho foi necessário criar uma rotina de monitoramento das atividades dos usuários. Foi definido que screenshots deveriam ocorrer a cada "X" segundos. Tentei dividir o script em funções, para facilitar o entendimento.
Como funciona:
* Após o logon do usuário, o script fica tirando screenshots e envia por FTP para um local definido (exemplo: um servidor em sua rede).
Pacotes necessários:
# apt-get install imagemagick -y
# apt-get install xdotool -y
# apt-get install gnome-schedule -y
# apt-get install mysql-server
*** Provavelmente seu servidor de banco de dados estará em outra máquina.
Se os pacotes não forem instalados no Desktop do usuário, os comandos do script não serão executados corretamente.
Configurações:
Dentro do pacote compactado, existem dois arquivos (.sql, .sh).
1 - Suba a base de dados "so_linux_configs", para o MYSQL.
2 - Edite o arquivo "Start_Screen", alterando o endereço do banco e suas credenciais de acesso.
3 - Usando o phpMyAdmin, edite a tabela "lx_brmonitor_parametros", respeitando os parâmetros abaixo:
SENHA_ZIP = Senha usada nos arquivos compactados;
FREQUENCIA = Frequência em que os Screenshots serão tirados (em segundos);
LIMPAR_DIR_APOS = Quantidade de dias em que os Screenshots ficarão no disco local (máquina do usuário);
USER_FTP = Usuário FTP;
SENHA_FTP = Senha FTP;
IP_FTP = IP do FTP, para onde serão enviados os screenshots;
4 - Crie uma tarefa no Gnome Schedule, fazendo com que o script rode a cada minuto (* * * * *).
*** Em breve espero gravar um vídeo, mostrando o funcionamento.
#!/bin/bash # Autor Maicon Souza # Script Screenshots Ubuntu # Data: 11-08-16 USER_SENHA_BD(){ ###### INFORME AQUI O USER E SENHA DE ACESSO AO BANCO ###### USER_BANCO="admin" SENHA_BANCO="BDSenha" IP_BD="192.168.7.116" BASE="so_linux_configs" ###### INFORME AQUI O USER E SENHA DE ACESSO AO BANCO ###### } CONFIGS(){ RmOk="-1" #Dia Atual DiaAtual=`date +%d-%m-%Y` # HORA ATUAL HoraAtual=`date +%r` # HORA ATUAL NOME DIR HoraNomeDir=`echo $HoraAtual | sed 's/:/-/g'` # CONT Cont="1" # CRIA DIR OCULTO UserLogado=`id | cut -f2 -d "(" | cut -f1 -d ")"` mkdir /home/$UserLogado/.BRMONITOR/ mkdir /home/$UserLogado/.BRMONITOR/$DiaAtual DestPNG=/home/$UserLogado/.BRMONITOR/$DiaAtual # DIR TMP mkdir /home/$UserLogado/.TMP mkdir /home/$UserLogado/.TMP2 DIRTMP=/home/$UserLogado/.TMP DIRTMP2=/home/$UserLogado/.TMP2 # ARQ ZIP ARQZIP="LOG-BRMONITOR-$UserLogado-$DiaAtual-($HoraNomeDir).zip" # DADOS ZIP DADOS=$DIRTMP } LIMPAR_DIR(){ rm -Rf /home/$UserLogado/.TMP if [ $TOTALDIAS -gt $QTDIAS ] ; then rm -Rf /home/$UserLogado/.TMP2 rm -Rf /home/$UserLogado/.BRMONITOR LIMPAR_TMP_DIAS RmOk=$? fi } LOG_FIM(){ # USADO NOS LOGS DATAFIN=`date +%c` } CONSULTA_BD(){ USER_SENHA_BD # USER FTP USER_FTP=$(mysql $BASE -h $IP_BD -u $USER_BANCO -p$SENHA_BANCO -e "select valor from lx_brmonitor_parametros where Nome = 'USER_FTP' and ativo = '1';" | sed '1d') # SENHA FTP SENHA_FTP=$(mysql $BASE -h $IP_BD -u $USER_BANCO -p$SENHA_BANCO -e "select valor from lx_brmonitor_parametros where Nome = 'SENHA_FTP' and ativo = '1';" | sed '1d') # IP FTP IP_FTP=$(mysql $BASE -h $IP_BD -u $USER_BANCO -p$SENHA_BANCO -e "select valor from lx_brmonitor_parametros where Nome = 'IP_FTP' and ativo = '1';" | sed '1d') # SENHA ZIP SENHA_CRIPTOG=$(mysql $BASE -h $IP_BD -u $USER_BANCO -p$SENHA_BANCO -e "select valor from lx_brmonitor_parametros where Nome = 'SENHA_ZIP' and ativo = '1';" | sed '1d') # FREQUENCIA DOS PRINTS FREQUENCIA=$(mysql $BASE -h $IP_BD -u $USER_BANCO -p$SENHA_BANCO -e "select valor from lx_brmonitor_parametros where Nome = 'FREQUENCIA' and ativo = '1';" | sed '1d') # TOTAL DE DIAS (DELETE PNG) TOTALDIAS=$(mysql $BASE -h $IP_BD -u $USER_BANCO -p$SENHA_BANCO -e "select COUNT(DISTINCT(DATE_FORMAT(Data, '%d/%m/%Y'))) from lx_brmonitor_tmp_total_dias WHERE Colaborador = '$UserLogado';" | sed '1d') # QUANTIDADE DE DIAS Q AS IMAGENS SERAO MANTIDAS QTDIAS=$(mysql $BASE -h $IP_BD -u $USER_BANCO -p$SENHA_BANCO -e "select valor from lx_brmonitor_parametros where Nome = 'LIMPAR_DIR_APOS' and ativo = '1';" | sed '1d') } GRAVA_HIST(){ USER_SENHA_BD (mysql $BASE -h $IP_BD -u $USER_BANCO -p$SENHA_BANCO -e "INSERT INTO lx_brmonitor_historico_geracao (Colaborador, Data, NomeZIP) VALUES ('$UserLogado',NOW(),'$ARQZIP');") (mysql $BASE -h $IP_BD -u $USER_BANCO -p$SENHA_BANCO -e "INSERT INTO lx_brmonitor_tmp_total_dias (Colaborador, Data) VALUES ('$UserLogado',NOW());") # GRAVA HISTORICO DELETE if [ $RmOk -eq 0 ] ; then (mysql $BASE -h $IP_BD -u $USER_BANCO -p$SENHA_BANCO -e "INSERT INTO lx_brmonitor_historico (Colaborador, Data, Resultado) VALUES ('$UserLogado',NOW(),'DIRETORIO LOCAL LIMPO APOS $QTDIAS DIAS');") fi } LIMPAR_TMP_DIAS(){ USER_SENHA_BD (mysql $BASE -h $IP_BD -u $USER_BANCO -p$SENHA_BANCO -e "DELETE FROM lx_brmonitor_tmp_total_dias WHERE Colaborador = '$UserLogado';") } ZIPAR_ARQS_FULL(){ sleep 2 sync zip -r9 -e -P $SENHA_CRIPTOG "$DIRTMP2/$ARQZIP" "$DADOS" erroZIP=$? # USADO NOS LOGS DATAIN=`date +%c` ENVIA_FTP if [ $erroZIP -eq 0 ] ; then LIMPAR_DIR GRAVA_HIST fi } ENVIA_FTP(){ sleep 2 #ftp -in $IP_FTP $PORTAFTP <<EOF ftp -in $IP_FTP 21 <<EOF user $USER_FTP $SENHA_FTP bin lcd $DIRTMP2 put $ARQZIP quit EOF erro=$? } EXEC_SCREENSHOT(){ TotalMin=$((50/$FREQUENCIA)) while [ $Cont -le $TotalMin ] do NomeArqPNG=$(date --iso-8601=seconds).png import -window root $DestPNG/$NomeArqPNG ImportOk=$? cp $DestPNG/$NomeArqPNG $DIRTMP sleep $FREQUENCIA let Cont++ done # ZIPAR P/ ENVIO FTP PNG ZIPAR_ARQS_FULL } CONFIGS CONSULTA_BD EXEC_SCREENSHOT exit 0
Restaurar backup de uma conta cpanel mesmo que ela já exista
Script Administração SquidFacil Ubuntu 11.10
Disponibilidade de impressoras de rede
Mantenha seu relógio ajustado 2.0
Pra quem contribui com artigos e dicas (0)
Arch Linux - Guia para Iniciantes (5)
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
O Que Fazer Após Instalar Ubuntu 25.04
O Que Fazer Após Instalar Fedora 42
Debian 12 -- Errata - Correções de segurança
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Pra quem contribui com artigos e dicas (0)
Monitor fora de escala ao bootar sistema (9)
NAT LoopBack - Hairpin NAT (2)
Alguém poderia me ajudar a escolher peças pra montar um desktop? (18)