원하는 것은 기본적으로 매우 간단한 웹 서버입니다.하지만 HTTP POST 요청에 나오는 내용을 인쇄하려면 내장 된 'nc'명령을 사용하면됩니다.
while true; do nc -l 10000 < /dev/null ; printf '\n\n\n'; done
당신은 다음 브라우저에서 http://localhost:10000
로 이동에 나타나는 HTTP 요청을 볼 수 있습니다 당신은이 같은 루프에서 'NC'를 실행하여 로컬 포트 10000에 들어오는 요청의 내용을 인쇄 터미널을 사용할 수 있습니다 터미널 창. 'nc'가 응답 할만큼 똑똑하지 않기 때문에 웹 브라우저는 오류 메시지를 표시합니다. 'NC'는 단순히 적절한 HTTP 응답을 제공하지 않고 연결을 닫기 때문에
curl --data "this-is-POST-data" http://localhost:10000
가 다시 컬 오류 메시지를 줄 것이다 :
는 '컬'을 사용할 수있는 HTTP POST 요청을 테스트합니다. 당신이 포트 80를 사용해야하는 경우
while true; do printf 'HTTP/1.0 200 OK\r\nContent-type: text-plain\r\n\r\nHello, world!' | nc -l 10000 ; printf '\n\n\n'; done
당신이 (예를 들어, 'sudo는'을 사용) 루트 'NC'를 실행해야합니다 : 당신은이 '는 NC'이 같은 모든 요청에 정적 HTTP 응답으로 회신 할 수 있습니다 .
그러나 실제로 어떤 종류의 HTTP 트래픽이 필요한 경우 적절한 웹 서버를 가져와야합니다. OS X는 "apachectl start"("apachectl stop"명령으로 시작할 수있는 Apache 웹 서버와 함께 제공됩니다). CGI가 활성화되어 있으므로 실행 파일을/Library/WebServer/CGI-Executables에 넣고 http://localhost/cgi-bin/filename
을 사용하여 액세스 할 수 있습니다. 예를 들어 다음 CGI 스크립트를 만드는 경우 :
#!/bin/sh
printf 'Content-type: text/plain\r\n\r\n'
cat > /tmp/post-data
echo OK
"test"라고 말하면됩니다.쉬 "와 CGI-실행 파일 폴더에 배치하고 실행
chmod +x /Library/WebServer/CGI-Executables/test.sh
을 그런 다음 http://localhost/cgi-bin/test.sh
에 POST 요청을 보낼 때마다이 파일에 POST 데이터의 내용을 저장합니다/tmp를/후 데이터 컴퓨터에
참고 :. 모든 예에서 "localhost"를 그 컴퓨터의 호스트 이름입니다 경우 네트워크를 통해 액세스를위한 "맥북-pro.local"로 대체 할 수
또한 OS X 있습니다. 방화벽 권한은 'nc'및 다른 소프트웨어가 TCP 포트를 수신하는 것을 차단할 수 있습니다. 일반적으로 권한 대화 상자가 표시되어야하지만 단순히 "권한 거부 "하면 시스템 환경 설정 -> 방화벽 -> 방화벽 옵션에서 방화벽 설정을 조정하십시오.
'nc' 함수는 greate를 사용하고 있지만 .sh 파일은 전송 된 게시물을 저장하지 않지만 다시 OK 응답을받습니다. 내가 놓친 게 있니? .sh 파일에 터미널 "도움말"이 필요합니까? –
'while true 사용; nc -l 10000 dev/null; printf '내용 유형 : text/plain \ r \ n \ r \ n'cat>/MYDIR/post-data echo OK; done'은 파일을 저장하지만 Content-type : text/plain 및'POST' 콘텐츠가 아닌 ... –
내 대답을 얻었습니다. http://stackoverflow.com/questions/14762083/cgi-script-save- printf-to-file-using-terminal-os-x –