Skrip shell untuk memeriksa repositori awam github dan memberitahu

Skrip shell untuk memeriksa repositori awam github dan memberitahu

GitHub adalah syarikat terkemuka untuk pembangunan perisian dan kawalan versi menggunakan git. Yang membolehkan kita membuat repositori awam dan juga orang persendirian. Kedua -duanya mempunyai faedah sendiri. Repositori swasta dijamin dengan pengesahan, sedangkan repositori awam dapat diakses oleh semua orang. Kadang -kadang, kami atau pasukan kami membuat repositori dengan akses awam yang mungkin mengandungi data sensitif. Idea yang baik, untuk mengkonfigurasi skrip yang memberitahu kami mengenai repositori meninggalkan akses awam.

Dalam tutorial ini, saya telah membuat skrip shell yang memeriksa semua repositori awam di bawah akaun github dan menghantar e -mel pemberitahuan. Skrip boleh dijadualkan di bawah Cronjobs untuk mengautomasikannya.

Pra-syarat

Skrip ini menggunakan utiliti baris perintah curl dan senduMail. Oleh itu, pastikan anda memasang kedua -dua pakej pada sistem anda.

sudo apt memasang curl sendeMail  

Perintah Curl digunakan untuk memanggil API GitHub dan SendeMail digunakan untuk menghantar e -mel melalui pelayan SMTP.

Buat skrip shell

