在远程机器上运行python脚本而不使用SCP

问题描述 投票:-1回答:3

有没有可能在远程机器上运行python脚本而不使用SCP或更好的方法传输文件?我搜索了很多库来解决这个问题。但没有找到最佳解决方案。

我找到了一些使用python脚本执行SSH和SCP到远程机器的库。在他们的方法中,首先使用SCP将文件复制到远程系统并通过SSH执行命令。

感谢您

python ssh scp remote-server
3个回答
1
投票

你可以使用fabric

显然它确实取决于你希望你的远程python脚本到底做什么,但它有很多帮助函数与操作系统交互,包括文件上传和下载,但它都是用Python编写的。


1
投票

您可以使用标志调用python从其标准输入读取脚本,然后通过ssh连接将脚本提供给python实例,例如:

cat /some/script.py | ssh user@host 'python -'

运行python -将导致python解释器从进程的标准输入中读取脚本。在这种情况下,ssh进程的标准输入作为python实例的标准输入传递给远程系统。

如果需要,您可以为python脚本提供其他命令行参数:

cat /some/script.py | ssh user@host 'python - arg1 arg2...'

请注意,python脚本中的任何import语句都将在远程系统上解析,因此脚本必须将自身限制为远程python解释器可用的模块。


0
投票

当然。

ssh remotehost python -c "'print(5)'"

不需要复制脚本来执行它。 Python解释器可以运行一个作为参数给出的脚本。

双引号是必要的(并且很快就会变成麻烦),因为ssh调用会删除一个引用级别,而另一个引用仍然需要将脚本分组为python调用的一个参数。

多线也没问题:

ssh remotehost python -c "'             
import random
print(random.random())'"

会印出类似的东西

0.998373816572

在Python脚本中使用'"时,请注意引用内容。

另一种选择是将脚本放在变量中,然后使用printf正确引用内容:

a='             
import random
print(random.random())'
# or use something like a=$(cat myscript.py)

ssh ttiqadm@ttiq-hv02 python -c "$(printf "%q" "$a")"
© www.soinside.com 2019 - 2024. All rights reserved.