Skip to content

fflch/monitoring

Repository files navigation

  • Exemplo de requisição via shell da mesma máquina que está o laravel:
   curl --header "Authorization: 123"         \
     -H "Content-Type: application/json"      \
     -X POST http://127.0.0.1:8000/api/status  \
     -d '{
            "username": "123456",
            "hostname": "linux008029845",
            "login_at": "2010-09-20 12:15"
          }'              

Subindo server para escutar de todos ips da máquina:

php artisan serve --host=0.0.0.0:8000
  • Exemplo de requisição de dentro da máquina virtual para a máquina 192.168.40.1:
   curl --header "Authorization: 123"         \
     -H "Content-Type: application/json"      \
     -X POST http://127.0.0.1:8000/api/status  \
     -d '{
            "username": "123456",
            "hostname": "linux008029845",
            "login_at": "2010-09-20 12:15"
          }'              
  • Exemplo de script que coleta quem está logado:
who=$(who | grep -w tty7)
name=$(echo $who | cut -d' ' -f1)
data=$(echo $who | cut -d' ' -f3)
hora=$(echo $who | cut -d' ' -f4)
hostname=$(hostname)
ip=$(ip a | grep inet | grep eth1 | cut -d' ' -f6 | cut -d'/' -f1)

curl --header "Authorization: 123"         \
     -H "Content-Type: application/json"      \
     -X POST http://127.0.0.1:8000/api/status  \
     -d "{
          \"hostname\": \"$hostname\",
          \"ip\": \"$ip\",
          \"username\": \"$name\",
           \"login_at\": \"$data $hora\"
         }"
  • Exemplo feito com ricardo:
curl --header "Authorization: 123"         \
     -H "Content-Type: application/json"      \
     -X POST http://127.0.0.1:8000/api/status  \
     -d "{
          \"hostname\": \"008.044821\",
          \"ip\": \"10.10.10.1\",
          \"username\": \"brunao\",
           \"login_at\": \"2010-09-20 12:15\"
         }"

lembre que para funcionar é necessario adicionar na linha 'APP_URL=' do arquivo .env o ip correto 127.0.0.1:8000

  • Outro exemplo de script que coleta os dados de quem está logado só que coleta um pouco mais de informações
who=$(who | grep -w tty7)
name=$(echo $who | cut -d' ' -f1)
data=$(echo $who | cut -d' ' -f3)
hora=$(echo $who | cut -d' ' -f4)
hostname=$(hostname)
ip=$(ip a | grep inet | grep eth1 | cut -d' ' -f6 | cut -d'/' -f1)

#o que está acima está no README do monitoring e é a forma através da qual
#nós conseguimos armazenar dentro do sistema as hostname, ip, username e o
#login_at do computador.


#agora vamos tentar armazenar as informações sobre o teclado, mouse e tela
#do computador respectivamente

teclado=$(ls /dev/input/by-id | grep -i keyboard)
mouse=$(ls /dev/input/by-id | grep -i mouse)
#aqui com o mouse temos um problema que o linux (da poha minha maquina pelo
#menos)retorna dois valores nessa poha um associado ao evento do mouse e outro
#associado ao mouse em si se o mesmo problema aparecer para você eu sugiro
#que execute um | grep -v ('event') para tirar o evento do mouse o 
#comando então ficaria assim:
mouse=$(ls /dev/input/by-id | grep -i 'mouse' | grep -v 'event')
monitor=$(xrandr | grep ' connected')


#ai é só executar a mesma poha de sempre


curl --header "Authorization: 123"         \
     -H "Content-Type: application/json"      \
     -X POST http://127.0.0.1:8000/api/status  \
     -d "{
          \"hostname\": \"$hostname\",
          \"ip\": \"$ip\",
          \"username\": \"$name\",
          \"login_at\": \"$data $hora\"
          \"teclado"\": \"$teclado"
          \"mouse"\": \"$mouse"
          \"monitor"\": \"$monitor"
         }"
  • exemplo de curl feito sob influencia octavio
curl --header "Authorization: 123"         \
     -H "Content-Type: application/json"      \
     -X POST http://127.0.0.1:8000/api/status  \
     -d "{
          \"hostname\": \"008.044821\",
          \"ip\": \"10.10.10.1\",
          \"username\": \"brunao\",
          \"login_at\": \"2010-09-20 12:15\",
          \"teclado\": \"TecladissmoLenovo\",
          \"mouse\": \"MoussissimoMultilazer\",
          \"monitor\": \"MonitorissimoSansung\"
         }"
  • Eu fiz um monte de coisa na minha maquina pessoal para tentar fazer um script que procura capturar numa variável o estado de uma veriável e armazenar numa variável o estado da tela de bloqueio no cinnamon:

