저는 파이썬과 프로그래밍에있어서 매우 익숙합니다. 파이썬 스크립트를 통해 두 컴퓨터간에 파일을 복사하려고합니다. 그러나 코드파이썬에서 scp와 os 모듈을 통해 원격 서버에서 파일 복사하기
os.system("ssh " + hostname + " scp " + filepath + " " + user + "@" + localhost + ":" cwd)
은 작동하지 않습니다. 나는 그것이 How to copy a file to a remote server in Python using SCP or SSH?에서 설명한대로 암호가 필요하다고 생각합니다. 나는 어떤 에러 로그도 얻지 못했고, 파일은 단지 나의 현재 작업 디렉토리에 나타나지 않을 것이다.
그러나 다른 모든 명령은 os.system("ssh " + hostname + "command")
또는 os.popen("ssh " + hostname + "command")
입니다. ->command = e.g. ls
내가 암호를 입력하지 않고 작동 명령 줄에서 ssh hostname scp file [email protected]:directory
을 시도합니다.
os.popen
명령을 결합하고 직접 명령을 전송하는 데 사용하려 :
import pxssh
import getpass
ssh = pxssh.pxssh()
ssh.force_password = True
hostname = raw_input("Hostname: ")
user = raw_input("Username: ")
password = getpass.getpass("Password: ")
ssh.login(hostname, user, password)
test = os.popen("hostname")
print test
그러나 원격 서버에 명령을 입력 할 수 없습니다 (print test
show, 해당 호스트 이름 = 로컬 및 원격 서버가 아님). 연결은 확실합니다. 나는 bash 명령에서 항상 "ssh " + hostname
을 사용하는 것보다 연결을 설정하는 것이 더 쉽다고 생각했다. 나는 또한 How to copy a file to a remote server in Python using SCP or SSH?에있는 몇 가지 해결 방법을 시도했지만, 나는 그들에게 일하게하지 않은 만기의 부족으로 인정해야합니다.
나를 도와 주셔서 감사합니다.
왜 당신을 'ssh hostname scp'을 할 필요가 있다고 생각하십니까? 왜'scp user @ hostname : file localdirect'가 아닌가? –
보안상의 이유로'os.system()'에 비해'subprocess' 모듈을 선호합니다. – glglgl
'scp user @ hostname : file localdirectory'를 통해 복사 할 가능성에 대해서는 생각하지 않았습니다. 작동하지만,'user @'부분을 취소 할 때만 작동합니다. – user1063572