2017-11-12 9 views
0

リモートファイルを編集する必要があります。 今、SSH経由でマシンにログインしています。コマンドを実行して応答を返すことができます。SSHLibrary経由でリモートファイルを編集する方法は?

リモートファイルを変更するのが難しいです。

Source Machine : Windows 
Destination : Linux 

Windowsマシンにファイルを取得して編集してから、もう一度Linuxにファイルを転送してください。または他のより良い方法?

import SSHLibrary 
s = SSHLibrary.SSHLibrary() 
s.open_connection("10.10.10.10",username, password) 
#s.write("sudo vi file_name_along_with_path") it has to force edit the file 
# any ftp mechanism would be better 

私を助けてもらえますか?

+0

あなたが本当にPythonでこれをコーディングする必要がありますか?または、リモートファイルを編集できるツールを探しているだけですか? –

答えて

0

トライPythonのparamikoとLinuxの猫とviのないエコー。

import paramiko 

host = 'test.example.com' 
username='host_user_name' 
password='host_password' 
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect(hostname=host, username=username, password=password) 
stdin, stdout, stderr = ssh.exec_command("cat path_to_file_for_read") 
all_lines = '' 
for line in stdout.readlines(): 
    all_lines += line 
new_line = all_lines + 'add more or edit' 
print new_line 
stdin, stdout, stderr = ssh.exec_command("echo '{}' >> path_of_file_to_write".format(new_line)) 
ssh.close() 
0

SFTP(SSHファイル転送プロトコル)を使用してください。これはファイル転送用に設計されたプロトコルです。

import paramiko 

host = "sftp.example.com" 
transport = paramiko.Transport(host) 
transport.connect(username = "username", password = "password") 

sftp = paramiko.SFTPClient.from_transport(transport) 

# Download 

filepath = '/remote/path/file.txt' 
localpath = '/tmp/file.txt' 
sftp.get(filepath, localpath) 

# Open in your favorite editor here 

# Upload back 

sftp.put(localpath, filepath) 

# Close 

sftp.close() 
transport.close() 

paramiko's sshclient with sftp上ベース)

関連する問題