tarampampam / nod32-update-mirror

:large_orange_diamond: [WIP] ESET Nod32 Updates Mirror
MIT License
108 stars 50 forks source link

1.0.1.6 #45

Closed mr-butch closed 8 years ago

mr-butch commented 8 years ago
  1. Скрипт ругается на 25 строку, на readlink - "не верный параметр -e". Возможно у меня урезанный busybox. Возможно ли обойтись без этой команды?
  2. Запускаю с --update, при закачке выдает красным "Downloading file error", хотя фактически файл загружается. Лог файл приложил. nod32mirror.txt
tarampampam commented 8 years ago

Пожалуйста, приложите всю информацию, которая была запрошена при создании issue. Без неё врятли чем-то смогу вам помочь.

mr-butch commented 8 years ago
Linux version 2.6.22.19 (root@asus) (gcc version 4.2.3) #1 Fri Jan 15 08:41:55 CST 2016

GNU bash, version 4.3.42(1)-release (mipsel-openwrt-linux-gnu)

GNU Wget 1.17.1 built on linux-gnu.
+digest -gpgme +https +ipv6 -iri +large-file -metalink -nls +ntlm
+opie -psl +ssl/openssl

curl 7.48.0 (mipsel-openwrt-linux-gnu) libcurl/7.48.0 OpenSSL/1.0.2h zlib/1.2.8
Protocols: file ftp ftps http https imap imaps pop3 pop3s rtsp smtp smtps tftp
Features: IPv6 Largefile SSL libz

