GitHub adalah perusahaan terkemuka untuk pengembangan perangkat lunak dan kontrol versi menggunakan Git. Itu memungkinkan kita untuk membuat repositori publik maupun pribadi. Keduanya memiliki manfaat masing-masing. Repositori pribadi diamankan dengan otentikasi, sedangkan repositori publik dapat diakses oleh semua orang. Terkadang, kami atau tim kami membuat repositori dengan akses publik yang mungkin berisi data sensitif. Merupakan ide bagus, untuk mengonfigurasi skrip yang memberi tahu kami tentang repositori yang meninggalkan akses publik.
Dalam tutorial ini, saya telah membuat skrip shell yang memeriksa semua repositori publik di bawah akun GitHub dan mengirimkan email notifikasi. Script dapat dijadwalkan di bawah cronjobs untuk mengotomatisasi this.
Pre-Requisiteis
Script ini menggunakan utilitas baris perintah Curl dan SendEmail. Jadi pastikan Anda telah menginstal kedua paket di sistem Anda.
sudo apt install curl sendemail
Perintah curl digunakan untuk memanggil GitHub API dan SendEmail digunakan untuk mengirim email melalui server SMTP.
Create a Shell Script
I telah membuat skrip bash untuk Anda. Anda cukup menyalin skrip dan menulisnya dalam file di sistem Anda.
Buat skrip shell di sistem Anda dan edit di editor teks favorit Anda:
nano check-github-public-repos.shSalin konten di bawah ini dan rekatkan ke file yang diedit.
#!/usr/bin/env bash ## Tetapkan nama pengguna GitHub atau nama organisasi Anda GITHUB_USER="tecadmin" ## File sementara dan lokasi biner curl TEMP_FILE="/tmp/ out.txt" MAIL_LOG="/tmp/github-mail.log" CURL_BIN="/usr/bin/curl" ## Detail SMTP untuk mengirim pemberitahuan email. SMTP_HOST="email-smtp.us-east-1.amazonaws.com" SMTP_PORT="587" SMTP_USER="XXXXXXXXXXXXXXX" SMTP_PASS="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" EMAIL_FROM="notification@example.com" EMAIL_TO="your-email@example. com" ## Skrip dimulai di sini. ## Cari tahu semua repositori GitHub yang dapat diakses publik. ${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} ## Kirim pemberitahuan email jika publik repositori ditemukan jika [ $? -persamaan 0 ]; kemudian echo -e "Admin yang Terhormat n" > ${MAIL_LOG} echo -e "Kami menemukan beberapa repositori publik di akun GitHub Anda (${GITHUB_USER}) n" >> ${MAIL_LOG} count=1 saat membaca baris; lakukan REPO_URL=`echo ${line} | potong -d":" -f2,3 | cut -d"," -f1` echo "{count}. ${REPO_URL}" >> ${MAIL_LOG} ((count++)) selesai > ${MAIL_LOG} ## Ubah subjek email sesuai kenyamanan Anda EMAIL_SUBJECT="PERINGATAN: Repo Publik Github Ditemukan" ## Kirim email notifikasi. Sistem harus menginstal perintah "SendEmail" (bukan Sendmail) ## di sistem Anda. kucing ${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_USER} -xp ${SMTP_PASS} fi ## Batalkan komentar di bawah ini untuk mencetak email sebagai output #cat ${MAIL_LOG}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253/#USER_USER organisasi Anda/nama pengguna GishHub#! tecadmin" ## File sementara dan lokasi biner curlTEMP_FILE="/tmp/out.txt"MAIL_LOG="/tmp/github-mail.log"CURL_BIN="/usr/bin/curl" ## Detail SMTP untuk mengirim pemberitahuan email. SMTP_HOST="email-smtp.us-east-1.amazonaws.com"SMTP_PORT="587"SMTP_USER="XXXXXXXXXXXXXXX"SMTP_PASS="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"EMAIL_FROM="[email dilindungi]"EMAIL_TO="[email dilindungi]" ## Skrip dimulai di sini. ## Cari tahu semua repositori GitHub yang dapat diakses publik.${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} ## Kirim pemberitahuan email jika publik repositori ditemukanif [ $? -persamaan 0 ]; lalu echo -e "Admin yang Terhormat n" > ${MAIL_LOG} echo -e "Kami menemukan beberapa repositori publik di akun GitHub Anda (${GITHUB_USER}) n" >> ${MAIL_LOG} count=1 saat membaca baris; lakukan REPO_URL=`echo ${line} | potong -d":" -f2,3 | cut -d"," -f1` echo "{count}. ${REPO_URL}" >> ${MAIL_LOG} ((count++)) selesai > ${MAIL_LOG} ## Ubah subjek email sesuai kenyamanan Anda EMAIL_SUBJECT=" PERINGATAN: Repo Publik Github Ditemukan" ## Kirim email notifikasi. Sistem harus telah menginstal perintah "SendEmail" (bukan Sendmail) ## di sistem Anda. kucing ${MAIL_LOG} | sendemail -l /tmp/email.log -f ${EMAIL_FROM} -u ${EMAIL_SUBJECT} -t ${EMAIL_TO} -s ${SMTP_HOST}:${SMTP_PORT} -o xu ${SMTP_USER} -xp ${SMTP_PASS}fi ## Batalkan komentar di bawah untuk mencetak email sebagai output#cat ${MAIL_LOG}
Perbarui id “GITHUB_USER” dengan nama pengguna atau organisasi GitHub Anda. Juga, perbarui detail SMTP untuk mendapatkan notifikasi email. Tekan "CTRL + O" untuk menulis perubahan dan kemudian "CTRL + X" untuk keluar dari editor. Kemudian buat skrip shell dapat dieksekusi dengan perintah berikut.
chmod +x check-github-public-repos.shSekarang, skrip Anda siap dijalankan. Anda cukup menjalankan skrip Anda langsung di terminal. Untuk mencetak hasil di layar, Anda dapat menghapus komentar pada baris terakhir skrip.
bash check-github-public-repos.sh
On eksekusi berhasil, jika skrip menemukan repositori publik di akun GitHub Anda. Anda akan mendapatkan email pemberitahuan di kotak surat Anda.
Schedule Script dengan Crontab
Anda dapat menjadwalkan skrip ini untuk dijalankan setiap hari, setiap minggu atau dua kali seminggu. Contoh crontab berikut akan menjalankan skrip ini setiap hari pada pukul 12:00 AM.
## Periksa repositori publik GitHub 0 0 * * * bash check-github-public-repos.sh 12## Periksa repositori publik GitHub0 0 * * * bash check -github-public-repos.sh
Conclusion
Yang paling penting adalah menjaga kerja keras kita tetap aman. Skrip ini akan mengingatkan Anda tentang repositori publik di akun GitHub Anda. Anda dapat memodifikasi skrip sesuai kebutuhan Anda. Anda juga dapat memberikan peningkatan Anda melalui komentar. Berikan juga tanggapan Anda tentang skrip ini, yang mendorong kami untuk menulis lebih banyak.
Referensi tecadmin.com