LINUX.ORG.RU
ФорумTalks

HTTP сервер на bash


0

0

:;while [ $? -eq 0 ];do nc -vlp 8080 -c’(r=read;e=echo;$r a b c;z=$r;while [ ${#z} -gt 2 ];do $r z;done;f=`$e $b|sed ’s/[^a-z0-9_.-]//gi’`;h=”HTTP/1.0″;o=”$h 200 OK\r\n”;c=”Content”;if [ -z $f ];then($e $o;ls|(while $r n;do if [ -f "$n" ]; then $e “`ls -gh $n` “;fi;done););elif [ -f $f ];then $e “$o$c-Type: `file -ib $f`\n$c-Length: `stat -c%s $f`”;$e;cat $f;else $e -e “$h 404 Not Found\n\n404\n”;fi)’;done

/*Теперь по URL http://ваш_ip:8080/ можно получить доступ ко всем файлам, находящимся в текущим каталоге. Очевидных и прямолинейных способов сменить каталог нет. Как и раньше, протестировано и работает под Linux, bash 3.2.13, и с хоббитовским netcat v1.10 с поддержкой опции -с (запустите netcat -h и посмотрите. Как минимум в Ubuntu, Debian и Fedora Core такая опция есть).*/

http://alexey.sveshnikov.ru/blog/2007/08/30/bash-httpd-2/

(:)

// у меня где-то версия с cgi валяется.

polachok
()

<OT>опять этот быдлокод на быдло баше? это который по счету слоупок?</OT>

Какой смысл делать однострочник на более чем 72 символа?
На Си/Лиспе тоже однострочники можно писать, читаемость,
правда, нулевая будет.

Зачем такое делать на жирном bash'е?

ubuntu@ubuntu:~$ ls -flh `which {,da,ba}sh`
lrwxrwxrwx 1 root root    4 2008-07-02 09:48 /bin/sh -> dash
-rwxr-xr-x 1 root root  99K 2008-03-12 11:52 /bin/dash
-rwxr-xr-x 1 root root 795K 2008-05-12 18:36 /bin/bash

freebsd% ls -flh `where sh tcsh`
-r-xr-xr-x  1 root  wheel   110K Aug 12 07:44 /bin/sh
-r-xr-xr-x  2 root  wheel   304K Aug 12 07:44 /bin/tcsh

ps, бздец, неужели sh(1) (точнее ash) во фре жирнее dash(1) или это продукт флагов компиляции (-Os, например)?

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

% ls -flh `which {,da,ba}sh`
ls: cannot access dash: No such file or directory
ls: cannot access not: No such file or directory
ls: cannot access found: No such file or directory
lrwxrwxrwx 1 root 4 2008-06-19 12:36 /bin/sh -> bash*
-rwxr-xr-x 1 root 685K 2008-05-12 23:02 /bin/bash*

debian lenny

% ssh honey.rootshell.be "ls -flh `where sh`"
-r-xr-xr-x 3 root bin 317K Mar 10 2007 /bin/sh

polachok
()

Очень старая вещь. Постыдились бы постить.

anonymous
()

однострочник на Перле? :)

anonymous
()

а зачем нужен ещё и netcat? bash/zsh сам умеет с сокетами работать. С netcat'ом любой дурак напишет.

anonymous
()

sanja@Domovoi-laptop:~$ :;while [ $? -eq 0 ];do nc -vlp 8080 -c’(r=read;e=echo;$r a b c;z=$r;while [ ${#z} -gt 2 ];do $r z;done;f=`$e $b|sed ’s/[^a-z0-9_.-]//gi’`;h=”HTTP/1.0″;o=”$h 200 OK\r\n”;c=”Content”;if [ -z $f ];then($e $o;ls|(while $r n;do if [ -f "$n" ]; then $e “`ls -gh $n` “;fi;done););elif [ -f $f ];then $e “$o$c-Type: `file -ib $f`\n$c-Length: `stat -c%s $f`”;$e;cat $f;else $e -e “$h 404 Not Found\n\n404\n”;fi)’;done
bash: ошибка синтаксиса около неожиданной лексемы `('
sanja@Domovoi-laptop:~$

:)

Sanja
()
Ответ на: комментарий от anonymous

> bash сам умеет с сокетами работать.

слушать не умеет, для этого нужен inetd или netcat

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