我一直在尝试使用密码将scp文件写入远程计算机。我用了这段代码:
import os
import scp
client = scp.Client(host="104.198.152.xxx", username="nxxx", password="xxxxxx")
client.transfer("script.py", "~/script.py")
在How to scp in python?中建议,但输出:
File "script.py", line 5, in <module>
client = scp.Client(host="104.198.152.153", username="nazarihome", password="mohMOH13579")
AttributeError: 'module' object has no attribute 'Client'
我也尝试过人们建议的其他方式,似乎没有一种方法可行。有没有人有一个真正有效的建议?
P.S。如果您的答案取决于此,我必须使用密码而不是密钥。
答案 0 :(得分:0)
scp.py
GitHub page有以下示例,它使用paramiko库来处理SSL:
from paramiko import SSHClient
from scp import SCPClient
ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect('example.com')
# SCPCLient takes a paramiko transport as its only argument
scp = SCPClient(ssh.get_transport())
scp.put('test.txt', 'test2.txt')
scp.get('test2.txt')
scp.close()
所以你想要的实际类型是scp.SCPClient
。
答案 1 :(得分:0)
此日期为2019年1月:
安装必需的Python软件包:
pip install scp
pip install paramiko
在代码中包含库
from paramiko import SSHClient
from scp import SCPClient
为此编写了一个函数
# SSH/SCP Directory Recursively
def ssh_scp_files(ssh_host, ssh_user, ssh_password, ssh_port, source_volume, destination_volume):
logging.info("In ssh_scp_files()method, to copy the files to the server")
ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect(ssh_host, username=ssh_user, password=ssh_password, look_for_keys=False)
with SCPClient(ssh.get_transport()) as scp:
scp.put(source_volume, recursive=True, remote_path=destination_volume)
现在在代码中任意位置调用它:
ssh_scp_files(ssh_host, ssh_user, ssh_password, ssh_port, source_volume, destination_volume)
如果以上各项均正确实施,您将在控制台/日志中看到成功的消息,如下所示: