Monitoramento de usuário via screenshots
Publicado por Maicon Souza (última atualização em 18/10/2016)
[ Hits: 3.750 ]
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
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - ENVIA MSG CASO O USUÁRIO PASSE 90% DA SUA QUOTA
Criação de usuario / gerando senha automatica
Plugin do Nagios em Shell Script
Papagaiando o XFCE com temas e recursos
WhatsApp com Chamadas no Linux via Waydroid
XFCE - quase um Gnome ou Plasma mas muito mais leve
LXQT - funcional para máquinas pererecas e usuários menos exigentes
Removendo entradas de boot UEFI "fantasmas" via terminal
Atualizações de Segurança Automáticas no Debian
Como cortar as partes de um vídeo com passagens de áudio em branco
Tiling automático no KDE Plasma
SNMP Scan no OCS Inventory só funciona com HTTPS corretamente configurado
Tentativa de instalar Linux em um notebook HP 246 G6 (0)
Reflexão sobre a sobrevivência do Gentoo Linux (4)
Alguém tem que acabar com ANATEL!!! (1)
GOG confirma suporte oficial ao sistema Linux: "o trabalho começo... (4)









