Skrypt powłoki, aby sprawdzić publiczne repozytoria GitHub i powiadomić

Skrypt powłoki, aby sprawdzić publiczne repozytoria GitHub i powiadomić

GitHub jest wiodącą firmą tworzenia oprogramowania i kontroli wersji za pomocą GIT. To pozwala nam tworzyć publiczne repozytoria, a także prywatne. Oba mają własne korzyści. Prywatne repozytoria są zabezpieczone uwierzytelnianiem, podczas gdy publiczne repozytoria są dostępne dla wszystkich. Czasami my lub nasze zespoły produkujemy repozytoria z dostępem publicznym, które mogą zawierać poufne dane. Dobrym pomysłem jest skonfigurowanie skryptu, który powiadamia nas o repozytoriach, który pozostawił dostęp publiczny.

W tym samouczku stworzyłem skrypt powłoki, który sprawdza wszystkie publiczne repozytoria na podstawie konta Github i wysyła wiadomość e -mail z powiadomieniem. Skrypt można zaplanować pod Cronjobs, aby to zautomatyzować.

Wstępne wymagania

Ten skrypt używa narzędzi linii poleceń Curl i SendEmail. Upewnij się więc, że zainstalowałeś oba pakiety w swoim systemie.

sudo apt instal instaluj sendenta sententemail  

Polecenie Curl służy do wywoływania interfejsu API GitHub, a Sendentail służy do wysyłania wiadomości e -mail za pośrednictwem serwera SMTP.

Utwórz skrypt powłoki

