有没有办法通过网络完全控制终端?例如,我有一个用C语言编写的服务器和客户机,我想向服务器(本例中的服务器是一台linux计算机)发送一个类似rm file或cd directory的命令,并将终端输出返回给客户机。我目前使用popen()让它在ls上工作,但它不能更改目录或执行其他复杂的命令。有没有更好的方法来做到这一点,也许是使用fork() pipe()和其他函数,以便使用任何命令并从终端获得完整的输出。
发布于 2013-02-11 04:52:36
您所要求的是由SSH完成的。
例如,我有一个用C编写的服务器和客户机,我想向服务器(在这种情况下,服务器是一台
计算机)发送一个类似rm文件或cd目录的命令,并将终端输出返回给客户机。
我强烈建议您自己实现这样的功能。你自己的方法有几个安全问题的可能性很高。
SSH是远程终端的事实标准,具有强大的加密、经过实际测试的身份验证和强大的维护支持。还有一些优秀的开源实现,比如OpenSSH。
发布于 2013-02-11 04:53:52
不确定您的确切设置是什么,但为什么不在远程端创建一个shell?然后,您可以从命令行执行任何可以执行的操作。
如果可以选择真正的交互式连接,请查看pty(“伪tty”)。这就是真正的终端应用程序的工作方式。
发布于 2013-02-11 04:57:56
如果您可以从ls获得输出,那么您就走在了正确的道路上。
下一件事是能够发送输入,与输出没有太大的不同。您可以使用命令cat同时检查输入和输出是否正确。
然后,只需运行您最喜欢的shell命令,例如bash,您就可以将这些命令写入输入流并读取每个命令的输出。
请注意,cd不是一个程序;它是一个外壳命令,因此您必须运行一个外壳才能使其具有任何意义。对于重定向和其他看起来你想要做的复杂事情也是如此。
PS:请注意,这可能是一个严重的安全问题,您应该认真考虑已有的替代方案,如其他人所说的ssh。
https://stackoverflow.com/questions/14802393
复制相似问题