Простая командная строка сервер HTTP

Серьезно, если Ваш поставщик не предлагает свободный (или по крайней мере дешевый) ручная помощь для крайних случаев, пора переключиться. Иначе я думаю, что Вы соглашаетесь в значительной степени со своей установкой.

Когда Ваша система так повреждается, что fsck не может зафиксировать ее, нет очень еще, чтобы сделать, кроме полного переустанавливают. Я на самом деле не видел, что это происходит, если не был фатальный отказ оборудования.

Одна вещь отметить. Для машины как это выберите стабильное распределение (Debian, RHEL, SLES), и определенно обновите только после соответственно длительного периода (новая версия, стабилизированная в течение по крайней мере 6 месяцев).

130
22.03.2017, 04:12
20 ответов

Да, nweb.

Может быть найден здесь: nweb.c

(ранее по ibm.com)

Скомпилировать nweb.c:

gcc -O -DLINUX nweb.c -o nweb
33
27.01.2020, 19:29

Попытайтесь использовать SimpleHTTPServer в Python.

mkdir ~/public_html
command_to_generate_output > ~/public_html/output.txt

(cd ~/public_html; python -c 'import SimpleHTTPServer,BaseHTTPServer; BaseHTTPServer.HTTPServer(("", 8080), SimpleHTTPServer.SimpleHTTPRequestHandler).serve_forever()')

Первые две строки являются установкой для веб-сервера. Последняя строка создает простой веб-сервер, открытый на порте 8080, который только служит файлам от ~/public_html. Если только один файл находится в том каталоге, то только, который выставляется: http://localhost:8080/output.txt.

6
27.01.2020, 19:29
  • 1
    это - то, что я использую, просто копирую lastline и вставляю его на a .py файл, затем выполняет его с python (или сделайте это исполняемым файлом). Следует иметь в виду, что необходимо работать с Python 2.x интерпретатор. –  Hanan N. 20.02.2012, 23:40

Начиная с версии 5.4.0 PHP также имеет встроенный веб-сервер:

php -S localhost:8000

Можно Указать каталог документов веб-сервера с -t, например:

php -S localhost:8000 -t /var/lib/www

Если Вы хотите смочь получить доступ к серверу по сети затем:

php -S 0.0.0.0:8000 -t /var/lib/www
31
27.01.2020, 19:29
  • 1
    , Ничего себе, который был легок и полезен! –  Michael-O 16.05.2015, 22:08
  • 2
    Этот действительно хорош, если Вы хотите протестировать сценарии PHP локально. –  erik 27.07.2015, 12:51

Использовать node.js , быстро и легкий вес.

Или

просто используйте простой nc netcat управляют, чтобы запустить быстрый веб-сервер на порте и служить содержанию файла включая заголовки ответа сервера.

Ссылка из Википедии:

http://en.wikipedia.org/wiki/Netcat#Setting_up_a_one-shot_webserver_on_port_8080_to_present_the_content_of_a_file

{ echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat some.file; } | nc -l -p 8080
{ echo -ne "HTTP/1.0 200 OK\r\nContent-Length: $(wc -c <some.file)\r\n\r\n"; cat some.file; } | nc -l -p 8080
44
27.01.2020, 19:29
  • 1
    пустой процесс node.js только с интерактивным выполнением оболочки берет 15 МБ (7.5 совместно используется) RAM. И затем необходимо выполнить сервер HTTP в нем. Это забавно, что люди рассматривают его как легкий вес. ;-) –  jpc 02.03.2012, 16:00
  • 2
    да, я считаю это легким весом, можно масштабироваться хорошо с таким меньшим объемом потребляемой памяти. Считайте thecodinghumanist.com/blog/archives/2011/5/6 / … Однако при нахождении этого громоздким для использования node.js, затем простая netcat утилита служит недолгой цели хорошо. –  Nikhil Mulley 02.03.2012, 17:28
  • 3
    Вы, конечно, правы при сравнении узла с Apache, но что я нашел забавным, был то, как узел смотрит по сравнению с cr.yp.to/publicfile.html или чем-то подобным. :) –  jpc 06.03.2012, 12:54
  • 4
    hmmmmm.. хорошо ;-) –  Nikhil Mulley 13.03.2012, 07:16
  • 5
    +1 для nc основанное решение :). Обратите внимание что -ne флаги для echo может не быть портативным, с помощью printf команда вместо этого может быть лучшей альтернативой. спасибо –  WhiteWinterWolf 05.11.2016, 11:35

Попытка SimpleHTTPServer:

python -m SimpleHTTPServer
# or the Python 3 equivalent
python3 -m http.server

Это должно служить тому, что находится в CWD (например, index.html) по http://0.0.0.0:8000.

170
27.01.2020, 19:29
  • 1
    Можно дополнительно указать номер порта как это: python3 -m http.server 1337. Вы не можете указать, какой IP связать с тем, насколько я могу сказать.Примечание: Для слушания порта 80, у Вас должны быть полномочия пользователя root, например: sudo python3 -m http.server 80 –  Hubro 30.10.2014, 12:49
  • 2
    Этот хорош, но это имеет проблему с перенаправлением к URL с запаздывающей добавленной наклонной чертой. Вот почему я предпочитаю twistd версию: twistd -n web -p 8000 --path . –  Greg Dubicki 14.07.2015, 11:49

Простой netcat пример, чтобы вставить сценарий удара:

while true ; do nc -l 80 <index.html ; done 
1
27.01.2020, 19:29
  • 1
    Этому полностью не удается говорить HTTP. –  derobert 06.08.2014, 14:54
  • 2
    я попробовал while [ 1=1 ] ; do echo "TEST" | nc -l 80; done - движение к 127.0.0.1 действительно возвраты содержание. Я должен был сделать это как корень все же. Таким образом чрезвычайно сырым способом - это могло сделать задание, и мне нравится этот. Я пытался идти в мой-hostnname.local на другой машине в LAN, и она работала также. –  unfa 11.12.2017, 13:33
HISTCONTROL=ignorespace

Если этот параметр еще не установлен для bash , это может быть именно то, что вам нужно. Это менее изнурительно, чем отключение всей истории. При таком наборе любая командная строка, начинающаяся с пробела, не будет сохранена в списке истории.

Из этих связанных ссылок:

Почему bash имеет параметр HISTCONTROL = ignorespace?

Почему bash не хранит команды, начинающиеся с мест?

-121--8782-

Я подозреваю, что вы используете systemd. Если это так, используйте встроенный инструмент systemctl :

systemctl suspend
systemctl hibernate
systemctl hybrid-sleep
systemctl reboot
systemctl poweroff
systemctl halt

Как всегда можно создать псевдоним для любой из этих команд.

-121--75845-

Узел имеет простой, быстрый, легкий модуль HTTP-сервера. Установка:

sudo npm install http-server -g

(Предполагается, что уже установлены узел и npm .)

Для ее запуска используется текущий каталог в качестве корня веб-сайта:

http-server

Создается сервер на http ://0.0.0.0: 8080/.

15
27.01.2020, 19:29

Это можно сделать за два шага, например, сначала удалить расширение, затем заменить префикс VTS _ 01 :

$ for i in VTS_01_[1-4]*B; do b="${i%.VOB}"; echo "${b/VTS_01/Movie}.avi"; done
Movie_1.avi
Movie_2.avi
Movie_3.avi
-121--199974-

systemctl disable не работает, если источником является скрипт init.d . Что вместо этого делать, чтобы отключить lightdm начиная с загрузки?

По иронии судьбы, ни один из «официальных» способов сделать это до сих пор не был упомянут ни в одном ответе. Так что для полноты, вот они:

Вы «маскируете» сервис:

systemctl mask lightdm.service

Или вы создаете собственный файл единиц как /etc/systemd/system/lightdm.service , который затем становится надлежащим первоклассным системным гражданином, который может быть включен и отключен с помощью команд enable и disable . Файлы единиц измерения заменяют файлы init.d с тем же базовым именем. Вы можете выбрать lightdm.service , который был написан людьми Debian, если хотите. ☺

Further читать

-121--37855-

Oldschool Ruby WEBrick HTTP-сервер:

#!/usr/bin/env ruby

require 'webrick'
server = WEBrick::HTTPServer.new(:Port => 8000,
                                 :DocumentRoot => '~/webrickroot')

# stop server with Ctrl-C
trap('INT') { server.stop }
server.start

Измените DocumentRoot для установки. См. также это .

2
27.01.2020, 19:29

Существует Большой список однострочных статических HTTP-серверов :

Чтобы попасть в этот список, решение должно:

  1. обслуживают статические файлы, используя ваш текущий каталог (или указанный каталог) в качестве корневого каталога сервера
  2. , который может быть запущен с помощью одной однострочной команды (зависимости допустимы, если они разовые)
  3. обслуживают основные типы файлов (html, css, js, изображения) с соответствующими типами mime, не требует настройки (из файлов или иным образом), кроме самой команды (без серверов, специфичных для платформы и т. Д.)
  4. должен работать или иметь режим, в котором он может работать, на переднем плане (т.е. без демонов)

Например:

  • Twisted (Python)

     twistd -n web -p 8000 --path.
     
  • Erlang :

     erl -s inets -eval 'inets: start (httpd, [{server_name, "NAME"}, {document_root, "."}, {Server_root, " . "}, {порт, 8000}, {mime_types, [{" html "," text / html "}, {" htm "," text / html "}, {" js "," text / javascript "}, {"css", "text / css"}, {"gif", "image / gif"}, {"jpg", "image / jpeg"}, {"jpeg", "image / jpeg"}, {" png "," image / png "}]}]). '
     
  • Plack (Perl)

     cpan Plack 
    plackup -MPlack :: App :: Directory -e' Plack :: App :: Directory-> new (root => "."); ' -p 8000 
     
  • webfs

     webfsd -F -p 8000 
     
  • Ruby 1.9.2+

     ruby ​​-run -ehttpd. -p8000 
     
46
27.01.2020, 19:29

Другой вариант - установить lighttpd. Ниже приведены предлагаемые шаги по установке lighttpd на Unbuntu 12.04 LTS.

apt-get update
apt-get upgrade --show-upgraded
apt-get install lighttpd
ifconfig
http://[your-ip-address]:80
/etc/lighttpd/lighttpd.conf (Edit to add server.port)
server.port = "8080"

Примечание: Documentroot - это место, где будут размещены все файлы, доступные в Интернете. Расположение: / var / wwww

. На этом шаге будет установлен базовый веб-сервер lighttpd. Для получения дополнительной информации см. Следующие ссылки

Ссылки:

2
27.01.2020, 19:29

Простой Ruby one liner для обслуживания каталога:

ruby -run -e httpd . -p 8080
4
27.01.2020, 19:29

SFK, о котором стоит упомянуть

http://stahlworks.com/dev/swiss-file-knife.html

отличный многоцелевой инструмент с нет зависимостей

, доступных как для deb, так и для rpm

sfk httpserv -port 1234

будет обслуживать текущий каталог

sfk httpserv -port 1234 -rw

также разрешит загрузку файлов

{{ 1}}
0
27.01.2020, 19:29

./ devd -o -a -P devd: devd.

  • -o открывает URL-адрес в браузере
  • -a для всех интерфейсов
  • -P auth user / pass
  • . обслуживать файлы в том же каталоге

https://github.com/cortesi/devd/releases

2
27.01.2020, 19:29

Вы можете использовать xinetd. Поместите следующий файл конфигурации в /etc/xinetd.d/ и service xinetd reload:

service http
{
  flags = REUSE IPv4
  protocol = tcp
  socket_type = stream
  port = 80
  wait = no
  user = nobody
  server = /bin/echo
  server_args = -e HTTP/1.0 301 Moved Permanently\nContent-Length: 0\nLocation: https://goo.gl/\n\n
  disable = no
}

Работает для моих целей перенаправления:

# wget 127.0.0.1
--2016-04-04 22:56:20--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://goo.gl/ [following]
...
3
27.01.2020, 19:29

Чистый bash: Веб-сервер в сценарии оболочки .

Также вам понадобится xinetd (Я считаю, что доступен в любом дистрибутиве), чтобы прослушивать порт и запускать скрипт при необходимости, поэтому вам не нужно кодировать стек TCP и т. Д. В bash.

0
27.01.2020, 19:29

Простое исправление / улучшение слегка несправедливого (imho) ответа, проголосованного против, также может сработать. Давайте сначала настроим html-файл ...

echo '<html><head><title>My Test File</title></head><body><h1>OK!</h1></body></html>' > my_file.html

(Спасибо Стиву Фолли за обнаружение моей опечатки в приведенном выше HTML. Исправлено.)

Теперь вы можете обработать его с помощью этого однострочника:

while true; do echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n" | cat - my_file.html  | nc -l -p 8080; done

Этот базовый idea поддается другим уловкам, которые могут сработать для вас через другие cat или идеи подоболочки, такие как:

while true; do echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\nI think the date is $(date), Have a good day!" | nc -l -p 8080; done
2
27.01.2020, 19:29

попробуй кэдди

curl https://getcaddy.com | bash

обслуживать контент из /var/wwwcaddy -root /var/www "browse"

теперь вы найдете сервер по адресу http ://localhost :2015

2
27.01.2020, 19:29

Мои пять копеек, написанные ракушкой:https://gitlab.com/mezantrop/supermatic

Supermatic can run on FreeBSD and any other OS which has Bourne Shell and inetd-like daemon. It serves static HTML and TXT files along with GIF, JPEG and PNG image formats. What's about any other standards and features? No, never heard of them.

0
10.05.2020, 07:08

Один лайнер на основе докера, поэтому вам не нужно устанавливать какой-либо конкретный язык:

docker run --rm -i -p 8000:8000 -v $(pwd):/app -w /app ruby:alpine ruby -run -ehttpd. -p8000
1
12.02.2021, 16:18

В nweb.c добавлена ​​функция вывода списка каталогов.https://github.com/jbabuc/nweb

nweb.c, простой http-сервер со списком каталогов.
nwebs, статически скомпилированный бинарный файл для Linux.

0
18.03.2021, 12:12

Теги

Похожие вопросы