Wednesday, October 15, 2008
HTTP сервер размером в 222 байта :)
В продолжение предыдущей идеи с передачей файлов по HTTP. Я не удержался и написал вполне полноценный (для нужд раздачи файлов на соседний компьютер) HTTP сервер:
while true; do nc -vv -l -p 8080 -c '( read a b c; file=`echo $b | sed 's/[^a-z0-9.]//g'`; if [ a$file = "a" ]; then ( ls | (while read f; do echo "<a href=$f>$f</a><br>"; done) ); else cat $PWD/$file; fi )'; sleep 1; done
(все это - одна команда, должна вводиться в одну строку. Тестировалось в linux/bash 3.1.17)
Вот и все :) Правда, на этот раз я опять решил отказаться от заголовков ответа, т.к. это слишком усложнит "команду", но при желании их можно взять из предыдущего примера. Этот сервер отдает все файлы, которые есть в текущем каталоге и пытается противодействовать попыткам его сменить. В случае, если запрашивается корневая директория, то управление передается своеобразному mod_index - т.е. выводится список файлов-ссылок. В конце добавлена задержка в 1 сек для того, чтобы была возможность убить его нажатием Ctrl-C.
Воистину, netcat одна из моих любимых программ!
Буду рад услышать замечания относительно сервера :)
p.s. Кто теперь осмелится заявить, что я не извращенец? :))
p.p.s. HTTP server bash netcat shell
UPD: новая версия сервера доступна здесь
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment