我对Python和编程很新颖。我试图通过一个python脚本在两台电脑之间复制一个文件。但代码通过Python中的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
命令与将getpass和pxssh模块结合起来,建立一个ssh连接到远程服务器,并用它来命令直接发送(I只测试了它对于一个简单的命令):
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
显示,该主机名=本地,而不是远程服务器),但我敢肯定,连接已建立。我认为建立连接要比在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 localdirectory'? –
出于安全原因,在'os.system()'上使用'subprocess'模块。 – glglgl
我还没有想过通过'scp user @ hostname:file localdirectory'复制的可能性。它确实有效,但只有当我取消'user @'部分时才有效。 – user1063572