我對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