繁体   English   中英

在不使用SCP的情况下在远程计算机上运行python脚本

[英]Run python script in remote machine without using SCP

是否有可能在不使用SCP或更好方法的传输文件的情况下在远程计算机上运行python脚本? 我搜索了很多图书馆来解决此问题。 但是并没有找到最好的解决方案。

我已经发现了一些图书馆使用python脚本,执行SSH和SCP到远程计算机。 在他们的方法中,首先使用SCP将文件复制到远程系统,然后通过SSH执行命令。

感谢您

您可以使用fabric

显然,这确实取决于您希望远程python脚本执行的操作,但是它具有许多与OS交互的辅助功能,包括文件上载和下载,但都是用Python编写的。

您可以使用标记调用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解释器可用的模块。

当然。

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")"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM