如何使用C中的原始telnet选项验证服务器上是否完成了客户端发出的TELNET命令?
recv(...)等待缓冲区输入,但不要等到命令完成。
等待是否需要处于套接字级别?或者,这有一个TELNET选项吗? (我通过搜索找不到任何东西)
man socket显示select / poll可用于验证套接字FD是否对读/写开放;但我不认为这是正确的方法。
任何帮助或至少方向都会有所帮助。
答案 0 :(得分:1)
假设您的意思是您在远程主机上运行的命令,而不是telnet命令(IAC DON'T ECHO
等),则无法执行您想要的操作。 telnet连接只是一个终端,来回传递字符。它不知道这些字符中的任何一个是否代表另一方的程序的命令和响应。
所以真的问题是如何以编程方式运行一些专为交互式使用而设计的命令行界面。答案取决于命令行界面本身,而不是你用来连接它的方法(telnet,ssh,RS232串口......你在任何情况下都有同样的问题)。< / p>
命令行界面的操作人员需要了解提示,并且还要足够聪明以响应预期提示的不出现。为特定的命令行界面编写程序可能很困难,除非你很幸运并且它有一个命令进入具有结构化响应的非交互模式。
人们通常用来编写此类程序的工具是expect。