gpt4 book ai didi

python - 带有 paramiko 的 SCP,使用不同的远程和本地目录

转载 作者:IT王子 更新时间:2023-10-29 01:10:30 25 4
gpt4 key购买 nike

我有一段使用 Paramiko 的 Python 代码。

#!/usr/bin/env python

import paramiko

username = ('user')
password = ('1234')
hostname = ('test-server.com')
ports = 22
localD = ('/var/tmp/testxxxxxxxx.tar.gz')
remoteD = ('/var/tmp/testxxxxxxxx.tar.gz')



paramiko.util.log_to_file('/tmp/paramiko.log')
transport = paramiko.Transport((hostname, ports))
transport.connect(username = username, password = password)
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.put(remotepath=remoteD, localpath=localD)

sftp.close()
transport.close()

使用这段代码,local-dir 和 remote-dir 应该是相等的。如果不是“找不到文件”我如何更改或使用不同于本地目录的另一个远程目录?示例:

localD = ('/var/tmp/testxxxxxxxx.tar.gz')
remoteD = ('/home/user/testxxxxxxxx.tar.gz')

谢谢

最佳答案

由于错误消息显示“没有这样的文件或目录”,我会首先检查以确保该目录存在于远程系统上并且可由您使用的凭据写入。 SFTPClient 类具有各种其他方法,您可以调用这些方法来验证目标路径是否存在并在它们不存在时创建它们。

例如,调用传入目标路径的 stat() 方法应该返回一个与 os.stat 返回的元组相同的元组。尝试运行此脚本(我只是破解了一个小路径检查例程并将其放入您的脚本中):

#!/usr/bin/env python

import paramiko

username = ('user')
password = ('1234')
hostname = ('test-server.com')
ports = 22
localD = ('/var/tmp/testxxxxxxxx.tar.gz')
remoteD = ('/var/tmp/testxxxxxxxx.tar.gz')

def check(sftp, path):
parts = path.split('/')
for n in range(2, len(parts) + 1):
path = '/'.join(parts[:n])
print 'Path:', path,
sys.stdout.flush()
try:
s = sftp.stat(path)
print 'mode =', oct(s.st_mode)
except IOError as e:
print e

paramiko.util.log_to_file('/tmp/paramiko.log')
transport = paramiko.Transport((hostname, ports))
transport.connect(username = username, password = password)
sftp = paramiko.SFTPClient.from_transport(transport)
check(sftp, remoteD)

sftp.close()
transport.close()

输出应该是这样的:

Path: /var mode = 040755
Path: /var/tmp mode = 040700
Path: /var/tmp/testxxxxxxxx.tar.gz [Errno 2] No such file

模式编号很可能会有所不同,但除了文件名之外,您不应该在路径的任何部分出现“没有这样的文件”错误。如果你这样做,那么这可能意味着你需要使用 sftp.mkdir() 构建路径到你想要放置文件的位置

关于python - 带有 paramiko 的 SCP,使用不同的远程和本地目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10338911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com