Script de shell para verificar os repositórios públicos do github e notificar

Script de shell para verificar os repositórios públicos do github e notificar

O GitHub é a empresa líder de desenvolvimento de software e controle de versão usando Git. Isso nos permite criar repositórios públicos e também privados. Ambos têm seus próprios benefícios. Os repositórios privados são garantidos com autenticação, enquanto os repositórios públicos são acessíveis a todos. Às vezes, nós ou nossas equipes fazemos repositórios com acesso público que podem conter dados confidenciais. É uma boa ideia, configurar um script que nos notifica dos repositórios deixados de acesso público.

Neste tutorial, criei um script de shell que verifica todos os repositórios públicos em uma conta do Github e envia um email de notificação. O script pode ser agendado sob os cronjobs para automatizar isso.

Pré-requisito

Este script usa utilidades de linha de comando Curl e SendEmail. Portanto, verifique se você instalou os dois pacotes em seu sistema.

sudo apt install cutl sendemail  

O comando CURL é usado para ligar para a API do GitHub e o SendEmail é usado para enviar e -mail através do servidor SMTP.

Crie um script de shell

Eu já criei um script de bash para você. Você pode simplesmente copiar o script e escrevê -lo em um arquivo em seu sistema.

  1. Crie um script de shell em seu sistema e edite -o em seu editor de texto favorito:
    Nano Check-Github-Public-Repos.sh  
  2. Copie o conteúdo abaixo e cole -o no arquivo editado. #!/usr/bin/Env Bash ## Defina o nome de usuário do seu github ou o nome da organização github_user = "Tecadmin" ## Arquivos temporários e cacho de localização binária temp_file = "/tmp/out.txt "Mail_log ="/tmp/github-mail.Log "Curl_bin ="/usr/bin/curl "## SMTP Detalhes para enviar notificações por e -mail. Smtp_host = "email-smtp.US-EAST-1.Amazonaws.com "smtp_port =" 587 "smtp_user =" xxxxxxxxxxxxxxxx "smtp_pass =" xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_from = "Notificaçã[email protected] "email_to =" [email protected] "## script começa aqui. ## Descubra todos os repositórios do GitHub que são publicamente acessíveis. $ Curl_bin -s https: // api.Github.com/usuários/$ github_user/repositórios | Grep "https: // github.com/[a-za-z0-9-]*/[a-za-z0-9-]*.git "> $ temp_file ## Envie uma notificação por e -mail se um repositório público encontrado se [$? -eq 0]; Então echo -e "caro admin \ n"> $ Mail_log echo -e "Encontramos poucos repositórios públicos em sua conta do github ($ github_user) \ n" >> $ Mail_log contagem = 1 while line; do repo_url = "echo $ line | cut -d": "-f2,3 | cut -d", "-f1" echo "count. $ Repo_url ">> $ Mail_log ((count ++) done> $ Mail_log ## Modifique o assunto do email conforme sua conveniência email_subject =" Aviso: Github Public repo encontrado "## Enviar o e -mail de notificação. O sistema deve ter instalado "sendEmail" (não sendmail) ## comando em seu sistema. Cat $ Mail_log | SendEmail -l /tmp /email.log \ -f $ email_from \ -u $ email_subject \ -t $ email_to \ -s $ smtp_host: $ smtp_port \ -o tls = yes \ -xu $ smtp_us \ $ Smtp_pass fi ## Uncomment abaixo para imprimir o email como saída #cat $ Mail_log
    1234567891011121314151617181920212223242526272829303132333343536373839404142434444444748495051525354#!/usr/bin/Env Bash ## Defina o nome de usuário do seu github ou a organização namegithub_user = "Tecadmin" ## Arquivos temporários e Curl Bininary LocationTemp_file = "/tmp/out.txt "Mail_log ="/tmp/github-mail.Log "Curl_bin ="/usr/bin/curl "## SMTP Detalhes para enviar notificações por e -mail. Smtp_host = "email-smtp.US-EAST-1.Amazonaws.com"SMTP_PORT="587"SMTP_USER="XXXXXXXXXXXXXXX"SMTP_PASS="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"EMAIL_FROM="[email protected]"EMAIL_TO="[email protected]" ## Script begins here. ## Descubra todos os repositórios do GitHub que são publicamente acessíveis.$ Curl_bin -s https: // api.Github.com/usuários/$ github_user/repositórios | Grep "https: // github.com/[a-za-z0-9-]*/[a-za-z0-9-]*.git "> $ temp_file ## Envie uma notificação por email se um repositório público foundif [$? -eq 0]; Então echo -e "caro admin \ n"> $ Mail_log echo -e "Encontramos poucos repositórios públicos em sua conta do github ($ github_user) \ n" >> $ Mail_log contagem = 1 while line; do repo_url = 'echo $ line | corte -d ":" -f2,3 | corte -d "," -f1 'echo "count. $ Repo_url ">> $ Mail_log ((count ++)) feito < $TEMP_FILE echo -e "\n\n--\nThanks" >> $ Mail_log ## Modifique o assunto do email conforme sua conveniência e -mail_subject = "Aviso: repo público do github encontrado" ## Envie o email de notificação. O sistema deve ter instalado "sendEmail" (não sendmail) ## comando em seu sistema. Cat $ Mail_log | SendEmail -l /tmp /email.log \ -f $ email_from \ -u $ email_subject \ -t $ email_to \ -s $ smtp_host: $ smtp_port \ -o tls = yes \ -xu $ smtp_us \ $ Smtp_pass fi ## Uncomment abaixo para imprimir o email como saída#CAT $ Mail_log

  3. Atualize o ID "github_user" com o nome do usuário ou organização do github. Além disso, atualize os detalhes do SMTP para obter notificações por email.
  4. Pressione "Ctrl + O" para escrever as alterações e depois "Ctrl + X" para sair do editor. Em seguida, faça o script shell executável com o seguinte comando.
    Chmod +X Check-Github-Public-Repos.sh  
  5. Agora, seu script está pronto para correr. Você pode simplesmente executar seu script diretamente no terminal. Para imprimir os resultados na tela, você pode descomentar a última linha do script.
    Bash Check-Github-Public-Repos.sh  

Na execução bem -sucedida, se o script encontrou algum repositório público em sua conta do GitHub. Você receberá uma notificação por e -mail em sua caixa de correio.

Agendar um script com crontab

Você pode agendar este script para executar diariamente, semanalmente ou duas vezes por semana. O exemplo de Crontab a seguir executará este script diariamente às 12:00.

## Verifique os repositórios públicos do GitHub 0 0 * * * Bash Check-Github-Public-Repos.sh
12## Verifique os repositórios públicos do GitHub 0 0 * * * Bash Check-Github-Public-Repos.sh

Conclusão

É mais importante manter nosso trabalho duro seguro. Este script o alertará sobre os repositórios pubianos em sua conta do GitHub. Você pode modificar o script conforme seus requisitos. Você também pode fornecer seu aprimoramento através dos comentários. Forneça também seus comentários sobre este script, o que nos incentiva a escrever mais.