Python 使用 pexpect 通过 scp 发送文件
Python sending files over scp using pexpect
所以我正在尝试使用 pexpect 将我所有的 torrent 文件发送到带有 scp 的服务器。这在大多数情况下都有效,但并不是我所有的 torrent 文件都被发送了。即使 'if i==0' 中的打印功能打印出所有种子文件。如果我转到服务器并删除所有已发送的内容,然后再次 运行,则会发送相同的 torrent 文件。有谁知道可能是什么问题?
import os
import getpass
import subprocess
import pexpect
filepath = 'my downloads dir'
os.chdir(filepath)
var_password = str(getpass.getpass())
destination = "user@server:dir"
for filename in os.listdir():
if filename.endswith('.torrent'):
try:
var_command = "scp " + filepath + filename + " " + destination
var_child = pexpect.spawn(var_command)
i = var_child.expect(["password:", pexpect.EOF])
if i==0: # send password
print('Sending: ' + filename)
var_child.sendline(var_password)
var_child.expect(pexpect.EOF)
elif i==1:
print("Got the key or connection timeout")
pass
except Exception as e:
print("Oops Something went wrong buddy")
print(e)
多亏了 David 的评论,我想我明白了。包含空格和冰岛字母的文件(因为我是冰岛人)不会被传输。
所以我正在尝试使用 pexpect 将我所有的 torrent 文件发送到带有 scp 的服务器。这在大多数情况下都有效,但并不是我所有的 torrent 文件都被发送了。即使 'if i==0' 中的打印功能打印出所有种子文件。如果我转到服务器并删除所有已发送的内容,然后再次 运行,则会发送相同的 torrent 文件。有谁知道可能是什么问题?
import os
import getpass
import subprocess
import pexpect
filepath = 'my downloads dir'
os.chdir(filepath)
var_password = str(getpass.getpass())
destination = "user@server:dir"
for filename in os.listdir():
if filename.endswith('.torrent'):
try:
var_command = "scp " + filepath + filename + " " + destination
var_child = pexpect.spawn(var_command)
i = var_child.expect(["password:", pexpect.EOF])
if i==0: # send password
print('Sending: ' + filename)
var_child.sendline(var_password)
var_child.expect(pexpect.EOF)
elif i==1:
print("Got the key or connection timeout")
pass
except Exception as e:
print("Oops Something went wrong buddy")
print(e)
多亏了 David 的评论,我想我明白了。包含空格和冰岛字母的文件(因为我是冰岛人)不会被传输。