Script shell pour vérifier les référentiels publics GitHub et notifier

Script shell pour vérifier les référentiels publics GitHub et notifier

GitHub est la principale entreprise pour le développement de logiciels et le contrôle des versions à l'aide de Git. Qui nous permet de créer des référentiels publics ainsi que des référentiels publics. Les deux ont leurs propres avantages. Les référentiels privés sont sécurisés avec l'authentification, tandis que les référentiels publics sont accessibles à tous. Parfois, nous ou nos équipes faisons des référentiels avec un accès public qui peuvent contenir des données sensibles. C'est une bonne idée de configurer un script qui nous informe des référentiels laissés au public.

Dans ce tutoriel, j'ai créé un script shell qui vérifie tous les référentiels publics sous un compte GitHub et envoie un e-mail de notification. Le script peut être planifié sous les cronjobs pour automatiser cela.

Pré-requis

Ce script utilise des utilitaires de ligne de commande Curl et SendEmail. Alors assurez-vous que vous avez installé les deux packages sur votre système.

sudo apt install curl Sendemail  

La commande curl est utilisée pour appeler l'API GitHub et SendEmail est utilisé pour envoyer des e-mails via le serveur SMTP.

Créer un script shell

J'ai déjà créé un script bash pour vous. Vous pouvez simplement copier le script et l'écrire dans un fichier de votre système.

  1. Créez un script shell dans votre système et modifiez-le dans votre éditeur de texte préféré:
    Nano Check-Github-Public-Repos.shot  
  2. Copiez le contenu ci-dessous et collez-le dans le fichier édité. #!/ usr / bin / env bash ## Définissez votre nom d'utilisateur github ou nom d'organisation github_user = "tecadmin" ## Fichiers temporaires et curl Binary Location temp_file = "/ tmp / out.txt "Mail_log =" / tmp / github-Mail.log "curl_bin =" / usr / bin / curl "## Détails SMTP pour l'envoi de notifications par e-mail. Smtp_host = "e-mail-smtp.US-East-1.Amazonaws.com "smtp_port =" 587 "smtp_user =" xxxxxxxxxxxxxxxx "smtp_pass =" xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx "email_from =" notification @ exemple.com "email_to =" your-email @ exemple.com "## Le script commence ici. ## découvrez tous les référentiels GitHub qui sont accessibles publiquement. $ Curl_bin -s https: // api.github.com / utilisateurs / $ github_user / repos | grep "https: // github.com / [a-za-z0-9 -] * / [a-za-z0-9 -] *.git "> $ temp_file ## Envoyer une notification par e-mail si un référentiel public a trouvé si [$? -Eq 0]; puis echo -e "Dear admin \ n"> $ mail_log echo -e "Nous avons trouvé quelques référentiels publics dans votre compte GitHub ($ github_user) \ n" >> $ mail_log count = 1 while lise line; do repo_url = "echo $ line | cut -d": "-f2,3 | cut -d", "-f1" echo "count. $ Repo_url ">> $ mail_log ((count ++)) fait> $ mail_log ## modifier le sujet de messagerie conformément à votre commodité e-mail_subject =" Warning: github public repo trouvé "## Envoyer l'e-mail de notification. Le système doit avoir installé la commande "SendEmail" (pas Sendmail) ## sur votre système. Cat $ mail_log | SendEmail -l / tmp / e-mail.log \ -f $ email_from \ -u $ email_subject \ -t $ email_to \ -s $ smtp_host: $ smtp_port \ -x tls = oui \ -xu $ smtp_user \ -xp $ Smtp_pass fi ## Uncomment ci-dessous pour imprimer l'e-mail comme sortie #cat $ mail_log
    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354#!/ usr / bin / env-bash ## Définissez votre nom d'utilisateur github ou votre organisation nommegithub_user = "tecadmin" ## Files temporaires et curl binary locationTemp_file = "/ tmp / out.txt "Mail_log =" / tmp / github-Mail.log "curl_bin =" / usr / bin / curl "## Détails SMTP pour l'envoi de notifications par e-mail. Smtp_host = "e-mail-smtp.US-East-1.Amazonaws.com "smtp_port =" 587 "smtp_user =" xxxxxxxxxxxxxxx "smtp_pass =" xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx "email_from =". ## découvrez tous les référentiels GitHub qui sont accessibles publiquement.$ Curl_bin -s https: // api.github.com / utilisateurs / $ github_user / repos | grep "https: // github.com / [a-za-z0-9 -] * / [a-za-z0-9 -] *.git "> $ temp_file ## Envoyez une notification par e-mail si un référentiel public est fondé [$? -Eq 0]; puis echo -e "Dear admin \ n"> $ mail_log echo -e "Nous avons trouvé quelques référentiels publics dans votre compte GitHub ($ github_user) \ n" >> $ mail_log count = 1 while lise line; do repo_url = 'echo $ line | Cut -d ":" -f2,3 | Cut -d "," -f1 'echo "count. $ Repo_url ">> $ mail_log ((count ++)) fait < $TEMP_FILE echo -e "\n\n--\nThanks" >> $ Mail_log ## Modifiez le sujet de messagerie conformément à votre commodité Email_Subject = "Warning: GitHub Public Repo Found" ## Envoyer l'e-mail de notification. Le système doit avoir installé la commande "SendEmail" (pas Sendmail) ## sur votre système. Cat $ mail_log | SendEmail -l / tmp / e-mail.log \ -f $ email_from \ -u $ email_subject \ -t $ email_to \ -s $ smtp_host: $ smtp_port \ -x tls = oui \ -xu $ smtp_user \ -xp $ Smtp_pass fi ## Uncomment ci-dessous pour imprimer l'e-mail en tant que sortie # cat $ mail_log

  3. Mettez à jour l'ID "github_user" avec votre utilisateur ou nom d'organisation GitHub. Mettez également à jour les détails SMTP pour obtenir des notifications par e-mail.
  4. Appuyez sur «Ctrl + O» pour écrire les modifications, puis «Ctrl + X» pour quitter l'éditeur. Ensuite, faites l'exécutable du script de shell avec la commande suivante.
    chmod + x check-github-public-repos.shot  
  5. Maintenant, votre script est prêt à fonctionner. Vous pouvez simplement exécuter votre script directement sur le terminal. Pour imprimer les résultats à l'écran, vous pouvez décommer la dernière ligne du script.
    Bash Check-Github-Public-Repos.shot  

Sur une exécution réussie, si le script a trouvé un référentiel public dans votre compte GitHub. Vous obtiendrez une notification par e-mail dans votre boîte aux lettres.

Planifiez le script avec Crontab

Vous pouvez planifier ce script pour s'exécuter quotidiennement, hebdomadaire ou deux fois par semaine. L'exemple Crontab suivant exécutera ce script quotidiennement à 12h00.

## Vérifier les référentiels publics GitHub 0 0 * * * Bash Check-Github-Public-Repos.shot
12## Vérifier les référentiels publics GitHub0 0 * * * Bash Check-Github-Public-Repos.shot

Conclusion

Il est le plus important de garder notre travail acharné en sécurité. Ce script vous alertera sur les référentiels pubiens de votre compte GitHub. Vous pouvez modifier le script conformément à vos exigences. Vous pouvez également fournir votre amélioration via les commentaires. Fournissez également vos commentaires sur ce script, qui nous encourage à écrire plus.