Консольный Yandex.Disk — как сделать автозапуск демона Yandex.Disk на Debian?
Есть сервер на Debian. Есть заинсталленый там и хорошо работающий консольный яндекс диск. Однако есть одно «НО» — демон не стартует после ребута системы, хотя при установке диска, эта фича задавалась. В ручную же обыкновенной командой yandex-disk start все работает без каких либо проблем.
Написал простейший скрипт запуска демона, назвал его yandex_autorun.sh
Далее chmod +x на него. И проверил ручками (sh yandex_autorun.sh) — ручками скрипт запускает яндекс без проблем.
Обращаю внимание, что команда / скрипт запускается только из под юзера (adept). Под рутом выдает какую-т о хрень.
1. Закинуть скрипт sh в папку /etc/network/if-up.d/ , не помогло
2. Прописать путь до скрипта в /etc/network/interfaces не помогло
3. Засунул в кронтаб такую штуку, как советовал в схожем вопросе Илья Мальцев:
@reboot adept sleep 60 && /home/adept/yandex_autorun.sh
Тоже ничего не запустилось.
4. Пробовал писать в rc.local до exit 0. Тоже толку мало.
В init.d наваять скрипт мне не удалось.
Буду рад советам. По сути то 1 команду запустить и все.
Таки удалось решить потерей малой крови. Благодарю @bk0011m за помощь в поиске ответа!
Ставим яндекс диск консольный и делаем скрипт автозапуска.
Итак — содержание скрипта yandex_autostart.sh тривиально:
#!/bin/sh yandex-disk start --dir=/home/adept/srv_storage/YandexDisc --auth=/home/adept/.config/yandex-disk/passwd
start —dir путь, куда диск качает файлы
—auth путь, где лежит сгенеренный после инсталла токен с вашими паролями / логинами
Далее топаем в крон crontab -e (без sudo!)
@reboot sleep 60 && /home/adept/yandex_autorun.sh # тут путь до вашего скриптика
Не забываем так же chmod +x путь_до_скрипта (делаем его исполняемым)
После перезагрузки крон выждет 60 секунд и пнет ваш скрипт, запустив диск.
Мишшн комплит!
Ошибки крона сваливаются во внутреннюю почту сервера, которую у меня на Debian можно легко посмотреть командой mail, номер обращения.
Хм, не понимаю, зачем так усложнять себе жизнь cron-ом, если init.d скрипт пишется за 5-20 минут в зависимости от навыков: либо копипастой одного из имеющихся скриптов, либо по гайдам раз и два.
К примеру, мой /etc/init.d/yadisk
#!/bin/sh -e ### BEGIN INIT INFO # Provides: yandex_disk # Required-Start: $local_fs # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Manage Yandex.Disk deamon ### END INIT INFO # Various constants user=yadisk execute() < su -c "$1" "$user" >start() < echo "Starting Yandex.Disk daemon. " execute "yandex-disk start" >stop() < echo "Stopping Yandex.Disk daemon. " execute "yandex-disk stop" >status() < execute "yandex-disk status" ># Carry out specific functions when asked to by the system case "$1" in start) start ;; stop) stop ;; status) status ;; restart) stop start ;; *) echo "Usage: $0 " exit 1 ;; esac exit 0
Отличный скрипт, то что надо. Если вы используете Яндекс диск для своего пользователя, вместо пользователя yadisk укажите своё имя пользователя и не забудьте проверить права в ~/.config/yandex-disk/ . Права должны совпадать с именем вашего пользователя
Создал скрипт, запустил «`sudo update-rc.d yadisk defaults«` и получил ряд предупреждений, что нужно исправить в скрипте?
«`sudo update-rc.d yadisk defaults
update-rc.d: warning: /etc/init.d/yadisk missing LSB keyword ‘required-start’
update-rc.d: warning: /etc/init.d/yadisk missing LSB keyword ‘required-stop’
update-rc.d: warning: /etc/init.d/yadisk missing LSB keyword ‘default-start’
update-rc.d: warning: /etc/init.d/yadisk missing LSB keyword ‘default-stop’«`
Андрей: разобрался, действительно всё есть в начале скрипта! Когда я копировал скрипт и вставлял в консольный редактор nano на сервере, первые строчки начинающиеся с # у меня все склеились в одну длинную строку, я не придал этому значения, думал это просто комментарии для красоты.
А если не запускать под рутом? Или это принципиально нужно?
Дело в том, что эта софтина при синхронизации начинает безбожно жрать ресурсы и совсем не хорошо если это происходит под рутом.
А насчет вашей проблемы, подозреваю что нужно указать файл авторизации, он же токен. Вернее путь к нему
ресурсы терпят. Я слегка перефразировал вопрос. Запускать как раз таки и нужно под юзером Adept. А оно не запускается. От чего у меня начинает припекать уже.
@adept7771 Ну смотрите, если вы запускаете под рутом, то нужно указывать рабочий каталог и файл авторизации. Если вы запускаете из под рута, но с правами юзера, то я думаю все ранво нужно указать и то и другое.
Автозапуск Yandex-disk на Debian
Господа, подскажите пожалуйста по запуску yandex-disk’a. Мне нужен не запуск демона вместе с логином пользователя, как предлагает настройка самого приложения, а именно старт демона после загрузки компьютера. Что я сделал для достижения цели: настроил YD для пользователя, перенес конфиги в /etc/yandex.disk, в /etc/init.d/ создал скрипт для запуска, назвал его yand, добавил его при помощи update-rc.d в /etc/rcN.d Но демон все равно не стартует при запуске компьютера. Причем если вручную выполнить /etc/init.d/yand
Например демон стартует в тот момент, когда сеть еще не сконфигурировалась и падает в связи с отсутствием доступа к ЯД. Если конечно он зависит от сети при запуске.
В скрипте я прописал $all, т.е. стартовать он должен в последнюю очередь. А логи стартов можно где либо глянуть чтобы проверить этот момент?
сам пропиши в скрипте строку, по которой он будет писать что-то в сислог, или в свой собственный лог
echo $(date +«%y-%m-%d %T») Start: $USER >> $LOGFILE;
/usr/bin/yandex-disk start -c /etc/yandex-disk/config.cfg >> $LOGFILE;
Получил следующую картину. Когда запускаю из под пользователя, то вижу такой лог:
14-03-19 00:03:06 Start: root
Starting daemon process. Done
А когда ребучу систему, то такую картину вижу:
14-03-19 00:04:12 Start:
Error: Proxy server is unavailable.
Ну вопрос соответственно таков: и что это значит? Почему не отображается имя пользователя под которым запускается? Подозреваю то что дело именно в этом.
yandex-disk
Да глючный он какой то, поборолся я денёк с ним, и решил что лучше воспользоваться старым, добрым методом http://eloomyblog.blogspot.ru/2012/04/linux.html
Позвольте переформулировать вопрос. Как должна выглядеть строка запуска яндексдиска в стартовом скрипте чтобы она запускала демона от имени другого пользователя? Ну допустим от имени yanduser. Сейчас она выглядит так:
/usr/bin/yandex-disk start -c /etc/yandex-disk/config.cfg >> $LOGFILE;
Как нужно переписать? Подозреваю что через sudo, а как там настроить на то чтобы пароль к yanduser не спрашивало? Помогите нубу, а то я не могу понять даже в какую сторону гуглить.
Нет, davfs2 это совсем не то. Мне по всем параметрам (кроме геморроя с запуском) подходит именно яндексовское приложение.
Переменную $USER устанавливает /bin/login, в момент исполнения скриптов инициализации она не определена. Поэтому имя пользователя и не отображается
Yandex-disk жалуется на то, что недоступен прокси. То есть сеть ещё не поднялась. Можно выставить задержку перед запуском или попробовать пропинговать проксик.
Для того, чтобы выполнить команду от имени другого пользователя используется
Огромное спасибо Клаус и ат. Заработало после того как вставил sleep 30, и под правильным пользователем. Очевидно что косяк был в сети. В связи с чем теперь вопрос: а как сделать проверку правильно? Ну не тупо задержкой, а именно проверкой доступности сети?
Я же предложил пингануть прокси, например
if ping -W10 -c1 ; # Ждать ответа в течении 10 сек then # если все нормально запустить Yandex-disk else # что нибудь сделать если сеть так и не поднялась fi
Шикарно! Все работает. Я воспользовался вашим кодом, и добавил туда счетчик, чтобы он ждал 10 раз по секунде с записью в лог. Большое спасибо всем кто помогал.
Помогите пожалуйста настроить яндекс синхронизацию
Здравствуйте, У меня ситуация такая: Система Linux Mint 17.3 «Rosa» Mate. Установил его на ссд диск. Параллельно стоит в ноутбуке винчестер на 700 гигов. Установил Yandex-Disk командой sudo apt-get install yandex-disk. Настроил через консоль, вот что получилось в config файле: auth=«/home/leonid/.config/yandex-disk/passwd» dir=«/media/leonid/D/Яндекс Диск» proxy=«no»
После запуска демона (вернее при завершении настройки) демон яндекс диска запускается. Подключается и на команду yandex-disk status выводит данные, что получает данные или что-то такое.
Затем спустя минут 5 он начинает в созданную папку копировать папки и файлы. Но затем просто зависает. На команду status ничего не происходит. После зависания не могу ни запустить вновь демон яндекса. При перезагрузке, демон не перезапускается. Я новичёк в линуксе, это моя 5-я попытка пересесть на линукс, очень хочется, о всегда сталкивался с чем-то что решить не мог.
Помогите, подскажите пожалуйста как правильно поступить, чтоб запустить этот шайтан синхронизатор с яндекс диском?
2016-01-11.11:04:42 Got signal 6 0.1.5.940 x64 [bt] Execution path: [bt] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x39) [0x7f8e91ccecc9] [bt] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x39) [0x7f8e91ccecc9] [bt] /lib/x86_64-linux-gnu/libc.so.6(abort+0x148) [0x7f8e91cd20d8] [bt] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x155) [0x7f8e925d9535] [bt] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x5e6d6) [0x7f8e925d76d6] [bt] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x5e703) [0x7f8e925d7703] [bt] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x5e922) [0x7f8e925d7922] [bt] /usr/bin/yandex-disk() [0xa0eb7c] [bt] /usr/bin/yandex-disk() [0x95ea1c] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e] [bt] /usr/bin/yandex-disk() [0x95ea5e]