The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

HTTP сервер на BASH
1001-й способ поделиться файлом с коллегами: с помощью простенького HTTP-сервера, 

код которого умещается в одной строке:

:;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 -e "$o$c-Type: `file -ib $f`\n$c-Length: `stat -c%s $f`\n";cat $f;
else $e -e "$h 404 Not Found\n\n404\n";fi)';done

Этот сервер заработает на Linux, bash и с хоббитовским netcat с патчем sh-c (добавляющим опцию -c, 
такой netcat есть во многих дистрибутивах, как минимум: в ubuntu, debian и fedora core). 
После запуска следует зайти по адресу http://ваш_ip:8080. 

При запросе корневой директории будет выведен список файлов, при запросе файла 
будут отданы корректные заголовки Content-Length и Content-Type. Также сервер корректно 
обрабатывает ошибку 404. Просматривать можно содержимой только текущей директории 
и сменить ее никак нельзя.

Подробнее про него можно почитать на http://alexey.sveshnikov.ru/blog/2007/08/30/bash-httpd-2/
 
05.09.2007 , Автор: mahoro , Источник: http://alexey.sveshnikov.ru/blog/20...
Раздел:    Корень / Программисту и web-разработчику / Shell / Готовые скрипты

Обсуждение [ RSS ]
 
  • 1.1, автор сей статьи, 16:55, 06/09/2007 [ответить] [смотреть все]
  • +/
    автор, ты монстр!:)
     
  • 1.2, snedi, 17:08, 07/09/2007 [ответить] [смотреть все]
  • +/
    респект! )
     
  • 1.3, s2, 22:26, 08/09/2007 [ответить] [смотреть все]
  • +/
    зачет
     
  • 1.4, Z3, 18:47, 09/09/2007 [ответить] [смотреть все]
  • +/
    Докачки нету.Потому lighttpd мну милее - ест ресурсов с гулькин нос и работает как часы )
     
  • 1.5, sapun, 15:08, 11/09/2007 [ответить] [смотреть все]
  • +/
    Круто. Автор, делай массивный проект!
     
  • 1.6, 0x21h, 08:45, 12/09/2007 [ответить] [смотреть все]  
  • +/
    Нет слов :)
     
  • 1.7, skid, 01:47, 15/09/2007 [ответить] [смотреть все]  
  • +/
    Изврат конечно все одной строкой писать, но автору респект!
     
  • 1.8, Ailer, 12:37, 19/09/2007 [ответить] [смотреть все]  
  • +/
    О да... Офигительно :)))
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:

     Добавить заметку
     Версия для печати
     
     Поиск заметки:
     

    Последние заметки
    - 12.05 Организация шифрованного бэкапа с помощью rdiff-backup, encfs и Dropbox
    - 11.05 Настройка беспроводного соединения в Debian GNU/Linux
    - 07.05 Использование Google Drive в Linux
    - 18.04 Использование нескольких сетевых стеков в Linux
    - 15.04 Восстановление стандартного KDE меню после его удаления (например, wine)
    - 11.04 Настройка gmirror при использовании GPT во FreeBSD 9
    - 09.04 Маршрутизатор на базе FreeBSD с приоритизация трафика средствами PF и ALTQ
    - 02.04 Частичное восстановление данных MySQL из бэкапа, созданного с использованием LVM
    - 21.03 Настройка DNSSEC в BIND 9.9
    - 17.03 Набор номера на Cisco IP Phone 7960/7940 из скрипта
    RSS | Следующие 15 записей >>


    ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Оформить подписку на год


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList