1줄짜리 web server

drinkme의 이미지

CGI까지 얼추 지원하는 bash/dash script로 만든 한줄짜리 웹서버

true; while [ $? -eq 0 ]; do nc -vlp80 -c'IFS=\ ? read REQUEST_TYPE F QUERY_STRING V; export REQUEST_TYPE; [ -n "$V" ] && export QUERY_STRING; F=.$F; [ -d $F ] && F=$F/index.html; read V; while [ ${#V} -gt 1 ]; do read V; done; [ -f $F ] && ([ -x $F ] && (echo "HTTP/1.0 200 OK"; $F) || (printf "HTTP/1.0 200 OK\n\n"; cat $F)) || printf "HTTP/1.0 404 Not Found\n\n"'; done

아... CGI 환경변수 지원하게 하다가 ... 나중에 하기로 함.
GET방식은 test해 봤는데, POST는 잘 되나 잘 모르겠네요.

Forums: 
kang1의 이미지

말이 한줄이지 여러줄을 한줄로 표현한거 아닌가요~ ㅋㅋ

---

대한민국

hys545의 이미지

즐린

단지 알아보기가 힘들 뿐

즐린

c0d3h4ck의 이미지

이런식의 프로그래밍 유희들이 참 많은데 윗분들은 재미가 없으신듯 ^^;

Darkcircle의 이미지

신기하근영 ㅋ 그러면 글자수를 더 줄일 수 있을까가 의문이네요 ㅋㅋ

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

ironiris의 이미지

어차피 nc 라는 놈도 설치해야 하는 프로그램인 것을 보면(상당수의 배포본에 기본으로 있긴 하지만)
상당수의 배포본에 포함된 httpd 를 실행하는 것만으로도 웹서버가 됩니다...... ...

lifthrasiir의 이미지

nc 정도면 충분히 primitive한 작업이라고 간주해도 되지 않을까요. 기본적으로 cat의 네트워크 버전을 의도하고 만들어진 거니까...

nohmad의 이미지

얼마나 primitive한가에 대한 기준은 천차만별이겠지만,
POSIX, LBS 등이 그나마 문서화가 잘 되어 있으므로 pedant들을 만족시킬 수 있을
것 같고, 좀더 practical 하게는 널리 알려진 배포판(우분투, 페도라, cygwin etc.)의
베이스 시스템에 들어있는지 여부도 한 기준이 될 수 있을텐데, netcat은 어느 곳에도
들어있지 않아서, command not found라는 썰렁한 메시지를 만날 확률이 더 높아 보입니다.

----
http://nohmad.tumblr.com/

지리즈의 이미지

service httpd start

죄송 orz

There is no spoon. Neo from the Matrix 1999.

There is no spoon. Neo from the Matrix 1999.

sephiron의 이미지

cygwin에서 써볼려고 했더니 cygwin necat은 -c 옵션을 지원하지 않네요. -c는 무슨 옵션이죠? 다른 옵션으로 대체할 순 없나요?

drinkme의 이미지

netcat 으로 하신 거 맞죠?
-c 옵셥이 없나요?

이건요... 다음 문장을 /bin/sh 로 보내서 실행하게 합니다.
-e 옵션으로 사용해서 조금 고치면 비슷하게 되지 않을까 싶네요.

ps.
간만에 보니,
너무 심각하게 생각하시는 분들이 많은 듯 하네요.
그냥 재미(?)로 만들어 본 거니까... 그냥 재미로...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.