Заметки и замечания, рассказы и пересказы

Позднее Ctrl + ↑

Немного про экспорт из Gitlab

Пришлось столкнуться с переносом разного с одного гитлаба на другой. По ходу пьесы выяснилось, что не все так радужно в этом самом опенсорсе, но API и тот же самый опенсорс не плохо выручает.

Самая большая и прекрасная примочка — rvojcik/gitlab-project-export. Прекрасный инструмент для экспорта и импорта данных. Его также можно использовать для бэкапирования данных. Автоматизировать с его помощью работу с API довольно таки удобно. Есть правда и минусы — нужно увеличивать лимиты в настройках Gitlab, а также готовить конфиг файлы для скрипта (при экспорте и импорте, а при импорте еще и создать руками новые репо).

А вот чтобы создать конфиги... право же, не руками же их делать! Нужно будет немного поработать с API Gitlab. Если коротко, то вот такая подсказка:

#!/bin/bash
GL_DOMAIN=""
GL_TOKEN=""
echo "" > gitlab_projects_urls.txt
for ((i=1; ; i+=1)); do
    contents=$(curl "$GL_DOMAIN/api/v4/projects?private_token=$GL_TOKEN&per_page=100&page=$i")
    if jq -e '. | length == 0' >/dev/null; then 
       break
    fi <<< "$contents"
    echo "$contents" | jq -r '.[].ssh_url_to_repo' >> gitlab_projects_urls.txt
done

Кому подсказки недостаточно для полноценной жизни, то добро пожаловать на github, где размещены скрипты целиком. Для работы с gitlab-project-export понадобится установить или скачать саму утилиту (ставится при наличии третьего питона как обычно — pip install gitlab-project-export). Краткое содержание по файликам выглядит следующим образом:

* start2.sh - запускает вереницу событий: на выходе список и сразу экспорт файлов
* start.sh - при наличии готового списка запускается экспорт
* config-creation.sh - обрабатывает config-template.yaml, дописывает в него репо и делает config.yaml 
* config-template.yaml - шаблон для gitlab-project-export.py (нужно указать URL и токен от Gitlab, а также директорию, где будут лежать файлы экспорта)
* config.yaml - готовый конфиг, делается из шаблона config-template.yaml 
* get-all-projects.sh - скрипт для получения списка проектов по API (нужно указать URL и токен от Gitlab)
* gitlab_path_with_namespace.txt - текстовый файл с проектами

Ссылка на гитхаб со скриптами:
https://github.com/skurudo/usefulbash/blob/main/gitlab-export-import/readme.md

Подарок из Африки

Неожиданное для меня открытие — довольно необычное (пока что) поздравление. Экзотика, одним словом :-)

Как поуправлять Synology по ssh, когда очень хочется

Иногда возникают странные желания, касающиеся домашних и не очень хранилищ, они же NAS, от известной компании Synology. Хранилища DSM (Synology DiskStation Manager) — программное сердце хранилищ, а создатели продукта позволили при должной настройке подключаться по ssh. Однако не все так хорошо, как могло бы показаться. Используя кастрированный линукс и оболочку, все будет не совсем так ласково и привычно, как в полюбившихся debian-like системах.

Например, нам нужно передать некую команду для выполнения от root. Предположим, мы хотим сделать такой маневр из под Windows (хотя это не самый принципиальный момент). Как бы нам это сделать без ввода паролей?

Наверное классическим маневром было бы использовать пароли или ключи, изображая что-то такое:

plink -ssh admin@192.168.0.222 -pw password -batch -t "echo password | sudo  some-command-with-root-permission.sh"

Т. е. мы подключились по паролю и передали команду с вводом пароля... но в случае с Synology DSM 6+ у нас такой номер не пройдет. А для того, чтобы все получилось, нужно провести небольшую подготовку, а именно немного пошалить с sudoers (visudo у нас нет, редактировать /etc/sudoers напрямую тоже толку мало)...

Буквально по шагам, делаем нижеприведённую магию. Не забываем сначала зайти по ssh и сделать sudo su

# переходим в каталог
cd /etc/sudoers.d
# создаем файл с именем пользователя 
# предположим, что у нас admin
vi admin
# включаем редактирование в vi
i
# добавляем разрешения
admin ALL=(root) NOPASSWD: /path/to/script.sh
# или на все без пароля
admin ALL=(root) NOPASSWD: ALL
# выходим из vi
<esc>
:wq! 
# ставим права на файл
chmod 0400 admin

Теперь команда вроде той, что привожу ниже, отработает без каких либо проблем или ввода пароля.

plink -ssh admin@192.168.0.222 -pw password  -batch -t "sudo /var/packages/HyperBackup/target/bin/img_backup -B -w -k 12"

Лучший набор!

Правда меня терзают смутные сомнения. Даже при вкусовых приятностях 3,5 литров на двоих-троих получается довольно много за один-то вечерок :-)

Осторожно, электрика!

Что-то насос как-то странно включается.. вскрыли, посмотрели, слегка удивились и побежали менять реле. Но штука довольно не веселая. На счастье насос не пострадал.

Ранее Ctrl + ↓