나는 원격 서버에서 파일을 구축 잡아 Paramiko를 사용하는 일부 파이썬 코드가 있습니다Paramiko SFTP - 전체 로컬 파일 이름을 지정하지 않아도됩니까?
def setup_sftp_session(self, host='server.com', port=22, username='puppy'):
self.transport = paramiko.Transport((host, port))
privatekeyfile = os.path.expanduser('~/.ssh/id_dsa')
try:
ssh_key = paramiko.DSSKey.from_private_key_file(privatekeyfile)
except IOError, e:
self.logger.error('Unable to find SSH keyfile: %s' % str(e))
sys.exit(1)
try:
self.transport.connect(username = username, pkey = ssh_key)
except paramiko.AuthenticationException, e:
self.logger.error("Unable to logon - are you sure you've added the pubkey to the server?: %s" % str(e))
sys.exit(1)
self.sftp = paramiko.SFTPClient.from_transport(self.transport)
self.sftp.chdir('/some/location/buildfiles')
def get_file(self, remote_filename):
try:
self.sftp.get(remote_filename, 'I just want to save it in the local cwd')
except IOError, e:
self.logger.error('Unable to find copy remote file %s' % str(e))
def close_sftp_session(self):
self.sftp.close()
self.transport.close()
내가 각 파일을 검색하고 현재 로컬 작업 디렉토리에 입금하고 싶습니다.
그러나 Paramiko에는이 옵션이없는 것 같습니다. 전체 로컬 대상을 지정해야합니다. 디렉토리 (예 : "./"또는 "/ home/victorhooi/files")도 지정할 수 없습니다. 파일 이름을 포함한 전체 경로가 필요합니다.
이 문제가 발생합니까? 원격 파일을 복사하는 대신 로컬 파일 이름을 지정해야하는 경우 성가 시게됩니다.
또한 exit (1)로 setup_sftp_session에서 예외를 처리하는 방식은 좋은 연습인가, 아니면 더 좋은 방법입니까?
건배, 빅터
나는 문자 그대로이 코드를 코딩했고 그 주위에 단일 방법을 찾지 못했다. 나는 두려워한다. 로컬 파일 이름이 필요하지만 원하는대로 작은 파일로 부를 수 있습니다. – Ben