【问题标题】:C : how to to execute remotely a command line programm and interact with it from a server?C:如何远程执行命令行程序并从服务器与之交互?
【发布时间】:2021-05-12 22:11:27
【问题描述】:

我用 C 语言制作了一个简单的 tcp 客户端(我准确地说是在 windows 中),它由 netcat 控制。我希望能够远程运行命令行可执行文件(例如字符串),最重要的是能够从 netcat 或我的服务器与该程序进行交互。(为了在远程计算机上执行操作特别)。

最好的解决方案是什么?

编辑:这是一个例子:我想在远程计算机上运行字符串程序。为此,我可以简单地在 netcat 中编写“字符串”,该命令将由客户端解释,并且该客户端执行字符串二进制文件。字符串的输出应该显示在 netcat 上。

我确切地说程序的二进制文件可以在远程计算机上,但是如果有一种方法可以将它作为“真正的”远程程序执行,而不需要在远程计算机上获取可执行文件,那就太好了。

【问题讨论】:

  • 您希望 netcat 能够运行 shell 命令,还是您的“简单 tcp 客户端”?请edit澄清您的问题。
  • 我只是编辑我的问题。
  • 那么请告诉我们这是否仅用于学习和实验,如果不是,请告诉我们您试图通过远程命令执行解决哪些现有系统(例如 SSH)无法解决的问题.
  • 这是一个个人项目,确实必须在没有 ssh 的情况下完成。

标签: c server tcp client


【解决方案1】:

首先,您的术语有点不对劲。你说你写一个tcp客户端。但似乎你写了一个服务器。因为这个程序应该接收传入的 tcp 连接并请求然后发送响应。

为了执行命令,您可以使用exec* 系统调用。
但是,您需要在机器中提供可执行文件。

然后你需要围绕 tcp read 构建一些 for 循环,为每行发送执行一些事情,并进行一些设置以确保在 tcp 连接中重定向输出。请参阅dupsyscall。

最终,如果您不想编写完整的类似 shell 的程序,您可以只使用exec系统 shell(我认为在 Windows 上为cmd.exe),并将所有输入/输出重定向到它。

【讨论】:

  • 我刚刚验证了我的答案,但实际上我写了一个 tcp 客户端,而不是服务器,因为我的程序只是连接到具有指定端口的指定地址:我的程序不等待连接,比如服务器可以,但也许我的答案是错误的。
  • 感谢您的这些提示,我会寻找一些相关信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
相关资源
最近更新 更多