Script de shell para verificar repositorios públicos de Github y notificar

Script de shell para verificar repositorios públicos de Github y notificar

GitHub es la compañía líder para el desarrollo de software y el control de versiones utilizando Git. Que nos permite crear repositorios públicos y privados. Ambos tienen sus propios beneficios. Los repositorios privados están asegurados con autenticación, mientras que los repositorios públicos son accesibles para todos. A veces, nosotros o nuestros equipos hacemos repositorios con acceso público que pueden contener datos confidenciales. Es una buena idea configurar un script que nos notifique de los repositorios que dejan el acceso público.

En este tutorial, he creado un script de shell que verifica todos los repositorios públicos bajo una cuenta de GitHub y envía un correo electrónico de notificación. El script se puede programar bajo los cronjobs para automatizar esto.

Requisito previo

Este script usa utilidades de línea de comandos curl y sendemail. Así que asegúrese de haber instalado ambos paquetes en su sistema.

sudo apt instalación curl sendemail  

El comando curl se usa para llamar a la API GitHub y SendEmail se usa para enviar correo electrónico a través del servidor SMTP.

Crear un script de shell

Ya he creado un script bash para ti. Simplemente puede copiar el script y escribirlo en un archivo en su sistema.

  1. Cree un script de shell en su sistema y edítelo en su editor de texto favorito:
    nano check-github-presublic-repos.mierda  
  2. Copie el contenido a continuación y péguelo en el archivo editado. #!/usr/bin/env Bash ## Establezca su nombre de usuario o nombre de organización github github_user = "tecadmin" ## archivos temporales y ubicación binaria curl temp_file = "/tmp/out.txt "mail_log ="/tmp/github-mail.log "curl_bin ="/usr/bin/curl "## detalles de SMTP para enviar notificaciones por correo electrónico. Smtp_host = "correo electrónico-smtp.US-East-1.amazonaws.com "smtp_port =" 587 "smtp_user =" xxxxxxxxxxxxxxxxx "smtp_pass =" xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx "correo electrónico_from =" notificació[email protected] "correo electrónico_to =" su correo electró[email protected] "## El guión comienza aquí. ## Descubra todos los repositorios de GitHub a los que se pueden acceder públicamente. $ Curl_bin -s https: // API.github.com/users/$ github_user/repos | Grep "https: // github.com/[A-ZA-Z0-9-]*/[A-ZA-Z0-9-]*.git "> $ temp_file ## Envíe una notificación por correo electrónico si se encuentra un repositorio público si [$? -eq 0]; Entonces echo -e "querido admin \ n"> $ mail_log echo -e "encontramos pocos repositorios públicos en su cuenta de Github ($ github_user) \ n" >> $ mail_log count = 1 while lee línea; do repo_url = "echo $ línea | Cut -d": "-f2,3 | Cut -d", "-f1" echo "count. $ Repo_url ">> $ mail_log ((count ++)) hecho> $ mail_log ## Modifique el asunto de correo electrónico según su conveniencia email_subject =" ADVERTENCIA: Repo público de GitHub encontrado "## Enviar el correo electrónico de notificación. El sistema debe haber instalado "sendEmail" (no sendmail) ## comando en su sistema. Cat $ mail_log | sendEmail -l /tmp /correo electrónico.LOG \ -F $ CORREAX_FROM \ -U $ CORREA ELECTER_SUBEJET \ -T $ CORREAX_TO \ -S $ SMTP_HOST: $ Smtp_port \ -o tls = yes \ -xu $ smtp_user \ -xp \ -xp $ Smtp_Pass fi ## Uncomment a continuación para imprimir el correo electrónico como salida #cat $ mail_log
    12345678910111213141516171819202122223242526272829303132333435363738394041424344444444444495515253544#!/usr/bin/env Bash ## Establezca su nombre de usuario GitHub u organización NameGithub_user = "Tecadmin" ## Archivos temporales y ubicación binaria BinaryTemp_File = "/tmp/out.txt "mail_log ="/tmp/github-mail.log "curl_bin ="/usr/bin/curl "## detalles de SMTP para enviar notificaciones por correo electrónico. Smtp_host = "correo electrónico-smtp.US-East-1.amazonaws.com "smtp_port =" 587 "smtp_user =" xxxxxxxxxxxxxxxxx "smtp_pass =" xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx "ick_from =" [correo electrónico] "correo electrónico_to =". ## Descubra todos los repositorios de GitHub a los que se pueden acceder públicamente.$ Curl_bin -s https: // API.github.com/users/$ github_user/repos | Grep "https: // github.com/[A-ZA-Z0-9-]*/[A-ZA-Z0-9-]*.git "> $ temp_file ## Envíe una notificación por correo electrónico si un repositorio público se encuentra [$? -eq 0]; Entonces echo -e "querido admin \ n"> $ mail_log echo -e "encontramos pocos repositorios públicos en su cuenta de Github ($ github_user) \ n" >> $ mail_log count = 1 while lee línea; do repo_url = 'echo $ línea | corte -d ":" -f2,3 | cortar -d "," -f1 'echo "count. $ Repo_url ">> $ mail_log ((count ++)) listo < $TEMP_FILE echo -e "\n\n--\nThanks" >> $ Mail_log ## Modifique el asunto del correo electrónico según su conveniencia email_subject = "ADVERTENCIA: GitHub Repo público encontrado" ## Enviar el correo electrónico de notificación. El sistema debe haber instalado "sendEmail" (no sendmail) ## comando en su sistema. Cat $ mail_log | sendEmail -l /tmp /correo electrónico.LOG \ -F $ CORREAX_FROM \ -U $ CORREA ELECTER_SUBEJET \ -T $ CORREAX_TO \ -S $ SMTP_HOST: $ Smtp_port \ -o tls = yes \ -xu $ smtp_user \ -xp \ -xp $ Smtp_pass fi ## uncomment a continuación para imprimir el correo electrónico como salida#cat $ mail_log

  3. Actualice la ID "GitHub_user" con su usuario o nombre de organización de GitHub. Además, actualice los detalles de SMTP para recibir notificaciones por correo electrónico.
  4. Presione "Ctrl + O" para escribir los cambios y luego "Ctrl + X" para dejar el editor. Luego haga que el script de shell sea ejecutable con el siguiente comando.
    chmod +x check-github-público-re-repos.mierda  
  5. Ahora, tu script está listo para ejecutar. Simplemente puede ejecutar su script directamente en el terminal. Para imprimir los resultados en la pantalla, puede desenchufar la última línea del script.
    Bash Check-GitHub-Public-Repos.mierda  

En la ejecución exitosa, si el script encontró algún repositorio público en su cuenta de GitHub. Recibirá una notificación por correo electrónico en su buzón.

Programe guión con crontab

Puede programar este script para ejecutar diariamente, semanalmente o dos veces por semana. El siguiente ejemplo de Crontab ejecutará este script diariamente a las 12:00 a.m.

## Verifique los repositorios públicos de Github 0 0 * * * Bash Check-GitHub-Public-Repos.mierda
12## Verifique los repositorios públicos de GitHub0 0 * * * Bash Check-GitHub-Public-Repos.mierda

Conclusión

Es más importante mantener nuestro trabajo duro seguro. Este script lo alertará sobre los repositorios púbicos en su cuenta de Github. Puede modificar el script según sus requisitos. También puede proporcionar su mejora a través de los comentarios. También proporcione sus comentarios sobre este script, lo que nos anima a escribir más.