有没有可能在远程机器上运行python脚本而不使用SCP或更好的方法传输文件?我搜索了很多库来解决这个问题。但没有找到最佳解决方案。
我找到了一些使用python脚本执行SSH和SCP到远程机器的库。在他们的方法中,首先使用SCP将文件复制到远程系统并通过SSH执行命令。
感谢你
答案 0 :(得分:1)
您可以使用fabric。
显然它确实取决于你想要远程python脚本到底做什么,但它有很多辅助功能可以与操作系统进行交互,包括文件上传和文件。下载但它是用Python编写的。
答案 1 :(得分: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解释器可用的模块。
答案 2 :(得分:0)
不确定
ssh remotehost python -c "'print(5)'"
不需要复制脚本来执行它。 Python解释器可以运行一个作为参数给出的脚本。
双引号是必要的(并且很快会变成麻烦)因为ssh
调用会删除一级引用,而另一个引用仍然需要将脚本分组为python
调用的一个参数
Multiline也没问题:
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")"