LINUX.ORG.RU

Есть какие-то веб-фреймворки для баша?


0

0

Проблема первая - это сделать URLDecode пришедшим данным, пришлось юзать 2 страницы кода отсюда: http://www.shelldorado.com/scripts/cmds/urldecode, сами параметры разбирал грепом - некрасиво все это

Проблема вторая - все время висит коннект к серверу, пока работает скрипт, запустить что-то тяжеловесное в фоне не выходит. Если сделать heavyapp > /dev/null 2> /dev/null & disown -a, то opera прекращает грузить страницу до завершения выполнения, однако в netstat коннект продолжает висеть (или это виноват http1.1?)

Хотелось бы чего-то красивого и простого, дабы быстро набросать скриптов, а потом запускать их через веб

Извращенец %)

Deleted
()
Ответ на: комментарий от redgremlin

>>Проблема первая - это сделать URLDecode пришедшим данным

use perl


php -r «echo urldecode('$DATA');»


:)

KRoN73 ★★★★★
()

Посмотрите исходники webif2 (админки OpenWRT). Она вроде на баше написана

proDOOMman ★★
()

>, сами параметры разбирал грепом
o_0

[koot@gdetotut ~]$ head -n 8 www/library.sh
#!/bin/sh

get_opts() {
for i in `echo $QUERY_STRING|sed 's/\&/\ /g'`
do
eval $i
done
}

snoopcat ★★★★★
()

>(или это виноват http1.1?)
или вообще так и должно быть о0
ибо страница -то генерится этим самым cgi-сервером, и он ждет окончания выполнения heavyapp, ибо не хочет отдавать страницу недогенеренной.

snoopcat ★★★★★
()

И как с производительностью?

exst ★★★★
()
Ответ на: комментарий от Deleted

о_0
нет, как оказалось...
[koot@gdetotut ~]$ sudo /etc/rc.d/nginx-fcgi start
:: Starting Nginx-CGI [DONE]
[koot@gdetotut ~]$ touch TEEEEST
[koot@gdetotut ~]$ wget -oO /dev/null «localhost/index.elf?xz=`rm TEEEEST`»
[koot@gdetotut ~]$ cat TEEEEST
cat: TEEEEST: Нет такого файла или каталога
[koot@gdetotut ~]$ sudo /etc/rc.d/nginx-fcgi stop
:: Stopping Nginx-CGI [DONE]
[koot@gdetotut ~]$

snoopcat ★★★★★
()

>Хотелось бы чего-то красивого и простого, дабы быстро набросать скриптов, а потом запускать их через веб
Ну и при чём тут bash?
Алсо werc во все поля.

x3al ★★★★★
()
Ответ на: комментарий от snoopcat

воот.

[koot@gdetotut sctt-er]$ wget -qO - 'localhost/index.elf?xz="$(rm -rf /)"'
1 ok
2 ALERT
3 ok
error detected on 2 level, executing 'error 500' and exitting...
<HTML>
<HEAD><TITLE>snoopcatt :: Добро пожаловать</TITLE>
</HEAD>
<link rel="stylesheet" type="text/css" href="/style.css"/>
<div id="underlinemenu"><ul>
<li><a href="/" title="На главную страницу">Главная</a></li>
<li><a href="/?page=test" title="о_0">Тестовый страницъ</a></li>
</div>
<b>Ошибка 500: Неверный аргумент (:</b>
<br><hr><small>
<i><b>Now these points of data make a beautiful line, and we are out of beta. We are releasing on time<br>
...

snoopcat ★★★★★
()

Юзать перл, пых, педон или руби из баше-скрипта - это верх извращения, ящитаю.

Форму процессил так:

read -t 1 REQ

URL=`echo «$REQ» | tr «&» «\n» | grep url= | cut -d= -f2- | awk 'BEGIN{hextab [«0»] = 0;hextab [«8»] = 8;hextab [«1»] = 1;hextab [«9»] = 9;hextab [«2»] = 2;hextab [«A»] = hextab [«a»] = 10;hextab [«3»] = 3;hextab [«B»] = hextab [«b»] = 11;hextab[«4»] = 4;hextab [«C»] = hextab [«c»] = 12;hextab [«5»] = 5;hextab [«D»] = hextab [«d»] = 13;hextab [«6»] = 6;hextab [«E»]= hextab [«e»] = 14;hextab [«7»] = 7;hextab [«F»] = hextab [«f»] = 15;}
{
decoded = «»
i = 1
len = length ($0)
while ( i <= len ) {
c = substr ($0, i, 1)
if ( c == «%» ) {
if ( i+2 <= len ) {
c1 = substr ($0, i+1, 1)
c2 = substr ($0, i+2, 1)
code = 0 + hextab [c1] * 16 + hextab [c2] + 0
c = sprintf («%c», code)
i = i + 2
}
} else if ( c == «+» ) {
c = " "
}
decoded = decoded c
++i
}
print decoded
}' -`

Увы, ничего кошернее awk не нашлось

simple_best_world_web_master
() автор топика
Ответ на: комментарий от snoopcat

> for i in `echo $QUERY_STRING|sed 's/\&/\ /g'`

Мне как-то URL=`echo «$REQ» | tr «&» «\n» | grep url= | cut -d= -f2- | ближе

А вообще можно записать как echo «$REQ» | tr «&» «\n» | xargs -n1 export

ибо страница -то генерится этим самым cgi-сервером, и он ждет окончания выполнения heavyapp, ибо не хочет отдавать страницу недогенеренной.

STDOUT/STDERR я перенаправляю, с этого момента скрипт теряет связь с heavyapp, что работает в апаче. А если этого не сделать - будет делать вид, что грузит страницу. Но коннект висит в обоих случаях.

simple_best_world_web_master
() автор топика

А тулкит тоже на баше пишете?

amomymous ★★★
()

А почему не собрать энкодящий/декодящий бинарник? :)

Bad_Habit
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.