2011-07-01 5 views
2

저는 postdoc입니다. 파이썬에서 멋진 과학 응용 프로그램을 끝 마치고 그것을 세상과 공유하고 싶습니다. 그것은 유전 자에게 정말로 유용한 도구입니다.CGI (Ubuntu)로 임시 파일 저장

저는 사람들이 CGI 양식 인터페이스를 통해이 프로그램을 실행하게하고 싶습니다. 나는 이제 더 이상 학생이 아니기 때문에, 더 이상 딱 들어 맞는 깔끔한 작은 cgi-bin 서브 디렉토리가있는 웹 공간이 없습니다.

몇 년 전 간단한 CGI Python 프로그램을 작성하여이를 템플릿으로 사용하려고했습니다.

내 질문은 다음과 같습니다. 내 프로그램은 임시 파일을 만들어야합니다 (명령 줄에서 실행하면 이미지가 지정된 경로에 저장됩니다). 아파치 등의 튜토리얼 몇 개를 읽었으며 많은 일들을 실행했지만, 내 프로그램이 임시 파일을 쓰게하는 방법을 알 수는 없습니다. (이 파일들이 어디에 살고 있는지도 모릅니다.). 내 파이썬 프로그램에서 (어떤 방식 으로든) 파일에 쓰려고 할 때마다 CGI가 "충돌"하고 좋아 보이지 않는다.

임시 파일이 프로그램의 출력 (사용자 입력이 아님)이기 때문에 보안에 대해 크게 걱정하지 않습니다.

그리고 나는 (CGI 닌자라고 생각한다. 멀리까지 있어도 지루하지 않다.) CGI 프로그램이 임시로 파일 인수를 취할 수 있다는 것을 알고 있습니까? 파일? 이것에

내 이전의 접근 방식은 단순히 인수로 텍스트의 목록을했다 :

try: 
    if item.file: 
     data = item.file.read() 
     if check: 
      Tools_file.main(["ExeName", "-d", "-w " + data]) 
     else: 
      Tools_file.main(["ExeName", "-s", "-d", "-w " + data]) 
... 

나는이 올바른 방법을하고 싶습니다! 미리 건배.

스택 overflowingly 당신,
올리버

답변

3

음, "올바른"방법은 아마 장고와 같은 기존의 웹 프레임 워크를 사용하기 위해 다시 일 것입니다. 이 경우에는 아마도 과잉 공격 일 것입니다. 보안 측면을 과소 평가하지 마십시오. 아마 당신이 생각하는 것보다 더 관련이 있습니다.

, 당신은 아마 표준 라이브러리에서 파이썬의 임시 파일 모듈을 사용할 말했다 모든 :

http://docs.python.org/library/tempfile.html

그것은 일반적으로 밖으로 물건을 쓸 것이다/tmp를/당신이 유닉스에있어 어떤 경우. 아파치에서 실행될 때만 프로그램이 충돌하는 경우 (그러나 직접 실행할 때 잘 실행 됨) 권한을 확인하십시오. apache 사용자가 임시 파일을 저장하기로 결정한 모든 위치에 쓸 수있는 권한이 있는지 확인하십시오. 임시 파일이 적절한 권한으로 작성되었는지 확인하십시오 (나중에 읽을 수없는 파일을 쓰지 않으려는 경우). 폴 맥밀런 말했듯이

1

, 임시 파일 사용

temp, temp_filename = tempfile.mkstemp(text = True) 
temp_output = os.fdopen(temp, 'w') 
temp_output.write(something_or_other) 
temp_output.close() 

내 개인적인 의견은 당신이 정말로 사전 구축 된 기능을 필요로하지 않는 프레임 워크가 큰 시간 싱크 점이다. CGI는 훨씬 간단하며, 적어도 인기가있을 때까지는 응용 프로그램에서 작동 할 수 있습니다.