Я использую сценарий 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.
Что говорит вам 'strace', что происходит? –
... btw, генерация кода посредством конкатенации строк - очень плохая практика (может привести к уязвимости в отношении инъекций). Вместо этого рассмотрите использование явного массива argv. –
@CharlesDuffy Спасибо за такой быстрый ответ! Я узнал, что у меня нет прав на выполнение этого как пользователь www-data. Спасибо за предложения. – sstevan