⚓ Bash скрипт для проверки публичных репозиториев Github и уведомления о них |

⚓ Bash скрипт для проверки публичных репозиториев Github и уведомления о них

Скрипты

GitHub – ведущая компания по разработке программного обеспечения и контролю версий с помощью Git.

Он позволяет нам создавать как публичные репозитории, так и частные.

Оба варианта имеют свои преимущества.

Частные репозитории защищены аутентификацией, в то время как публичные репозитории доступны всем.

Иногда мы или наши команды создаем репозитории с публичным доступом, которые могут содержать конфиденциальные данные.

Хорошей идеей будет настроить скрипт, который будет уведомлять нас о репозиториях, оставленных в открытом доступе.

В этом руководстве мы покажем shell скрипт, который проверяет наличие всех публичных репозиториев под учетной записью GitHub и отправляет уведомление по электронной почте.

Скрипт может быть запланирован в crontab для автоматизации этого процесса.

🐍 Планирование выполнения скриптов Python с помощью Crontab

Предварительные условия

Этот скрипт использует утилиты командной строки Curl и SendEmail.

🖧 В чем разница между curl и Wget?

Поэтому убедитесь, что вы установили оба пакета в своей системе.

sudo apt install curl sendemail

Команда curl используется для вызова API GitHub, а SendEmail – для отправки электронной почты через SMTP-сервер.

Создание shell скрипта

Вы можете просто скопировать этот скрипт и записать его в файл в вашей системе.

Создайте скрипт в вашей системе и отредактируйте его в вашем любимом текстовом редакторе:

nano check-github-public-repos.sh

Скопируйте приведенное ниже содержимое и вставьте его в редактируемый файл.

#!/usr/bin/env bash

## Set your GitHub username or organization name
GITHUB_USER="itsecforuru"

## Temporary files and curl binary location
TEMP_FILE="/tmp/out.txt"
MAIL_LOG="/tmp/github-mail.log"
CURL_BIN="/usr/bin/curl"

## SMTP details for sending email notifications.

SMTP_HOST="email-smtp.us-east-1.amazonaws.com"
SMTP_PORT="587"
SMTP_USER="XXXXXXXXXXXXXXX"
SMTP_PASS="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
EMAIL_FROM="notification@example.com"
EMAIL_TO="your-email@example.com"


## Script begins here.

## Find out all the GitHub repositories that are publically accessible.
${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}

## Send an email notification if a public repository found
if [ $? -eq 0 ]; then
echo -e "Админ" > ${MAIL_LOG}
echo -e "Мы нашли несколько публичных репозиториев в вашей учетной записи GitHub (${GITHUB_USER}) \n" >> ${MAIL_LOG}
count=1
while read line; do
REPO_URL=`echo ${line} | cut -d":" -f2,3 | cut -d"," -f1`
echo "{count}. ${REPO_URL}" >> ${MAIL_LOG}
((count++))
done < ${TEMP_FILE}
echo -e "\n\n--\nThanks" >> ${MAIL_LOG}

## Modify the email subject as per your convenience
EMAIL_SUBJECT="WARNING: Github Public Repo Found"

## Send the notification email. The system must have installed "SendEmail" (not Sendmail) 
## command on your system. 
cat ${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

## Uncomment below to print the email as output
#cat ${MAIL_LOG}

Обновите идентификатор “GITHUB_USER” на имя пользователя GitHub или организации.

Также обновите данные SMTP для получения уведомлений по электронной почте.

Нажмите “CTRL + O”, чтобы записать изменения, а затем “CTRL + X”, чтобы выйти из редактора.

Затем сделайте скрипт исполняемым с помощью следующей команды.

chmod +x check-github-public-repos.sh

Теперь ваш скрипт готов к запуску.

Вы можете просто выполнить свой скрипт прямо на терминале.

Чтобы вывести результаты на экране, вы можете раскомментировать последнюю строку.

При успешном выполнении, если скрипт нашел какой-либо публичный репозиторий в вашем аккаунте GitHub, вы получите уведомление по электронной почте на свой в почтовый ящик.

Планирование работы скрипта с помощью Crontab

Вы можете запланировать выполнение этого скрипта на день, неделю или два раза в неделю.

Следующий пример crontab будет запускать этот скрипт ежедневно в 12:00 утра.

## Check GitHub public repositories
0 0 * * * bash check-github-public-repos.sh

Заключение

Очень важно сохранять нашу тяжелую работу в безопасности.

Этот скрипт предупредит вас о публичных репозиториях в вашем аккаунте GitHub.

Вы можете изменить скрипт в соответствии с вашими требованиями.

Вы также можете внести свои улучшения в комментарии.

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий