Скрипт Bash не выполняется на .lua, выход из состояния 7 (слишком длинный список аргументов) - PullRequest
2 голосов
/ 07 мая 2019

Файл .lua выполняется, потому что я увидел строки из m.log() в моем журнале, но код bash не выполняется.Зачем?Есть что-то, чего мне не хватает?Также нет ошибок в журналах о команде в os.execute().

#!/usr/bin/lua

function main()
m.log(1,"Starting script execution \n")
os.execute ("route add xx.xxx.xxx.xxx reject")
## i also tried os.execute ("/path/to/file.sh") and giving permision to execute with chmod +x filename.sh
m.log(1,"Script execution finished\n")
end

ПРИМЕЧАНИЕ. Я выполнил команду из os.execute() непосредственно в командной строке, и IP-адрес был добавлен в routeчто-то не так в моем коде lua ...

Я изменил permisions на 777 из папки / файла, в котором есть файл .lua и .sh только для проверки, была ли это проблема permision,и ничего не изменилось, я также попытался изменить владельца и группу пользователей.

Редактировать - Этот нижеприведенный ниже не работал, потому что он был в папке /root/, поэтому мне нужно было переместить егона /var/www/.

os.execute ("/path/to/file.sh")

Но код bash не выполняется, os.execute возвращает состояние выхода 7 (слишком длинный список аргументов), я искал об этом и понял, что это потому, чтовесь код bash выполняется внутри кавычек: Почему я получаю "/ bin / sh: список аргументов слишком длинный" при передаче аргументов в кавычках?

Как я могу это исправить?

1 Ответ

1 голос
/ 07 мая 2019

Вы должны проверить результат os.execute , так как он возвращает статус завершения команды как один из результатов.

Вы также можете использовать io.popen чтобы запустить скрипт и проверить сгенерированный вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...