Saya telah membuat skrip bash untuk anda. Anda hanya boleh menyalin skrip dan menulisnya dalam fail di sistem anda.

  1. Buat skrip shell dalam sistem anda dan editnya dalam editor teks kegemaran anda:
    Nano Check-Github-Public-Repos.sh  
  2. Salin kandungan di bawah dan tampalkannya ke dalam fail yang diedit. #!/usr/bin/env bash ## Tetapkan nama pengguna github atau nama organisasi github_user = "tecadmin" ## fail sementara dan lokasi binari curl temp_file = "/tmp/out.txt "mail_log ="/tmp/github-mail.log "curl_bin ="/usr/bin/curl "## Butiran SMTP untuk menghantar pemberitahuan e -mel. Smtp_host = "e-mel-smtp.US-East-1.Amazonaws.com "smtp_port =" 587 "smtp_user =" xxxxxxxxxxxxxxxxx "smtp_pass =" xxxxxxxxxxxxxxxxxxxxxxxxxxxxx "e [email protected] "e-mel_to =" contoh@[email protected] "## skrip bermula di sini. ## cari semua repositori github yang boleh diakses secara umum. $ Curl_bin -s https: // api.github.com/users/$ github_user/repos | grep "https: // github.com/[A-Za-Z0-9-]*/[A-Z0-9-]*.git "> $ temp_file ## Hantar pemberitahuan e -mel jika repositori awam dijumpai jika [$? -eq 0]; kemudian echo -e "admin dear \ n"> $ mail_log echo -e "Kami mendapati beberapa repositori awam dalam akaun github anda ($ github_user) \ n" >> $ mail_log count = 1 sementara baca baris; Adakah repo_url = "echo $ line | cut -d": "-f2,3 | cut -d", "-f1" echo "count. $ Repo_url ">> $ mail_log ((count ++)) selesai> $ mail_log ## Ubah suai subjek e -mel mengikut e -mel kemudahan anda. Sistem mesti memasang "SendeMail" (bukan sendmail) ## perintah pada sistem anda. kucing $ mail_log | SendeMail -L /TMP /E -mel.log \ -f $ email_from \ -u $ email_subject \ -t $ email_to \ -s $ smtp_host: $ smtp_port \ -o tls = ya \ -xu $ smtp_user \ -xp $ Smtp_pass fi ## uncomment di bawah untuk mencetak e -mel sebagai output #cat $ mail_log
    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354#!/usr/bin/env bash ## Tetapkan nama pengguna github anda atau organisasi namegithub_user = "tecadmin" ## fail sementara dan curl binari lokasiTemp_file = "/tmp/out.txt "mail_log ="/tmp/github-mail.log "curl_bin ="/usr/bin/curl "## Butiran SMTP untuk menghantar pemberitahuan e -mel. Smtp_host = "e-mel-smtp.US-East-1.Amazonaws.com "smtp_port =" 587 "smtp_user =" xxxxxxxxxxxxxxxxx "smtp_pass =" xxxxxxxxxxxxxxxxxxxxxxxxxxxxx "e -mel. ## cari semua repositori github yang boleh diakses secara umum.$ Curl_bin -s https: // api.github.com/users/$ github_user/repos | grep "https: // github.com/[A-Za-Z0-9-]*/[A-Z0-9-]*.git "> $ temp_file ## Hantar pemberitahuan e -mel jika repositori awam foundif [$? -eq 0]; kemudian echo -e "admin dear \ n"> $ mail_log echo -e "Kami mendapati beberapa repositori awam dalam akaun github anda ($ github_user) \ n" >> $ mail_log count = 1 sementara baca baris; Adakah repo_url = 'echo $ line | CUT -D ":" -F2,3 | potong -d "," -f1 'echo "count. $ Repo_url ">> $ mail_log ((count ++)) selesai < $TEMP_FILE echo -e "\n\n--\nThanks" >> $ Mail_log ## Ubah suai subjek e -mel mengikut e -mel_subject = "Amaran: Repo awam GitHub dijumpai" ## Kirim e -mel pemberitahuan. Sistem mesti memasang "SendeMail" (bukan sendmail) ## perintah pada sistem anda. kucing $ mail_log | SendeMail -L /TMP /E -mel.log \ -f $ email_from \ -u $ email_subject \ -t $ email_to \ -s $ smtp_host: $ smtp_port \ -o tls = ya \ -xu $ smtp_user \ -xp $ Smtp_pass fi ## uncomment di bawah untuk mencetak e -mel sebagai output#Cat $ mail_log

  3. Kemas kini ID "github_user" dengan pengguna atau nama organisasi GitHub anda. Juga, kemas kini butiran SMTP untuk mendapatkan pemberitahuan e -mel.
  4. Tekan "Ctrl + O" untuk menulis perubahan dan kemudian "Ctrl + X" untuk keluar dari editor. Kemudian buat skrip shell boleh dilaksanakan dengan arahan berikut.
    chmod +x check-github-public-repos.sh  
  5. Sekarang, skrip anda sudah bersedia untuk dijalankan. Anda hanya boleh melaksanakan skrip anda secara langsung di terminal. Untuk mencetak hasil pada skrin, anda boleh menyahtewakan baris terakhir skrip.
    BASH CHECK-GITHUB-PUBLIC-REPOS.sh  

Mengenai pelaksanaan yang berjaya, jika skrip mendapati mana -mana repositori awam di akaun github anda. Anda akan mendapat pemberitahuan e -mel di peti mel anda.

Jadual skrip dengan Crontab

Anda boleh menjadualkan skrip ini untuk dijalankan setiap hari, mingguan, atau dua kali seminggu. Contoh Crontab berikut akan menjalankan skrip ini setiap hari pada pukul 12:00 pagi.

## Semak repositori awam GitHub 0 0 * * * Bash Check-Github-Public-Repos.sh
12## Semak GitHub Repositori Awam 0 * * * Bash Check-Github-Public-Repos.sh

Kesimpulan

Paling penting untuk memastikan kerja keras kita selamat. Skrip ini akan memberi amaran kepada repositori kemaluan di akaun GitHub anda. Anda boleh mengubah suai skrip mengikut keperluan anda. Anda juga boleh memberikan peningkatan anda melalui komen. Beri maklum balas anda mengenai skrip ini, yang menggalakkan kami menulis lebih lanjut.