The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Передача значений в CGI-скрипт"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Передача значений в CGI-скрипт" 
Сообщение от NeoLynx emailИскать по авторуВ закладки on 24-Апр-05, 19:53  (MSK)
Уважаемые, нкогда до этого не имел дело с SH, но вот столкнулся с такой задачей:

Мне нужно cgi-скрипту передать два параметра (пути).
Я их передал постом, получил на выходе:
f=http/test/site.zip&d=http/test

На данный момент скрипт выглядит так:

#!/bin/sh

echo Content-type: text/plain
echo

echo "<b>метод POST</b><br>"
cat
echo "<br>"
set | grep CONTENT_LENGTH

/usr/bin/unzip -x ../$CONTENT_LENGTH -d ../http

ессно тут ничего не работает т.к.
CONTENT_LENGTH = f=http/test/site.zip&d=http/test


подскажите как отпарсить данные, чтобы получить:

f=http/test/site.zip
d=http/test

заранее спасибо

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Передача значений в CGI-скрипт" 
Сообщение от madskull Искать по авторуВ закладки(ok) on 24-Апр-05, 23:30  (MSK)
>ессно тут ничего не работает т.к.
>CONTENT_LENGTH = f=http/test/site.zip&d=http/test
>
>
>подскажите как отпарсить данные, чтобы получить:
>
>f=http/test/site.zip
>d=http/test
>
>заранее спасибо

