c-如何通过网络对终端进行完全控制



有没有办法通过网络对终端进行完全控制。例如,我有一个用C编写的服务器和客户端,我想向服务器(本例中的服务器是linux计算机)发送一个类似rm filecd directory的命令,并将终端输出返回到客户端。我目前使用popen()处理ls,但它不能更改目录或执行其他复杂的命令。有没有更好的方法可以做到这一点,也许可以使用fork() pipe()和其他函数来使用任何命令并从终端获得完整的输出。

您所要求的是由SSH完成的。

例如,我有一个用C编写的服务器和客户端,我想向服务器(本例中的服务器是linux计算机)发送一个类似rm文件或cd目录的命令,并将终端输出返回到客户端。

我强烈反对自己实现这样的功能。可能性很高,你自己的方法会有几个安全问题。

SSH是远程终端的事实标准,具有强大的加密、经过真实世界测试的身份验证和强大的维护支持。还有一些优秀的开源实现,比如OpenSSH。

不确定您的确切设置是什么,但为什么不在远程端创建一个shell呢?然后,您可以从命令行执行任何可以执行的操作。

如果一个真实的交互式连接是一个选项,那么可以查看pty("pseudo-tty")。这就是真正的终端应用程序的工作方式。

如果您可以从ls获得输出,那么您就走上了正确的道路。

接下来的事情是能够发送输入,与输出没有太大区别。您可以使用命令cat来检查您的操作是否正确,同时输入和输出。

然后,只需运行您喜欢的shell命令,例如bash,就可以将命令写入输入流并读取每个命令的输出。

注意,cd不是一个程序;它是一个shell命令,所以你必须运行一个shell,它才有意义。重定向和你想做的其他复杂事情也是如此。

附言:请注意,这可能是一个严重的安全问题,您应该认真考虑已经制定的替代方案,如ssh,正如其他人所说。

最新更新