【问题标题】:Writing a string to a file on a remote linux box [duplicate]将字符串写入远程Linux机器上的文件[重复]
【发布时间】:2023-10-15 00:56:01
【问题描述】:

我正在尝试在远程 linux 机器上将 Python 字符串 (yaml) 写入 /path/to/foo.yaml

这里有一些复杂的 Python/bash 互操作。

我目前的解决方案是这样的:

ip = '1.2.3.4'
yaml = '...'

src = f'tmp-{i}.yaml'
dst = f'root@{ip}:/path/to/foo.yaml'

with open(src, 'w') as f:
    f.write(yaml)

cmd = f'scp -o StrictHostKeyChecking=no  -i mykey.pem  {src} {dst}'

subprocess.run(cmd.split())

所以我正在写入一个临时文件,然后使用 bash-in-Python scp-ing 该临时文件。

是否有更紧凑的解决方案可以避免创建临时文件?

警告:我的解决方案可能对带有空格的文件名没有弹性,所以不要盲目使用。如果您正在处理带有空格的文件名,请考虑不要这样做。

警告:google StrictHostKeyChecking 如果您将此代码用于需要安全的任何事情

【问题讨论】:

标签: python linux string bash scp


【解决方案1】:

使用 Tempfile 可能会更直接一些 https://docs.python.org/3/library/tempfile.html#examples

使用 paramiko sshclient 你可以摆脱 bash/subprocess 的东西 https://www.tutorialspoint.com/How-to-copy-a-file-to-a-remote-server-in-Python-using-SCP-or-SSH

【讨论】:

    最近更新 更多