LINUX.ORG.RU

Из Cron работает, а из bash нет.

 ,


0

1

Здравствуйте! Есть странная проблема: в панели Vesta в Cron для бэкапов используется команда

sudo /usr/local/vesta/bin/v-backup-users

Команда отрабатывает без проблем. Но если мы делаем файл, например backup_file, внутри него прописываем этот же самый код и запускаем файл из командной строки/из Cron/под разными пользователями:

sudo /usr/local/vesta/bin/backup_file

То не происходит ничего, как будто команды нет. Причем другие команды в этом же файле считываются, а эта игнорируется. Кто догадывается, в чем проблема?



Последнее исправление: mihacb (всего исправлений: 1)

Кто догадывается, в чем проблема?

А прочитать и осмыслить этот код не догадался?

andytux ★★★★★
()

Ошибка, из Cron тоже не выполняется. Но команда для бэкапа одного юзера проходит нормально.

sudo /usr/local/vesta/bin/v-backup-user admin

Для всех - игнорируется. А для одного - работает. Странно. В логах не пишется ни для одного ни для всех, логи пустые. Может кто-нибудь может дать рекомендацию бесплатной панели управления хостингом без вот этих вестовских косяков?

mihacb
() автор топика

Что там внутри этой команды, баш? Тогда запусти через bash -x и будут тебе логи.

anonymous
()
Ответ на: комментарий от mihacb

Любая «панель управления сервером» заставит тебя покушать сладкого хлебушка если ты будешь пытаться использовать ее не читая документации и не заглядывая внутрь ее скриптов. Если хочешь гибкости, то самая лучшая панель - это отсутствие панели. Если хочешь сладкого хлебушка, то бери любую, не ошибешься.

anonymous
()

У вас все темы по этой весте, шлиб вы на официальный форум или покупали бы саппорт.

Для всех - игнорируется. А для одного - работает. Странно.

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

Может кто-нибудь может дать рекомендацию бесплатной панели управления хостингом без вот этих вестовских косяков?

Тут главный косяк в том что вы даже код скрипта не можете посмотреть. Может стоит просто купить хостинг, который будут поддерживать компетентные специалисты, а не пытаться что-то настроить методом тыка?

micronekodesu ★★★
()
Ответ на: комментарий от micronekodesu

Ответ

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

Вот скрипт бэкапа для всех юзеров, который, почему-то, не производится ни то root, ни от admin, ни из cron, ни из строки, ни из bash скрипта:

#!/bin/bash
# info: backup all users
# options: NONE
#
# The function backups all system users.
#----------------------------------------------------------#
#                    Variable&Function                     #
#----------------------------------------------------------#
# Importing system environment  as we run this script
# mostly by cron which not read it by itself
source /etc/profile
# Includes
source $VESTA/func/main.sh
source $VESTA/conf/vesta.conf
#----------------------------------------------------------#
#                       Action                             #
#----------------------------------------------------------#
$BIN/v-check-vesta-license >/dev/null
if [ -z "$BACKUP_SYSTEM" ]; then
    exit
fi
for user in $(grep '@' /etc/passwd |cut -f1 -d:); do
    if [ ! -f "$VESTA/data/users/$user/user.conf" ]; then
        continue;
    fi
    check_suspend=$(grep "SUSPENDED='no'" $VESTA/data/users/$user/user.conf)
    log=$VESTA/log/backup.log
    if [ ! -z "$check_suspend" ]; then
        echo -e "================================" >> $log
        echo -e "$user" >> $log
        echo -e "--------------------------------\n" >> $log
        $BIN/v-backup-user $user >> $log 2>&1
        echo -e "\n--------------------------------\n\n" >> $log
    fi
done
#----------------------------------------------------------#
#                       Vesta                              #
#----------------------------------------------------------#
# No Logging
#log_event "$OK" "$ARGUMENTS"
exit

У вас все темы по этой весте, шлиб вы на официальный форум или покупали бы саппорт.

Благодарю за совет, но, во-первых, я так и сделал - там около 10 моих открытых вопросов, которые висят по полгода, пока какой-нибудь юзер не накопает костыль. Поэтому - это дохлый номер. Во-вторых, не только по Vesta, но и по всяческим демонам для Linux OS. Но так как Vesta косоватая панель, как я уже понял, то иногда вопросы неправильной работы серверов связаны не столько с ними самими, сколько с Vesta. А иногда и наоборот.

