저는 사용자 데이터를 캡처하고 사용자 데이터에서 일부 cgi를 실행하는 양식을 가진 웹 사이트를 만들고 있습니다. cgi의 첫 번째 단계 중 하나는 Linux 웹 서버에서 Windows 시스템으로 파일을 복사해야한다는 것입니다. 서버는 복사 자격 증명에 활성 디렉토리 역할 acount를 사용합니다. 나는 단순히 같은 것을 사용하기를 희망했다 :파이썬은 리눅스에서 WIndows로 파일을 복사합니다.
mount -t cifs -o username=someUsername,password=somePasword //someMachine/someShare /someMountPoint
불행하게도 내가 bash는 그 명령을 실행할 때 암호에 대한 오류가 무효 인 때문 얻을. 이상적으로이 방법을 사용하여 원격 Windows $ share를 마운트 한 다음 파일을 복사하지만 더 합리적인 경우 다른 모듈을 사용해 볼 의향이 있습니다.
나는 이와 같은 것을 가지고 있지만 작동하지 않으며 필요한 임시 디렉토리를 생성하지만 결코 아무것도 마운트하지 않습니다. 나는 다른 것을 사용하게되어서 기쁘지만 무엇이 잘못되었는지 알고 싶어합니다.
import subprocess
import random
def makeDir():
tempDir = random.randrange(111111,999999)
subprocess.Popen(["mkdir","/mntDir/"+str(tempDir)])
return tempDir
def mountShare(hostname, username, password):
mountDir = makeDir()
try:
subprocess.Popen(["mount","-t","cifs", "-o",
"username="+username+",password="+password,
"//"+hostname+"/c$",
"/mntDir/"+mountDir])
except:
print("Mounting failed")
평상시의 일상적인 작업을 위해 Windows 서버 (C $ 공유에 필요)에 대한 관리자 권한이 있고 Linux 서버에 파일 시스템을 마운트하는 루트 권한을 가진 웹 사이트를 실행 하시겠습니까? Eww. Windows 서버의 제한된 사용자 계정을 올바른 폴더 및 공유 사용 권한으로 사용하는 것이 훨씬 낫고, Linux 사이드의 [smbclient] (http://superuser.com/a/562728)와 같은 것을 마운트하지 않아도됩니다. 전혀 공유하지 마라. (random, random bodge를 피하기 위해 [tempfile] (https://docs.python.org/3/library/tempfile.html) 모듈을 확인하십시오. – TessellatingHeckler
예, 계정에 관해서는 동의하며 피해야합니다. 이 사이트는 소규모 그룹으로 제한되며 내부적이지만 보안은 분명 중요합니다. 원격 컴퓨터에서 공유를 실제로 사용할 수는 없지만 사용자가 즉시 자격 증명을 제공 할 수는 있습니다. 입력 주셔서 감사합니다, 나는 확실히 smbclient를 사용하는 가능성을 살펴보고, 나는 또한 tempfile 모듈의 모양을 좋아한다. 감사합니다 –