HTTP сервер на BASH

Есть много способов поделится файлами с друзьями, например поднять у себя HTTP сервер, но устанавливать что то желания нет, данный скриптик поможет вам реализовать задуманное за пару секунд. Простой HTTP Сервер написанный на Bash который занимает всего одну строчку…

Код скрипта приведен ниже:

Код:

:;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 "<a href=\"/$n\">`ls -gh $n`</a><br>";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 такая опция есть).

Для удобства можно сохранить его в файл и написать в .bash_profile примерно следующее:

alias share='sh ~/bash_httpd.sh'

Сайт автора: http://alexey.sveshnikov.ru/blog