代码之家  ›  专栏  ›  技术社区  ›  RiaD

通过ssh在远程服务器上运行一个与shebang行相关的文件

  •  0
  • RiaD  · 技术社区  · 7 年前

    所以我有一个文件。目前看来:

    #!/usr/bin/env python3
    print(1)
    

    我想把它放在远程机器上。最简单的方法就是跑

    < test.py ssh server-name python3
    

    但如果我不知道这是一个python脚本(或者我可能不知道它是python3而不是python2)并想尊重它的shebang呢?

    我试过

    < test.py ssh server-name exec /dev/stdin
    

    但它失败了 /dev/stdin 不可执行

    为了简单起见,我们假设这两个服务器都是最新的ubuntu。

    所以问题是如何运行任意脚本尊重它的shebang?

    1 回复  |  直到 7 年前
        1
  •  1
  •   glenn jackman    7 年前

    是操作系统使用了shebang行:查看 execve(2) 人页。脚本文件必须是可执行的,位于系统上。

    您可以从脚本中提取它以在远程端使用:未测试:

    shebang=$(sed -n '1 {s/^#!//p; q}' test.py)
    ssh server-name "$shebang -" < test.py