在没有脚本文件的情况下从命令行执行python程序

时间:2018-06-22 10:54:02

标签: python bash

我想在远程服务器上执行python程序,而不创建脚本。远程服务器不允许我在文件系统上的任何位置创建任何文件。

python函数具有以下结构,尽管功能复杂得多

def test2():
  print("test2")

def test_func():
  test2()
  print("test_func")

test_func()

是否可以直接从命令行执行此程序?
我已经尝试了这两种方法

  1. 使用 python -c 选项传递代码。
  2. 启动python交互模式,并复制粘贴代码以运行。

在两种情况下我都出错。但是,没有用户定义功能的任何代码都可以使用第二种方法执行。是否可以在不创建本地脚本的情况下使上述代码正常工作?

3 个答案:

答案 0 :(得分:2)

我找到了一种解决方案,也许会有所帮助,您可以使用EOF

$ python << EOF
> def test2():
>   print("test2")
> 
> def test_func():
>   test2()
>   print("test_func")
> 
> test_func()
> EOF

# output
test2
test_func

答案 1 :(得分:1)

您仍然可以像第一种方法那样使用函数:

x=0

答案 2 :(得分:1)

如果您可以将python源存储在HTTP服务器上,并且wget(或类似名称)已安装在远程主机上

$ wget -O - http://my.server.de/some/path/my_program.py | python

可能是实现目标的一种廉价方法。

另一种可能性,不涉及HTTP服务器,但是您需要在远程主机上使用scpssh

$ scp my_host:a_python_file.py /dev/stdout | python
$ ssh my_host 'cat a_python_file.py' | python