1: instale os pacotes que fazem o comando funcionar

sudo apt update
sudo apt install dbus-x11

2: Definir a variável de ambiente DBUS_SESSION_BUS_ADDRESS: Após a instalação, você precisa configurar a variável de ambiente que permite que o sistema acesse o barramento de sessão D-Bus. Execute o comando abaixo para configurá-la:

export $(dbus-launch)

3: (opcional) Verificar se a váriável de ambiente foi configurada corretamente:

echo $DBUS_SESSION_BUS_ADDRESS

Ele deve devolver algo como isso aqui:

unix:path=/tmp/dbus-LLuEMsqqg0,guid=a5cfb93ce0d8c86dec45163b672c3147

4: A partir de agora você será capaz de executar o comando do cinnamon que descobre se a tela está ativa ou inativa. Então execute:

cinnamon-screensaver-command -q

Se a resposta for "A proteção de tela está inativa", significa que a tela não está bloqueada. Se a resposta for "A proteção de tela está ativa", significa que a tela está bloqueada.

5: A partir de agora tentamos montar um script que atribua o valor a variável logged_at que caso o retorno do comando cinnamon-screensaver-command -q seja A proteção de tela está ativa e outro valor caso a proteção de tela não esteja ativa

StatusTelaBloqueio=$(cinnamon-screensaver-command -q)

if [[ "$StatusTelaBloqueio" == "A proteção de tela está ativa" ]]; then
    logged_at="o usuario não deslogou"  # A tela de bloqueio está ativa então e o usuario esqueceu de deslogar
else
    logged_at=$(last -x | grep 'still logged in' -v | head -n 1 | awk '{print $6, $7, $8, $9}') # A tela foi bloqueada, então o usuário não deslogou
fi

6: Se quiser checar o valor da variável logged_at você pode executar a seguinte linha de comando:

echo $logged_at

6: Agora que conseguimos atribuir valores para variáveis locais evitando os problemas podemos tentar incluir ele a variável naquele exemplo acima que coleta um pouco mais de dados #lembrando que só vai funcionar todos os comandos se tiver conseguido seguir cada um desses passos #E quando rodar o comando no computador não esqueça de adptar um pouco os comando pq do jeito que estão é provavel que apareça algo em branco

who=$(who | grep -w tty7)
name=$(echo $who | cut -d' ' -f1)
data=$(echo $who | cut -d' ' -f3)
hora=$(echo $who | cut -d' ' -f4)
hostname=$(hostname)
ip=$(ip a | grep inet | grep eth1 | cut -d' ' -f6 | cut -d'/' -f1)
teclado=$(ls /dev/input/by-id | grep -i keyboard)
mouse=$(ls /dev/input/by-id | grep -i 'mouse' | grep -v 'event')
monitor=$(xrandr | grep ' connected')
StatusTelaBloqueio=$(cinnamon-screensaver-command -q)
if [[ "$StatusTelaBloqueio" == "A proteção de tela está ativa" ]]; then
    logged_at="o usuario não deslogou"  # A tela de bloqueio está ativa então e o usuario esqueceu de deslogar
else
    logged_at=$(last -x | grep 'still logged in' -v | head -n 1 | awk '{print $6, $7, $8, $9}') # A tela foi bloqueada, então o usuário não deslogou
fi


curl --header "Authorization: 123"         \
     -H "Content-Type: application/json"      \
     -X POST http://127.0.0.1:8000/api/status  \
     -d "{
          \"hostname\": \"$hostname\",
          \"ip\": \"$ip\",
          \"username\": \"$name\",
          \"login_at\": \"$data $hora\",
          \"teclado\": \"$teclado\",
          \"mouse\": \"$mouse\",
          \"monitor\": \"$monitor\",
          \"logged_at\": \"$logged_at\"
         }"
  • Agora nós vamos mudar o script. Vamos adicionar o campo dos fones de ouvido e remover o logged-at pois isso está causando muitos problemas e vamos encontrar uma outra forma de descobrir de atribuir a cor azul para os computadores de uma maneira geral para caracteriza-los quando estiverem disponíveis para uso na proaluno.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages