выполнение bash-скрипта через CGI - PullRequest
0 голосов
/ 12 ноября 2018

все!

У меня проблема с выполнением скрипта .sh из браузера. эхо команда работает хорошо. Но когда я сохраняю значение в переменной и передаю его другому сценарию в качестве аргумента, это не работает. Цени любую помощь.

Пример:

Здесь я передаю $ XX другому сценарию

if [ -z "$QUERY_STRING" ]; then
    exit 0

еще

 XX=`echo "$QUERY_STRING" | sed -n 's/^.*val_x=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
 if [ -z "$XX" ]; then
    echo "X is empty"
 else

    echo "Processing..."
    /sas/oljas_scripts/find_usage_of_tables.sh $XX
    echo "Done"
 fi

 YY=`echo "$QUERY_STRING" | sed -n 's/^.*val_y=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
 ZZ=`echo "$QUERY_STRING" | sed -n 's/^.*val_z=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
 echo "val_x: " $XX
 echo '<br>'
 echo "val_y: " $YY
 echo '<br>'
 echo "val_z: " $ZZ

ц

1 Ответ

0 голосов
/ 12 ноября 2018

Файл, который вы пытаетесь выполнить, /sas/oljas_scripts/find_usage_of_tables.sh, не является исполняемым для веб-сервера. В настоящее время это:

-rwxrw-r-- 1 sas sas 1540 Nov 12 12:58 find_usage_of_tables.sh

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

Либо установите файл как читаемый и исполняемый для всех (не рекомендуется):

chmod 755 /sas/oljas_scripts/find_usage_of_tables.sh

или задайте группу файла как группу, в которой находится веб-сервер, и соответственно установите права доступа группы для файла:

chmod 754 /sas/oljas_scripts/find_usage_of_tables.sh
chgrp www-data /sas/oljas_scripts/find_usage_of_tables.sh

Вам может понадобиться sudo для последнего. Кроме того, имя группы веб-сервера может не совпадать с www-data - проверить конфигурацию вашего веб-сервера или прочитать его из списка процессов, как этот ответ предлагает.

...