{"id":20463326,"url":"https://github.com/fflch/monitoring","last_synced_at":"2025-04-13T08:10:40.099Z","repository":{"id":111584270,"uuid":"546004925","full_name":"fflch/monitoring","owner":"fflch","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-19T18:28:50.000Z","size":1208,"stargazers_count":0,"open_issues_count":1,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-27T00:04:52.459Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fflch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-05T11:02:25.000Z","updated_at":"2024-11-19T18:28:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"4fe97fd5-c463-429f-90dc-8b3be77f4f26","html_url":"https://github.com/fflch/monitoring","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fflch%2Fmonitoring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fflch%2Fmonitoring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fflch%2Fmonitoring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fflch%2Fmonitoring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fflch","download_url":"https://codeload.github.com/fflch/monitoring/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248681491,"owners_count":21144700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest"],"created_at":"2024-11-15T13:10:35.495Z","updated_at":"2025-04-13T08:10:40.093Z","avatar_url":"https://github.com/fflch.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"- Exemplo de requisição via shell da mesma máquina que está o laravel:\n\n```sh\n   curl --header \"Authorization: 123\"         \\\n     -H \"Content-Type: application/json\"      \\\n     -X POST http://127.0.0.1:8000/api/status  \\\n     -d '{\n            \"username\": \"123456\",\n            \"hostname\": \"linux008029845\",\n            \"login_at\": \"2010-09-20 12:15\"\n          }'              \n```\n\nSubindo server para escutar de todos ips da máquina:\n\n    php artisan serve --host=0.0.0.0:8000\n\n- Exemplo de requisição de dentro da máquina virtual para a máquina 192.168.40.1:\n\n```sh\n   curl --header \"Authorization: 123\"         \\\n     -H \"Content-Type: application/json\"      \\\n     -X POST http://127.0.0.1:8000/api/status  \\\n     -d '{\n            \"username\": \"123456\",\n            \"hostname\": \"linux008029845\",\n            \"login_at\": \"2010-09-20 12:15\"\n          }'              \n```\n- Exemplo de script que coleta quem está logado:\n\n```sh\nwho=$(who | grep -w tty7)\nname=$(echo $who | cut -d' ' -f1)\ndata=$(echo $who | cut -d' ' -f3)\nhora=$(echo $who | cut -d' ' -f4)\nhostname=$(hostname)\nip=$(ip a | grep inet | grep eth1 | cut -d' ' -f6 | cut -d'/' -f1)\n\ncurl --header \"Authorization: 123\"         \\\n     -H \"Content-Type: application/json\"      \\\n     -X POST http://127.0.0.1:8000/api/status  \\\n     -d \"{\n          \\\"hostname\\\": \\\"$hostname\\\",\n          \\\"ip\\\": \\\"$ip\\\",\n          \\\"username\\\": \\\"$name\\\",\n           \\\"login_at\\\": \\\"$data $hora\\\"\n         }\"\n```\n\n- Exemplo feito com ricardo:\n```sh\ncurl --header \"Authorization: 123\"         \\\n     -H \"Content-Type: application/json\"      \\\n     -X POST http://127.0.0.1:8000/api/status  \\\n     -d \"{\n          \\\"hostname\\\": \\\"008.044821\\\",\n          \\\"ip\\\": \\\"10.10.10.1\\\",\n          \\\"username\\\": \\\"brunao\\\",\n           \\\"login_at\\\": \\\"2010-09-20 12:15\\\"\n         }\"\n```\n\nlembre que para funcionar é necessario adicionar na linha 'APP_URL=' do arquivo .env o ip correto 127.0.0.1:8000\n\n\n\n- Outro exemplo de script que coleta os dados de quem está logado só que coleta um pouco mais de informações\n```sh\nwho=$(who | grep -w tty7)\nname=$(echo $who | cut -d' ' -f1)\ndata=$(echo $who | cut -d' ' -f3)\nhora=$(echo $who | cut -d' ' -f4)\nhostname=$(hostname)\nip=$(ip a | grep inet | grep eth1 | cut -d' ' -f6 | cut -d'/' -f1)\n\n#o que está acima está no README do monitoring e é a forma através da qual\n#nós conseguimos armazenar dentro do sistema as hostname, ip, username e o\n#login_at do computador.\n\n\n#agora vamos tentar armazenar as informações sobre o teclado, mouse e tela\n#do computador respectivamente\n\nteclado=$(ls /dev/input/by-id | grep -i keyboard)\nmouse=$(ls /dev/input/by-id | grep -i mouse)\n#aqui com o mouse temos um problema que o linux (da poha minha maquina pelo\n#menos)retorna dois valores nessa poha um associado ao evento do mouse e outro\n#associado ao mouse em si se o mesmo problema aparecer para você eu sugiro\n#que execute um | grep -v ('event') para tirar o evento do mouse o \n#comando então ficaria assim:\nmouse=$(ls /dev/input/by-id | grep -i 'mouse' | grep -v 'event')\nmonitor=$(xrandr | grep ' connected')\n\n\n#ai é só executar a mesma poha de sempre\n\n\ncurl --header \"Authorization: 123\"         \\\n     -H \"Content-Type: application/json\"      \\\n     -X POST http://127.0.0.1:8000/api/status  \\\n     -d \"{\n          \\\"hostname\\\": \\\"$hostname\\\",\n          \\\"ip\\\": \\\"$ip\\\",\n          \\\"username\\\": \\\"$name\\\",\n          \\\"login_at\\\": \\\"$data $hora\\\"\n          \\\"teclado\"\\\": \\\"$teclado\"\n          \\\"mouse\"\\\": \\\"$mouse\"\n          \\\"monitor\"\\\": \\\"$monitor\"\n         }\"\n\n```\n- exemplo de curl feito sob influencia octavio\n\n```sh\ncurl --header \"Authorization: 123\"         \\\n     -H \"Content-Type: application/json\"      \\\n     -X POST http://127.0.0.1:8000/api/status  \\\n     -d \"{\n          \\\"hostname\\\": \\\"008.044821\\\",\n          \\\"ip\\\": \\\"10.10.10.1\\\",\n          \\\"username\\\": \\\"brunao\\\",\n          \\\"login_at\\\": \\\"2010-09-20 12:15\\\",\n          \\\"teclado\\\": \\\"TecladissmoLenovo\\\",\n          \\\"mouse\\\": \\\"MoussissimoMultilazer\\\",\n          \\\"monitor\\\": \\\"MonitorissimoSansung\\\"\n         }\"\n```\n\n- 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:\n\n1: instale os pacotes que fazem o comando funcionar\n```sh\nsudo apt update\nsudo apt install dbus-x11\n```\n2: 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:\n```sh\nexport $(dbus-launch)\n```\n3: (opcional) Verificar se a váriável de ambiente foi configurada corretamente:\n```sh\necho $DBUS_SESSION_BUS_ADDRESS\n```\nEle deve devolver algo como isso aqui:\n\nunix:path=/tmp/dbus-LLuEMsqqg0,guid=a5cfb93ce0d8c86dec45163b672c3147\n\n4: 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:\n\n```sh\ncinnamon-screensaver-command -q\n```\nSe a resposta for \"A proteção de tela está inativa\", significa que a tela não está bloqueada.\nSe a resposta for \"A proteção de tela está ativa\", significa que a tela está bloqueada.\n\n\n5: 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\n```sh\nStatusTelaBloqueio=$(cinnamon-screensaver-command -q)\n\nif [[ \"$StatusTelaBloqueio\" == \"A proteção de tela está ativa\" ]]; then\n    logged_at=\"o usuario não deslogou\"  # A tela de bloqueio está ativa então e o usuario esqueceu de deslogar\nelse\n    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\nfi\n\n```\n\n6: Se quiser checar o valor da variável logged_at você pode executar a seguinte linha de comando:\n\n```sh\n\necho $logged_at\n\n```\n\n6: 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\n#lembrando que só vai funcionar todos os comandos se tiver conseguido seguir cada um desses passos\n#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\n\n```sh\nwho=$(who | grep -w tty7)\nname=$(echo $who | cut -d' ' -f1)\ndata=$(echo $who | cut -d' ' -f3)\nhora=$(echo $who | cut -d' ' -f4)\nhostname=$(hostname)\nip=$(ip a | grep inet | grep eth1 | cut -d' ' -f6 | cut -d'/' -f1)\nteclado=$(ls /dev/input/by-id | grep -i keyboard)\nmouse=$(ls /dev/input/by-id | grep -i 'mouse' | grep -v 'event')\nmonitor=$(xrandr | grep ' connected')\nStatusTelaBloqueio=$(cinnamon-screensaver-command -q)\nif [[ \"$StatusTelaBloqueio\" == \"A proteção de tela está ativa\" ]]; then\n    logged_at=\"o usuario não deslogou\"  # A tela de bloqueio está ativa então e o usuario esqueceu de deslogar\nelse\n    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\nfi\n\n\ncurl --header \"Authorization: 123\"         \\\n     -H \"Content-Type: application/json\"      \\\n     -X POST http://127.0.0.1:8000/api/status  \\\n     -d \"{\n          \\\"hostname\\\": \\\"$hostname\\\",\n          \\\"ip\\\": \\\"$ip\\\",\n          \\\"username\\\": \\\"$name\\\",\n          \\\"login_at\\\": \\\"$data $hora\\\",\n          \\\"teclado\\\": \\\"$teclado\\\",\n          \\\"mouse\\\": \\\"$mouse\\\",\n          \\\"monitor\\\": \\\"$monitor\\\",\n          \\\"logged_at\\\": \\\"$logged_at\\\"\n         }\"\n\n```\n\n- 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffflch%2Fmonitoring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffflch%2Fmonitoring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffflch%2Fmonitoring/lists"}