Już stworzyłem dla ciebie skrypt bash. Możesz po prostu skopiować skrypt i napisać go w pliku w systemie.

  1. Utwórz skrypt powłoki w swoim systemie i edytuj go w ulubionym edytorze tekstu:
    Nano Check-Github-Public-Repos.cii  
  2. Skopiuj poniższą zawartość i wklej ją do edytowanego pliku. #!/usr/bin/env bash ## Ustaw swoją nazwę użytkownika lub nazwa organizacji github_user = "tecadmin" ## pliki tymczasowe i lokalizację binarną TEMP_FILE = "/tmp/out.txt "maila_log ="/tmp/github-mail.log "curl_bin ="/usr/bin/curl "## SMTP Szczegóły do ​​wysyłania powiadomień e -mailowych. Smtp_host = "e-mail-smtp.US-WEAST-1.Amazonaws.com "smtp_port =" 587 "smtp_user =" xxxxxxxxxxxxxxx "smtp_pass =" xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.com "e-mail_to =" Twój e-mail@przykład.com "## zaczyna się tutaj. ## Znajdź wszystkie repozytoria GitHub, które są publicznie dostępne. $ 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 ## Wyślij powiadomienie e -mail, jeśli publiczne repozytorium znaleziono, jeśli [$? -Eq 0]; Następnie echo -e "drogi admin \ n"> $ maila_log echo -e "Znaleźliśmy kilka publicznych repozytoriów na koncie Github ($ github_user) \ n" >> $ Mail_Log Count = 1 podczas przeczytania linii; do repo_url = "echo $ line | cut -d": "-f2,3 | cut -d", "-f1" echo "count. $ Repo_url ">> $ Mail_Log ((count ++)) DODATE> $ Mail_Log ## Zmodyfikuj temat e -mail zgodnie z wygodą e -mail_subject =" ostrzeżenie: Github public repo "## Wyślij wiadomość e -mail z niniejszym e -mailem. System musiał zainstalować polecenie „SendEmail” (nie sendmail) ##. Cat $ Mail_Log | SendEmail -L /TMP /e -mail.log \ -f $ e -mail_from \ -u $ e -mail_subject \ -t $ e -mail_to \ -s $ smtp_host: $ SMTP_PORT \ -O $ SMTP_PASS FI ## Uznowienie poniżej, aby wydrukować wiadomość e -mail jako wyjście #cat $ Mail_Log
    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354#!/usr/bin/env bash ## Ustaw swoją nazwę użytkownika lub organizację Nazwa github_user = "tecadmin" ## pliki tymczasowe i curl binarne LocationTemp_file = "/tmp/out.txt "maila_log ="/tmp/github-mail.log "curl_bin ="/usr/bin/curl "## SMTP Szczegóły do ​​wysyłania powiadomień e -mailowych. Smtp_host = "e-mail-smtp.US-WEAST-1.Amazonaws.com "smtp_port =" 587 "smtp_user =" xxxxxxxxxxxxxxx "smtp_pass =" xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. ## Znajdź wszystkie repozytoria GitHub, które są publicznie dostępne.$ 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 ## Wyślij powiadomienie e -mail, jeśli publiczne repozytorium określające [$? -Eq 0]; Następnie echo -e "drogi admin \ n"> $ maila_log echo -e "Znaleźliśmy kilka publicznych repozytoriów na koncie Github ($ github_user) \ n" >> $ Mail_Log Count = 1 podczas przeczytania linii; do Repo_Url = 'echo $ linia | CUT -D ":" -F2,3 | cut -d "," -f1 'echo "count. $ Repo_url ">> $ Mail_Log ((count ++)) < $TEMP_FILE echo -e "\n\n--\nThanks" >> $ Mail_Log ## Zmodyfikuj temat e -maila zgodnie z wygodą e -mail_subject = "ostrzeżenie: github publiczne repozytor. System musiał zainstalować polecenie „SendEmail” (nie sendmail) ##. Cat $ Mail_Log | SendEmail -L /TMP /e -mail.log \ -f $ e -mail_from \ -u $ e -mail_subject \ -t $ e -mail_to \ -s $ smtp_host: $ SMTP_PORT \ -O $ SMTP_PASS FI ## Uznowienie poniżej, aby wydrukować wiadomość e -mail jako wyjście#cat $ Mail_Log

  3. Zaktualizuj identyfikator „github_user” o nazwę użytkownika lub organizacji GitHub. Zaktualizuj również szczegóły SMTP, aby uzyskać powiadomienia e -mail.
  4. Naciśnij „Ctrl + O”, aby napisać zmiany, a następnie „Ctrl + X”, aby zrezygnować z edytora. Następnie spraw, aby skrypt powłoki wykonywał za pomocą następującego polecenia.
    CHMOD +x Check-Github-Public-Repos.cii  
  5. Teraz twój scenariusz jest gotowy do uruchomienia. Możesz po prostu wykonać swój skrypt bezpośrednio na terminalu. Aby wydrukować wyniki na ekranie, możesz porzucić ostatni wiersz skryptu.
    Bash Check-Github-Public-repos.cii  

Po pomyślnym wykonaniu, jeśli skrypt znalazł jakieś publiczne repozytorium na koncie Github. Otrzymasz powiadomienie e -mail w swojej skrzynce pocztowej.

Zaplanuj skrypt z crontab

Możesz zaplanować ten skrypt, aby działał codziennie, co tydzień lub dwa razy w tygodniu. Poniższy przykład Crontab uruchomi ten skrypt codziennie o 12:00.

## Sprawdź repozytoria publiczne github 0 0 * * * Bash Check-Github-Public-Repos.cii
12## Sprawdź github publiczne repozytoria 0 0 * * * Bash Check-Github-Public-Repos.cii

Wniosek

Najważniejsze jest zapewnienie bezpieczeństwa naszej ciężkiej pracy. Ten skrypt ostrzega Cię o repozytoriach łonowych na Twoim koncie Github. Możesz zmodyfikować skrypt zgodnie z Twoimi wymaganiami. Możesz także zapewnić swoje ulepszenie za pośrednictwem komentarzy. Przekaż także opinię na temat tego skryptu, który zachęca nas do pisania więcej.