2016-04-08 4 views
0

Я использую сценарий Lua с ngnix для создания ISO-файла. Сценарий Lua обрабатывает запрос, и он должен передать его команде genisoimage.Lua не выполнит скрипт bash

Я попытался с:

local pack_cmd = "genisoimage -V" .. some_other_name 
os.execute(pack_cmd) 

Команда не была успешно выполнена, и как код возврата я 3328. У меня пробовал с абсолтой путь (/usr/bin/genisoimage и /bin/genisoimage) но он не работает.

Я попытался простой обходной путь - Выполнить команду genisoimage в Баш скрипт и в Lua скрипт запустить его так:

local pack_cmd = "bash /absoulte/path/script.sh " .. some_other_name 
os.execute(pack_cmd) 

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

local pack_cmd = "bash /absoulte/path/script.sh " .. some_other_name .." >> error.log" 
os.execute(pack_cmd) 

Версия с ручками не работает, а

local handle = io.popen(pack_cmd) 
local result = handle:read("*a") 
handle:close() 

Если я выполнить pack_cmd строку вручную все работает нормально. Выполняется также сценарий bash.

+0

Что говорит вам 'strace', что происходит? –

+0

... btw, генерация кода посредством конкатенации строк - очень плохая практика (может привести к уязвимости в отношении инъекций). Вместо этого рассмотрите использование явного массива argv. –

+0

@CharlesDuffy Спасибо за такой быстрый ответ! Я узнал, что у меня нет прав на выполнение этого как пользователь www-data. Спасибо за предложения. – sstevan

ответ

0

Проблема была с разрешениями для пользователя www-data.

+1

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

Смежные вопросы