【问题标题】:Shell script that can call a binary可以调用二进制文件的 Shell 脚本
【发布时间】:2015-02-18 03:53:58
【问题描述】:

我想通过 ssh 服务器运行从 C 程序编译的二进制文件,但显然 ssh 只能发送 bash 命令。

我正在考虑制作一个 shell 脚本来运行二进制文件,这样我就可以通过 ssh 调用该脚本。这可行吗?

所以通常这会起作用

$./mycprogram

但我发现这不起作用

$ssh user@node ./mycprogram 

虽然通过相同 ssh 的其他 bash 命令确实有效

从其他服务器(通过 ssh)调用 mycprogram 的正确方法是什么?

【问题讨论】:

  • 什么在运行 c 对象?你的意思是运行一个c程序?编译一个?还有什么?
  • “这不起作用”是什么意思?
  • 程序是否立即驻留在主目录中?如果没有,您必须提供其路径。
  • 您收到什么信息?运行失败后echo $? 的输出是什么?

标签: c shell ssh


【解决方案1】:

如果“C 对象”是指“C 程序”,则必须先编译它才能运行。 C 解释器,但大多数 C 程序都是为编译而编写的。

如果程序已编译,您可以像运行任何其他程序一样运行它,方法是从 bash 脚本中按名称调用它。许多常规的“shell 命令”实际上是编译后的 C 程序(例如 lscp 等)。

当然,您需要确保二进制文件(编译后的 C 程序)在目标机器上可用,并且位于正确的位置。

【讨论】:

  • 我正在尝试通过 ssh 运行编译的。好像不行
【解决方案2】:

这可能取决于目录。

E. G。如果你 ssh 到另一个主机,用cd mydir 改变目录然后做./myprogram,你必须小心使用

ssh myhost mydir/myprogram

以便找到文件。

【讨论】:

  • 是的,这是我没有指定的目录。但是像您的建议一样指定目录也不起作用。我最终将对象移动到根目录,这将涉及许多其他更改。我发现这是 Linux 的另一个奇怪之处。感谢您的所有回答
  • @EmmaAhmadSirajudin 这与“奇怪的 Linux”无关;可能你还是做错了什么。通常,您所描述的绝对应该有效;我每天都这样做。可能你在指定路径的时候搞错了;请注意,/path/to/whereverpath/to/wherever 不同。
猜你喜欢
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 2013-08-26
  • 2010-10-04
  • 2010-12-30
相关资源
最近更新 更多