Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SSH Connection with Python 3.0

Tags:

python

file

ssh

How can I make an SSH connection in Python 3.0? I want to save a file on a remote computer where I have password-less SSH set up.

like image 623
Steven Hepting Avatar asked Jun 04 '09 22:06

Steven Hepting


People also ask

Can you SSH with Python?

SSH is widely used by network administrators for managing systems and applications remotely, allowing them to log in to another computer over a network, execute commands and move files from one computer to another. In python SSH is implemented by using the python library called fabric.


1 Answers

I recommend calling ssh as a subprocess. It's reliable and portable.

import subprocess
proc = subprocess.Popen(['ssh', 'user@host', 'cat > %s' % filename],
                        stdin=subprocess.PIPE)
proc.communicate(file_contents)
if proc.retcode != 0:
    ...

You'd have to worry about quoting the destination filename. If you want more flexibility, you could even do this:

import subprocess
import tarfile
import io
tardata = io.BytesIO()
tar = tarfile.open(mode='w:gz', fileobj=tardata)
... put stuff in tar ...
proc = subprocess.Popen(['ssh', 'user@host', 'tar xz'],
                        stdin=subprocess.PIPE)
proc.communicate(tardata.getvalue())
if proc.retcode != 0:
    ...
like image 162
Dietrich Epp Avatar answered Oct 24 '22 13:10

Dietrich Epp