Тут главный косяк в том что вы даже код скрипта не можете посмотреть. Может стоит просто купить хостинг, который будут поддерживать компетентные специалисты, а не пытаться что-то настроить методом тыка?

Если кто подскажет мне решение надежнее - буду признателен. Но отсылать к хостерам или к платной поддержке не нужно, я оттуда как раз пришел и там все еще гораздо плачевнее, даже чем с Vesta. Берут за трехминутное добавление кавычки или скобочки в код тысячи, вроде что-то делают, а на следующий день - опять не работает, люди пропадают, в общем, все равно - нужно вникать и разбираться самому. Если знаете хорошую панель управления - буду рад.

mihacb
() автор топика
Ответ на: Ответ от mihacb

Поставьте set -x перед исполнением всех остальных команд и посмотрите, в каком месте прекращается выполнение скрипта.

gedisdone ★★★
()
Ответ на: Ответ от mihacb

Вот тут

if [ -z "$BACKUP_SYSTEM" ]; then
    exit
fi

у вас проверка значения переменной, у вас есть такая? Скорее всего она выставляется в где-то в $VESTA/func/main.sh, $VESTA/conf/vesta.conf или $BIN/v-check-vesta-license. Проверьте как там это работает, может какие-то дополнительные условия есть.

Но так как Vesta косоватая панель, как я уже понял, то иногда вопросы неправильной работы серверов связаны не столько с ними самими, сколько с Vesta. А иногда и наоборот.

Так а зачем она вам вообще нужна тогда? Саппорта нет, стабильности нет, может стоит вообще от нее (и от любой другой панели, потому что там те же проблемы будут) отказаться?

Берут за трехминутное добавление кавычки или скобочки в код тысячи

Ну знаете ту байку про Ивана, который взял тысячу - рубль за удар молотком и 999 за то что знал куда ударить.

Если знаете хорошую панель управления - буду рад.

Опишите функции, которые вам нужны, и что в вашем понимании "хорошая".

нужно вникать и разбираться самому

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

Я не считаю себя крутым разработчиком или хостером, но даже я бы не стал связываться с этими панелями - все что я видел такого толка проблем доставляло больше, чем решало, и на мой взгляд гораздо проще разобраться самому и сделать (не думаю что вам нужно что-то прям необычное), чем потом после какого-то критичного факапа не знать куда бежать.

Вариант с дебагом через set -x удваиваю.

micronekodesu ★★★
()
Ответ на: комментарий от gedisdone

Благодарю Вас за подсказку, вот что выдало:

+ source /usr/local/vesta/func/main.sh
++ HOMEDIR=/home
++ BACKUP=/backup
++ BACKUP_GZIP=9
++ BACKUP_DISK_LIMIT=95
++ BACKUP_LA_LIMIT=5
++ RRD_STEP=300
++ BIN=/usr/local/vesta/bin
++ USER_DATA=/usr/local/vesta/data/users/
++ WEBTPL=/usr/local/vesta/data/templates/web
++ DNSTPL=/usr/local/vesta/data/templates/dns
++ RRD=/usr/local/vesta/web/rrd
++ SENDMAIL=/usr/local/vesta/web/inc/mail-wrapper.php
++ OK=0
++ E_ARGS=1
++ E_INVALID=2
++ E_NOTEXIST=3
++ E_EXISTS=4
++ E_SUSPENDED=5
++ E_UNSUSPENDED=6
++ E_INUSE=7
++ E_LIMIT=8
++ E_PASSWORD=9
++ E_FORBIDEN=10
++ E_DISABLED=11
++ E_PARSING=12
++ E_DISK=13
++ E_LA=14
++ E_CONNECT=15
++ E_FTP=16
++ E_DB=17
++ E_RRD=18
++ E_UPDATE=19
++ E_RESTART=20
++ E_TEAPOT=418
++ (( I=1 ))
++ (( I <= 0  ))
+ source /usr/local/vesta/conf/vesta.conf
++ WEB_SYSTEM=httpd
++ WEB_RGROUPS=apache
++ WEB_PORT=8080
++ WEB_SSL_PORT=8443
++ WEB_SSL=mod_ssl
++ PROXY_SYSTEM=nginx
++ PROXY_PORT=80
++ PROXY_SSL_PORT=443
++ STATS_SYSTEM=webalizer,awstats
++ FTP_SYSTEM=vsftpd
++ DNS_SYSTEM=named
++ MAIL_SYSTEM=exim
++ IMAP_SYSTEM=dovecot
++ CRON_SYSTEM=crond
++ FIREWALL_SYSTEM=iptables
++ FIREWALL_EXTENSION=fail2ban
++ BACKUP_SYSTEM=local
++ LANGUAGE=en
++ VERSION=0.9.8
++ DB_SYSTEM=mysql
++ SOFTACULOUS=yes
++ DISK_QUOTA=no
++ VESTA_CERTIFICATE=admin:site.ru
+ /usr/local/vesta/bin/v-check-vesta-license
+ '[' -z local ']'
++ grep @ /etc/passwd
++ cut -f1 -d:
+ for user in '$(grep '\''@'\'' /etc/passwd |cut -f1 -d:)'
+ '[' '!' -f /usr/local/vesta/data/users/admin/user.conf ']'
++ grep 'SUSPENDED='\''no'\''' /usr/local/vesta/data/users/admin/user.conf
+ check_suspend=
+ log=/usr/local/vesta/log/backup.log
+ '[' '!' -z '' ']'
+ exit

Получается, должен вытаскивать из user.conf SUSPENDED=‘no’, а вытаскивает пустое значение SUSPENDED=''

SUSPENDED=''
SUSPENDED_USERS='0'
SUSPENDED_WEB='0'
SUSPENDED_DNS='0'
SUSPENDED_MAIL='0'
SUSPENDED_DB='0'
SUSPENDED_CRON='1'

и потом не выполняется кусок:

 if [ ! -z "$check_suspend" ]; then
        echo -e "================================" >> $log
        echo -e "$user" >> $log
        echo -e "--------------------------------\n" >> $log
        $BIN/v-backup-user $user >> $log 2>&1
        echo -e "\n--------------------------------\n\n" >> $log
    fi
done

Интересно, почему раньше выполнялась команда. Получается, стояло значение no, а потом почему-то изменилось на пустое - странные дела.

mihacb
() автор топика
Ответ на: комментарий от micronekodesu

у вас проверка значения переменной, у вас есть такая? Скорее всего она выставляется в где-то в $VESTA/func/main.sh, $VESTA/conf/vesta.conf или $BIN/v-check-vesta-license. Проверьте как там это работает, может какие-то дополнительные условия есть.

Отписался чуть выше - видимо что-то с переменной SUSPENDED.

Так а зачем она вам вообще нужна тогда? Саппорта нет, стабильности нет, может стоит вообще от нее (и от любой другой панели, потому что там те же проблемы будут) отказаться?

Согласен, но нужно определить - куда бежать. Я знаю еще только ISPManager, но это платная панель. Поэтому выбрал Vesta, но сам хочу найти достойную альтернативу.

Ну знаете ту байку про Ивана, который взял тысячу - рубль за удар молотком и 999 за то что знал куда ударить.

Да, без проблем, согласен. Но есть 2 составляющие - адекватная цена за мелочную работу и реальное решение определенной проблемы окончательно и бесповоротно. А пока, к сожалению, таких мастеров я встречал пару человек, но, увы, не в этой сфере.

Опишите функции, которые вам нужны, и что в вашем понимании «хорошая».

Мне нужны следующие функции:

  1. Желательно, графический интерфейс, чтобы все задачи можно было решить парой кнопочек. Но не обязательно, можно конечно и тхт справочку сделать, какие команды вводить в консоль. Но, все-таки.
  2. Добавление/удаление доменов/папок.
  3. Добавление/удаление БД.
  4. Добавление/удаление своих DNS.
  5. Добавление/удаление почтовых серверов на доменах и ящиков к ним.
  6. Cron с бэкапами, желательно с возможностью инкрементальных бэкапов в какое-нибудь облако или несколько облак. Например, в одно - ежемесячные, в другое - еженедельные/ежедневные.
  7. Добавление и автопродление бесплатных SSL-сертификатов.
  8. Добавление/удаление портов в firewall.
  9. Желательно, возможность менять версию PHP для каждого домена в отдельности. (Для Vesta нашел такой мод, очень удобная штука).
  10. Для полного счастья:
    10.1 Статистика нагрузки на процессор, память, диск - в графическом виде.
    10.2 Возможность быстро просматривать логи всех серверов и самой панели, не копаясь по папкам в фтп-клиенте.
    10.3 Возможность править конфигурационный файлы серверов на одной странице.
    10.4 Встроенный антивирус типа ai-bolit или еще какие-то с настройкой циклической автопроверки и уведомлениями на почту в случае чего.
    10.5 Возможность создавать дочерние аккаунты с биллингом.

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

Да, сайты побочная активность, но разобраться желание есть. Хотелось бы разобраться, хотя бы для того, чтобы знать - что требовать, как должно быть, какие подводные камни, и насколько это трудозатратно. Более того, не знаю, где обитают хорошие специалисты в этой области и на какой системе оплаты с ними лучше работать. Сдельно - в среднем: берут много за каждое мелкое дело, выполняют кривыми костылями, держится плохо и недолго, объяснить что сделали не могут, пропадают, разбираются в очень узком направлении. Платить фиксированную ставку - тоже как-то странно, если можно все наладить один раз - постоянные расходы ежемесячно вхолостую. В общем, так много вопросов и пока что ищу ответы.

Я не считаю себя крутым разработчиком или хостером, но даже я бы не стал связываться с этими панелями - все что я видел такого толка проблем доставляло больше, чем решало, и на мой взгляд гораздо проще разобраться самому и сделать (не думаю что вам нужно что-то прям необычное), чем потом после какого-то критичного факапа не знать куда бежать.

А что, если рассмотреть cPanel/Plesk/hPanel/Direct Admin/Webmin/ISPmanager/ISPConfig? Везде ли такая же чехарда, как с Vesta? Сделать свою панель управления - думаю, могут уйти года. Лучше, наверное допилить или адаптироваться под какую-то адекватную панель, может, хотя бы, с хорошей техподдержкой.

mihacb
() автор топика
Ответ на: комментарий от mihacb

Поэтому выбрал Vesta, но сам хочу найти достойную альтернативу.

Единственная достойная альтернатива - удалить этосамое и попробовать головой каждый нужный сервис с изучением соответствующей документации.

Anoxemian ★★★★★
()
Ответ на: комментарий от mihacb

Отписался чуть выше - видимо что-то с переменной SUSPENDED.

Ну судя по тому что там файл "conf" то где-то это настраивается, может в веб-интерфейсе. Пропишите туда значение руками. Можно погрепать по файлам панели и поискать где эта переменная меняется, можно настроить inotify и попытаться отловить изменение файла, может это что-то прояснит.

Сделать свою панель управления - думаю, могут уйти года.

Бэкапы я бы на вашем месте рассматривал вообще как отдельный "проект", потому что кроме того что вы делаете дамп базы да копируете каталог с пхп-скриптами вам надо еще проверять что бэкап выполнился успешно, для чего его надо развернуть в чистой среде и протестировать, и плюс вам надо иметь механизм разворачивания этого бэкапа на проде, в том числе хорошо бы еще иметь возможность не просто так снести все и накатить бэкап, а понимать что где откатывается с возможностью сохранения части данных. Для "инкрементальности" скриптов можно взять гит, но вот с базой все сложнее. В любом случае без проверки "восстановляемости" бэкапов можете считать что у вас их нет вообще.

Для ssl-сертификатов можно взять Let's Encrypt и он будет сам следить за этим.

Сбор статистики использования ресурсов осуществляется обычно системами мониторинга, от каких-то больших вещей типа zabbix и до запуска atop и парсинга отчетов.

Для логов есть обкатанные варианты, такие как ELK - сможете не просто смотреть логи не в консоли, но еще и искать по ним, строить графики всякие по количествам ошибок и вообще настроить оповещения на определенные записи.

Управление записями в dns - ну это довольно простая задача, в целом можно решить просто шаблоном, который будет заполняться по вашим доменам автоматически.

Ну а графический интерфейс, который будет именно что интерфейсом, дергающим APIшки и особо не содержащий ло

Это я все к чему - вам реально нужно чтоб это все была какая-то панель? Не может быть одновременно качественно, быстро и дешево. Если это не какой-то однодневный проект то может стоит сразу строить нормальную инфраструктуру? Вам и специалистов найти проще будет, и вообще вы не завязаны на какую-то конкретную технологию и если что-то не нравится можете менять компоненты инфраструктуры как захотите. Но конечно это все будет сложнее построить чем просто скачать панель, да и в целом большие возможности требуют больших вложений ресурсов, может вам оно и не нужно.

micronekodesu ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.