![](/img/trans.png)
[英]How to copy a file to a remote server in Python using SCP or SSH?
[英]Secure Copy File from remote server via scp and os module in Python
我是Python和編程的新手。 我正在嘗試通過python腳本在兩台計算機之間復制文件。 但是代碼
os.system("ssh " + hostname + " scp " + filepath + " " + user + "@" + localhost + ":" cwd)
不行。 我認為它需要一個密碼,如使用SCP或SSH如何使用Python將文件復制到遠程服務器中所述? 。 我沒有得到任何錯誤日志,該文件不會顯示在我當前的工作目錄中。
但是,使用os.system("ssh " + hostname + "command")
或os.popen("ssh " + hostname + "command")
所有其他命令都可以正常工作。 - > command = eg ls
當我在命令行中嘗試ssh hostname scp file user@local:directory
時,它無需輸入密碼即可運行。
我嘗試將os.popen
命令與getpass和pxssh模塊結合起來建立與遠程服務器的ssh連接,並使用它直接發送命令(我只測試它以獲得簡單的命令):
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
顯示,hostname = local而不是遠程服務器),但是我確信,連接已經建立。 我認為建立連接比在bash命令中始終使用"ssh " + hostname
更容易。 我還嘗試了一些解決方法, 如何使用SCP或SSH將文件復制到Python中的遠程服務器? 但我必須承認,由於缺乏經驗,我沒有讓他們工作。
非常感謝幫助我。
我認為最簡單的(避免輸入密碼)和最安全的方法是首先設置公鑰/私鑰認證 。 完成后,您可以通過執行ssh user@hostname
登錄到遠程系統,以下bash命令可以解決這個問題:
scp some/complete/path/to/file user@remote_system:some/remote/path
相應的Python代碼將是:
import subprocess
filepath = "some/complete/path/to/file"
hostname = "user@remote_system"
remote_path = "some/remote/path"
subprocess.call(['scp', filepath, ':'.join([hostname,remote_path])])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.