Отправка файлов в Yandex Disk через REST API из Bash
#DevOps
#bash
#Яндекс.Диск
#API
Подготовка токена для работы с API
Вся информация по работе с API есть в официальной документации, если нужны подробности.
Тут все просто.
- Идем по ссылке и входим под нужной учетной записью Яндекса, после чего нажимаем “Зарегистрировать новое приложение”.
- Настраиваем новое приложение:
- Заполняем название приложения и его описание.
- Даем права для работы с API, а именно в разделе “Яндекс.Диск REST API” отмечаем “Доступ к информации о Диске” и “Доступ к папке приложения на Диске”.
- В разделе “Платформы” устанавливаем флаг “Веб-сервисы”, после чего заполняем параметр “Callback URL”, нажав на “Подставить URL для разработки”.
- Другие параметры приложения используйте по необходимости.
- После сохранения будет выполнено перенаправление на страницу с данными нового приложения. Сохраняем эту информацию себе.
- Переходим по ссылке и разрешаем доступ приложения.https://oauth.yandex.ru/authorize?response_type=token&client_id=<ЗдесьIdПриложенияИзПрошлогоПункта>
- После подтверждения получим токен для работы с API, который будет действовать 1 год.
- Профит!
Отправляем файл
Вот простой скрипт для отправки файла на Яндекс.Диск. По необходимости в скрипт можно добавить проверки ошибок, логирование и так далее. Здесь лишь простейший пример.
#!/bin/bashFILENAME="somefile.txt"FILEPATH="/home/<username>/$FILENAME"TOKEN='<ТокенЯндексДискAPI>'# Простая функция для парсинга свойств из JSONfunction parseJson(){local outputregex="(\"$1\":[\"]?)([^\",\}]+)([\"]?)"[[ $2 =~ $regex ]] && output=${BASH_REMATCH[2]}echo $output}# Функция для отправки файлаfunction sendFile{echo "Start sending a file: $1"# Получаем URL для загрузки файлаsendUrlResponse=`curl -s -H "Authorization: OAuth $TOKEN" https://cloud-api.yandex.net:443/v1/disk/resources/upload/?path=app:/$FILENAME&overwrite=true`sendUrl=$(parseJson 'href' $sendUrlResponse)# Отправляем файлsendFileResponse=`curl -s -T $FILEPATH -H "Authorization: OAuth $TOKEN" $sendUrl`echo "Completing a file upload: $1"}sendFile $FILEPATH
Найти эти файлы в веб-интерфейсе можно перейдя на Яндекс.Диск в браузере, далее зайти в папку “Приложения”. В ней вы увидите подкаталог с именем приложения, там все файлы и будут расположены.