通过ssh尊重shebang行在远程服务器上运行文件

时间:2018-11-30 15:14:08

标签: shell command-line sh

所以我有一个文件。当前看起来像这样:

#!/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。

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

1 个答案:

答案 0 :(得分:1)

使用shebang行的操作系统是:请参阅execve(2)手册页。脚本文件必须是可执行文件,位于系统上。

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

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