cat: can't open './conf.d/*.conf': No such file or directory
export NOD32MIRROR_COLOR_OUTPUT=1;
export NOD32MIRROR_USE_FREE_KEY=1;
export NOD32MIRROR_MIRROR_DIR="/opt/etc/nod32-mirror/nod32mirror";
export NOD32MIRROR_TEMP_DIR="/opt/etc/nod32-mirror/nod32mirror/tmp";
export NOD32MIRROR_SERVER_0='http://update.eset.com:80/eset_upd/ username password';
export NOD32MIRROR_LANGUAGES='1033 1049';
export NOD32MIRROR_VERSIONS='pcu 4 5 6 7 8 9 10 11';
export NOD32MIRROR_LOG_PATH="/opt/etc/nod32-mirror/nod32mirror/nod32mirror.log";
export NOD32MIRROR_TEST_URI='http://update.eset.com:80/v8-rel-sta/mod_010_smon_1036/em010_32_l0.nup';
export NOD32MIRROR_TIMESTAMP_FILE_NAME='lastevent.txt';
export NOD32MIRROR_VERSION_FILE_NAME='version.txt';
tarampampam commented 8 years ago

Хорошо. По поводу первого - лучше всего скопируйте свой текущий конфиг в ./conf.d, и уже его изменяйте под себя (об этом было написано в readme-файле, но вам виднее конечно-же). Добавьте в него строку:

export NOD32MIRROR_BASE_DIR="/opt/etc/путь/до/директории/с_файлом_nod32-mirror.sh";

По поводу второго - попробуйте в конфиге выставить:

export NOD32MIRROR_CURL_BIN='false';

Тем самым заставив скрипт работать с wget вместо curl. Думаю, этого должно быть вполне достаточно.

mr-butch commented 8 years ago

По поводу первого, Еще со времен старых Ваших скриптов решаю этот вопрос заменой "dirname $(readlink -e $0)" на просто "dirname $0". У меня только так работает. Но все равно есть еще ошибки при выполнении:

./nod32-mirror.sh --update
./include/bootstrap.sh: line 61: id: command not found
[00:12:13] Please do not run this script as root
[Question] Do you want to continue? [y|n] y

Я отвечаю "y" и идет дальше, не знаю на что влияет это ошибка.

По поводу второго Ваше предложение помогло, теперь в конце строки "Download file..." пишет Success.

В остальном продолжаю тестировать.

tarampampam commented 8 years ago

dirname $0 не сработает корректно, если к скрипту обращаться по симлинку. Но проблема известна, и именно поэтому пользуйтесь директивой NOD32MIRROR_BASE_DIR.

Попробуйте поработать с cygwin (если стоит задача завести именно под windows), работа под ним протестирована и будет поддерживаться.

mr-butch commented 8 years ago
  1. Строку: export NOD32MIRROR_BASE_DIR="/opt/etc/путь/до/директории/с_файлом_nod32-mirror.sh"; добавлять в главный файл nod32-mirror.sh? В setting.conf не помогает.
  2. На ошибку: ./include/bootstrap.sh: line 61: id: command not found Не обращать внимания, и с ней все будет работать?
  3. Для чего проверка на root права запуска? Как убрать сообщение о "Do you want to continue?" на вопрос о запуске из под root, у меня других учеток нет. Чтобы запускалось сразу без этих вопросов.
tarampampam commented 8 years ago
  1. Как временное решение - можно просто изменить [[ -z $NOD32MIRROR_BASE_DIR ]] && export NOD32MIRROR_BASE_DIR=$(dirname $(readlink -e $0)); в "nod32-mirror.sh" на [[ -z $NOD32MIRROR_BASE_DIR ]] && export NOD32MIRROR_BASE_DIR="/opt/etc/путь/до/директории/с_файлом_nod32-mirror.sh";, позже подумаю как этот костыль обойти.
  2. Можно запускать с флагом -f - в этом случае ошибка проверки хоть и будет появляться, но значения никакого иметь не будет.
  3. Это принципиальная ошибка, так как запускать скрипт, которому не нужны абсолютные права в системе под рутом - очень не правильно. Лучше завести отдельного пользователя, запереть его в рабочей директории, и из-под него производить запуск скрипта.
mr-butch commented 8 years ago

В чем отличие запуска скрипта вручную от запуска cron? Если скрипт запускать вручную, то по Вашему наводке изменив export NOD32MIRROR_CURL_BIN='false'; загрузка файлов пошла. Но если же скрипт запускать через cron, то файлы закачиваться не хотят. Выходит ошибка загрузки. Формируются только папки с файлами update.ver. Самих файлов нет (

tarampampam commented 8 years ago

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

mr-butch commented 8 years ago

Теперь разобрался, в файле nod32keys.sh нужно было заменить переменную $HOME на нужный мне путь сохранения ключей. Считаю необходимым вынести в конфигурационный файл путь сохранения ключей, либо NOD32MIRROR_BASE_DIR, потому как $HOME у меня лично не срабатывает.

tarampampam commented 8 years ago

Достаточно в конфиг добавить:

export NOD32MIRROR_KEYS_DIRECTORY="$HOME/.nod32keys";

Но ваше замечание по поводу выноса данной опции в конфиг я обязательно учту, спасибо!

mr-butch commented 8 years ago
  1. В общем с этим новым скриптом таже самая проблема как и со старым. Если файлы в папке nod32mirror есть, пишет "Downloading file error", если папку очистить - "Success". Чуда не произошло (( Или это так задумано (хотя я бы при существующем файле что то типа Skipped выводил, имхо)
  2. Не обновляются клиенты, пишет в ошибке "Файл не найден". Тогда как файл существует, но ищется почему то в корне сервера. Заметил что прежний скрипт формировал путь до файла как "file=xxx.nup", тогда как новый "file=/xxx.nup". Возможно в слеше проблема, что в моем случае не находит? Возможно ли его мне убрать при формировании update.ver файла ?
tarampampam commented 8 years ago

Без конфигов как скрипта, так и nginx, без лога, без описания действия для воспроизведения поведения - увы, помочь ничем не могу.

mr-butch commented 8 years ago

Я не уверен что там вообще nginx, загружаю на внешний.

Конфиг снова приложил, его не менял. default.txt

У меня обновления лежат в папке NodUpDate, поэтому с прежним скриптом клиенты обращаются:

[13/Jul/2016:06:00:15 +0300] "GET /NodUpDate/em001_32_l0.nup HTTP/1.0" 200 764793 "-" "ESS Update (Windows; U; 32bit......)"

С новым скриптом обращение идет на:

[18/Jul/2016:09:09:05 +0300] "GET /em017_64_l0.nup HTTP/1.1" 404 304 "-" "ESS Update (Windows; U; 32bit....)"

и соответственно файлы не находит. Если залить обновления сформированные старым скриптом, то все ОК, клиенты обновляются.

mr-butch commented 8 years ago

А по поводу 1-го вопроса, у Вас все ок, при уже имеющихся файлах в папке nod32mirror?

tarampampam commented 8 years ago

К сожалению, я буду вынужден повторить то что уже говорил ранее:

  1. Если прикладываете конфиг - то прикладывайте его содержание согласно примеру (там же указано и как его оформить, и как получить). Более того - если есть вопросы относительно раздачи файлов - обязательно прикладывайте конфиг nginx;
  2. Прочитайте условия работы скрипта в readme файле - обязательным условием эксплуатации является _корректно настроенный_ nginx:
  3. По поводу пути - есть директива NOD32MIRROR_URI_PATH. Перед тем как задавать свой вопрос, ознакомьтесь внимательнее с возможными настройками, пожалуйста;
  4. Если текущая версия для вас является столь сложной в настройке - используйте старую версию. Почему было принято решение переписать скрипт указано в changeslog.

По причине того что вы игнорируете просьбы предоставить необходимые для помощи вам-же данные в отформатированном виде - сабж закрываю. Если у вас возникнут ещё какие-либо вопросы - перечитайте описанные выше пункты с первого по четвертый. Спасибо.