SSH Connection with Python 3.0

后端 未结 6 1400
余生分开走
余生分开走 2020-12-03 18:53

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.

6条回答
  •  情歌与酒
    2020-12-03 19:00

    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:
        ...
    

提交回复
热议问题