можно так:
eval ${CONTENT_LENGTH//&/ }

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Передача значений в CGI-скрипт" 
Сообщение от NeoLynx emailИскать по авторуВ закладки on 25-Апр-05, 11:20  (MSK)

>можно так:
>eval ${CONTENT_LENGTH//&/ }


а можно поподробнее? я не очень разбираюсь в SH.

строку добавил, но что делать дальше и как разделить на переменные и пользоваться ими вообще не пойму.

Или доку какую.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Передача значений в CGI-скрипт" 
Сообщение от madskull Искать по авторуВ закладки(ok) on 25-Апр-05, 11:54  (MSK)
>
>>можно так:
>>eval ${CONTENT_LENGTH//&/ }
>
>
>а можно поподробнее? я не очень разбираюсь в SH.
>
>строку добавил, но что делать дальше и как разделить на переменные и
>пользоваться ими вообще не пойму.

${CONTENT_LENGTH//&/ } - заменяет '&' на пробел -> получается
"f=http/test/site.zip d=http/test"

eval "исполняет" эту строку, то есть в переменным f и d присваивается как раз то, что нужно.

>Или доку какую.

http://gazette.linux.ru.net/rus/articles/index-abs-guide.html

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Передача значений в CGI-скрипт" 
Сообщение от NeoLynx emailИскать по авторуВ закладки on 25-Апр-05, 12:09  (MSK)

>eval "исполняет" эту строку, то есть в переменным f и d присваивается
>как раз то, что нужно.
>

Поробую подробне расписать, есть скрипт, который при ручном вводе отрабтывает всё на 5:

#!/bin/sh
echo Content-type: text/plain
echo
/usr/bin/unzip -x ../http/site.zip -d ../http

Как только я написал:

#!/bin/sh
echo Content-type: text/plain
echo
echo "<b>метод POST</b><br>"
cat
echo "<br>"
eval ${CONTENT_LENGTH//&/ }
set | grep CONTENT_LENGTH
/usr/bin/unzip -x ../$f -d ../$d

т.е. передал постом, скрипт мне выдает:
<b>метод POST</b><br>
f=http%2Ftestinnnngi.zip&d=http%2F<br>
CONTENT_LENGTH=34

и естественно ничего не происходит :(
может как-то не правильно с переменными работаю?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Передача значений в CGI-скрипт" 
Сообщение от madskull Искать по авторуВ закладки(ok) on 25-Апр-05, 13:06  (MSK)

>Как только я написал:
>
>#!/bin/sh
>echo Content-type: text/plain
>echo
>echo "<b>метод POST</b><br>"
>cat
>echo "<br>"
>eval ${CONTENT_LENGTH//&/ }
>set | grep CONTENT_LENGTH
>/usr/bin/unzip -x ../$f -d ../$d
>
>т.е. передал постом, скрипт мне выдает:
><b>метод POST</b><br>
>f=http%2Ftestinnnngi.zip&d=http%2F<br>
>CONTENT_LENGTH=34
>
>и естественно ничего не происходит :(
>может как-то не правильно с переменными работаю?

мдя, и я ступил... CONTENT_LENGTH это ж просто количество символов...
насколько я разбираюсь в CGI, надо делать примерно следующее

str=`cat`  # получаем данные POST
eval ${str//&/ }    # присваиваем переменным значения

ну и дальше работаем с этими переменными
/usr/bin/unzip -x ../$f -d ../$d

вот только кто будет переводить символы типа %2F - я не знаю :)
можно, конечно, и sed натравить...

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Передача значений в CGI-скрипт" 
Сообщение от NeoLynx emailИскать по авторуВ закладки on 25-Апр-05, 13:19  (MSK)
>str=`cat`  # получаем данные POST
>eval ${str//&/ }    # присваиваем переменным значения
>
>ну и дальше работаем с этими переменными
>/usr/bin/unzip -x ../$f -d ../$d
>
>вот только кто будет переводить символы типа %2F - я не знаю

Сделал, и на всякий в качестве эксперимента убрал /:

str=`cat`
eval ${str//&/ }

/usr/bin/unzip -x ../http/$f -d ../http/$d

html файл для передачи поста:
  <FORM ACTION="/cgi-bin/unarh_new.cgi" METHOD="POST">
  <input type=hidden value="testinnnngi.zip" name=f>
  <input type=hidden value="" name=d>
  <INPUT TYPE="submit" VALUE="Submit">
  </FORM>

и всё равно без изменений :((
при этом явное указание работает :((

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Передача значений в CGI-скрипт" 
Сообщение от dimus Искать по авторуВ закладки(??) on 25-Апр-05, 14:29  (MSK)
А может использовать метод GET?
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Передача значений в CGI-скрипт" 
Сообщение от NeoLynx emailИскать по авторуВ закладки on 25-Апр-05, 15:41  (MSK)
>А может использовать метод GET?

А подробнее?
Чем отличаются понимаю, но чем могут помочь в данном случае?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Передача значений в CGI-скрипт" 
Сообщение от madskull Искать по авторуВ закладки(ok) on 25-Апр-05, 14:40  (MSK)
>>str=`cat`  # получаем данные POST
>>eval ${str//&/ }    # присваиваем переменным значения
>>
>>ну и дальше работаем с этими переменными
>>/usr/bin/unzip -x ../$f -d ../$d
>>
>>вот только кто будет переводить символы типа %2F - я не знаю
>
>Сделал, и на всякий в качестве эксперимента убрал /:
>
>str=`cat`
>eval ${str//&/ }
>
>/usr/bin/unzip -x ../http/$f -d ../http/$d
>
>html файл для передачи поста:
>  <FORM ACTION="/cgi-bin/unarh_new.cgi" METHOD="POST">
>  <input type=hidden value="testinnnngi.zip" name=f>
>  <input type=hidden value="" name=d>
>  <INPUT TYPE="submit" VALUE="Submit">
>  </FORM>
>
>и всё равно без изменений :((
>при этом явное указание работает :((

а если перед eval посмотреть на данные?
echo "str=$str<br>"

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Передача значений в CGI-скрипт" 
Сообщение от NeoLynx emailИскать по авторуВ закладки on 25-Апр-05, 15:39  (MSK)
>а если перед eval посмотреть на данные?
>echo "str=$str<br>"

делаем так:
echo "str=$str"
str=`cat`
eval ${str//&/ }

на выходе:
f=testinnnngi.zip&d=<br>
str=
CONTENT_LENGTH=20

и если после евал ставить, тоже самое...

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Передача значений в CGI-скрипт" 
Сообщение от madskull Искать по авторуВ закладки(ok) on 25-Апр-05, 16:11  (MSK)
>echo "<b>метод POST</b><br>"
>cat
^^^^^^
>echo "<br>"

слушай, а зачем у тебя там cat ?!!
он и отнимает у str данные :)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Передача значений в CGI-скрипт" 
Сообщение от NeoLynx emailИскать по авторуВ закладки on 25-Апр-05, 16:20  (MSK)
>>echo "<b>метод POST</b><br>"
>>cat
>^^^^^^
>>echo "<br>"
>
>слушай, а зачем у тебя там cat ?!!
>он и отнимает у str данные :)

Убрал, если ставить до евал ничего не пишет, если после:
str=`cat`
eval ${str//&/ }
echo "str=$str"

на выходе:
str=f=testinnnngi.zip&d=

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Передача значений в CGI-скрипт" 
Сообщение от madskull Искать по авторуВ закладки(ok) on 26-Апр-05, 09:50  (MSK)
>Убрал, если ставить до евал ничего не пишет, если после:
>str=`cat`
>eval ${str//&/ }
>echo "str=$str"
>
>на выходе:
>str=f=testinnnngi.zip&d=

Ну, собственно, это и должно быть.
Больше интересует, отрабатывает ли правильно после
>str=`cat`
>eval ${str//&/ }
твоя команда
>/usr/bin/unzip -x ../$f -d ../$d
?

Что говорит
echo /usr/bin/unzip -x ../$f -d ../$d
?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "Передача значений в CGI-скрипт" 
Сообщение от NeoLynx emailИскать по авторуВ закладки on 27-Апр-05, 20:17  (MSK)

>Больше интересует, отрабатывает ли правильно после
>>str=`cat`
>>eval ${str//&/ }
>твоя команда
>>/usr/bin/unzip -x ../$f -d ../$d
>?
>
>Что говорит
>echo /usr/bin/unzip -x ../$f -d ../$d
>?

Сорри, пропал, траблы с нетом.
Вот чего пишет:
/usr/bin/unzip -x ../ -d ../

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру