[완료]busybox 에서 httpd으로 cgi 파일 실행되게 하는 방법좀 알려주세요

cwlee815의 이미지

busybox(1.11.2) 컴파일할 때

Networking Utilities -> httpd(*)

[*] Support Common Gateway Interface (CGI)
[*] Support for runing scripts through an interpreter
[*] Set REMOTE_PORT environment variable for CGI
[*] Enable -e option (useful for CGIs written as shell scripts)

위에 옵션을 모두 선택했습니다.

httpd.conf는 busybox가 아닌 리눅스의 아파치에서 cgi 동작하는거 확인하고 복사했고요.

데몬 실행은 이와같이 했습니다.
#httpd -h /www -c /etc/httpd.conf

//html파일과 cgi파일은 전부 /www 안에 있습니다.

파이어폭스에서 ip어드래스 넣고 실행하면 html 파일은 열리는데 cgi파일은 다운 받는 창이 떠버리네요

콘솔상에서 ./main.cgi 하면
Set-Cookie:........
Content-Type: text/html

{html}......
..........{html}
이와 같이 출력됩니다. 제대로 되는 것같은데...웹상에서만 안되네요
httpd.conf에서 ExecCGI 옵션 안넣어줬을때도 저런식이었는데 busybox httpd는 설정이 다르가요...
구글링 해봐도 안나와있고... 좀 도와주세요

두서없이 쓰긴 했는데 요점은
웹상에서 busybox httpd의 cgi파일 열리게 하는 방법좀 알려주세요

mrjh76의 이미지

BusyBox가 참으로 유용한 프로그램임은 틀림없는데...
각종 설정파일에 대한 설명이 많이 부족하죠!~

예전에 저는 boa 웹서버를 사용했었는데... 아마도 BusyBox 것도 비슷할듯...

ScriptAlias /cgi-bin/ /www/cgi-bin/

cgi-bin 디렉토리를 따로 분리해서 사용해 보십시오!
아마도 cgi-bin 디렉토리는 기본적으로 cgi 로 인식할겁니다!

cwlee815의 이미지

cgi-bin 디렉토리 바꾸는건 벌써 부터 해봤습니다.
다시 해봐도 여전히 안되는건 마찬가지네요.

501 Not Implemented 에러가 나는데
그러면 BusyBox의 httpd가 cgi 기능을 지원하지 않는다??라고 생각해야 되는건가요?
그렇다면 BusyBox에서 컴파일을 어떻게 다시 건드려봐야한다는건데...
cgi 옵션으 전부 설정해놨는데...정말 난감하네요.

mrjh76의 이미지

웹서핑과 예전 기억을 떠 올려보니,,,

busybox의 httpd 는 cgi를 지원합니다. (BOA 대신 쓰려고 간단히 테스트했던 기억이.. 나는군요!)

구글에서 검색하니,,, 아래와 같은 내용이 보이네요... 한번 보시고... 찬찬히 다시 확인해 보심이...

http://wiki.openwrt.org/OpenWrtDocs/httpd_CGI_scripts

mrjh76의 이미지

시간적 여유가 있어서,,, 제가 사용하는 busybox 1.0 버전으로 확인해 보았습니다!

아래와 같이 cgi 기능만 활성화 하였습니다.

[*] httpd
[ ]     Support using httpd only from inetd
[ ]     Enable Basic http Authentication
[ ]   Support reloading the global config file using hup signal
[ ]   Enable support -u <user> option
[ ]   Support loading additional MIME types at run-time 
[*]   Support Common Gateway Interface (CGI)
[ ]     Support the REMOTE_PORT environment variable for CGI
[ ]   Enable the -e option for shell script CGI simplification.

그리고 아무런 설정도 하지 않고,,, 디렉토리 만들고 실행하였습니다.

mkdir -p www/cgi-bin
httpd -h ./www/

마지막으로 간단히 test.cgi 만들고 실행권한 주었습니다!

#!/bin/sh
 
printf "Test CGI\n\n"
 
while true;
do
        let I=I+1
        printf "$I "
        [ $I -ge 10 ] && break
done

아래 결과와 같이 별다른 문제없이,,, 잘 되는군요!!!

Test CGI
 
1 2 3 4 5 6 7 8 9 10 

찬찬히... 한번 살펴보세요... 실수한 부분이 없는지... busybox 버전을 바꿔 보셔도 좋고요...

글 작성하고,,, 질문의 글을 찬찬히 읽어보았는데,,,

혹시,,, 혹시,,,
아파치의 httpd.conf 파일을 그대로 busybox httpd 에서 사용하셨나요?
설정 형식이 좀 많이 다를텐데,,, 제가 위에 한것처럼 설정파일 없이 구동해 보세요!~

bushi의 이미지

좀 많이 다른 정도가 아니라... 비슷하지도 않을 정도로 완전히 다른 형식이죠.

OTL

cwlee815의 이미지

도움을 많이 주셨는데...여전히 결과는...
그대로 따라했는데도 안되네요 ㅠ.ㅠ
BusyBox 컴파일 위에처럼 다시하고,
httpd.conf 없는 상태에서
httpd -h /www
실행하고

index.html -> login.cgi

http://192.168.0.126/index.html 에서 로그인 아이콘 누르면 501 에러나고
주소창에 직접 http://192.168.0.126/login.cgi 라고 치면
다운로드 창이 뜹니다.

머가 잘못됐는지를 모르겠네요.

커널컴파일을 잘못하면 이런경우가 생길 수도 있나요?
도대체 이유를 모르겠습니다..

mrjh76의 이미지

커널 컴파일과 CGI는 아무런 관계가 없습니다!

그리고...

http://192.168.0.126/login.cgi (?)

위에 제가 알려드린데로 한다면... 아래와 같은 주소가 나와야 할텐데요...

http://192.168.0.126/cgi-bin/login.cgi

busybox httpd는 특정 디렉토리에 ExecCGI 권한을 주는 설정을 보질 못했는데...

cgi-bin 디렉토리를 이용하세요!

아무리 생각해도... 단순한 사용자의 부주의가 문제인 듯 싶은데요...

bushi의 이미지

그대로 따라하지 않으셨는데요.
cgi 는 REQUEST_URI 에 /cgi-bin/ 이 포함되어 있을 경우에만 실행됩니다.
그러므로, cgi 파일은 $serverroot/cgi-bin/ 에 있어야 합니다.

index.html 이 없을 경우 /cgi-bin/index.cgi 를 시도합니다.
이 경우 REQUEST_URI 는 바뀌지 않고 원본 그대로 전달됩니다.
login 을 처리하던가 directory index 를 그냥 보여주던가 default.html 등의 다른 이름으로 Location 만 재지정하던가.
잘 하면 됩니다.

OTL

cwlee815의 이미지

/www/cgi-bin 폴더 만들어놓고
login.cgi 파일 옮겨놓았습니다.

http://192.168.0.126/index.html 로그인 아이콘 클릭하면 바로 login.cgi다운로드 창 뜨네요.
주소창에 http://192.168.0.126/cgi-bin/login.cgi 넣어도 마찬가지로 다운로드 창 뜨고요.

다운로드 창 뜨는게 cgi를 지원하지 않아서 그런게 아닌가요?

bushi의 이미지

맞습니다. 그 httpd 는 cgi 를 지원하지 않는 상태입니다.

OTL

cwlee815의 이미지

됐습니다~~ 다들 너무 감사힙니다.
BusyBox 1.11.2
컴파일시에 밑에 두개만 설정하고

[*] Support Common Gateway Interface (CGI)
[*] Support for runing scripts through an interpreter

http루트는 /www
cgi파일은 /www/cgi-bin 에 넣어두니
제대로 cgi파일도 열어주네요 ㅠ.ㅠ 감격...
하지만cgi-bin 폴더 내에 있는 html파일은 열리지가 않는군요..
링크들을 다 수정해야겠지만 그래도 감격입니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.