2009-11-27 57 views
1

我想添加命令行界面支持到服务器程序。有没有开源的命令行库?

所以每次我想检查服务器的状态时,我都可以telnet到服务器的控制端口 并输入命令来检查服务器的状态。

有没有开源的库实现这样的功能,所以我不需要从头开始写它?

更进一步,如果库可以提供更多的功能,如Cisco的命令行界面(tab键提示,命令查询,vi模式,或甚至基于码元指令),这是将是巨大的。

回答

5

libcli听起来像正是你所寻找的东西。它包括类似Cisco的功能和一个telnet服务器。我从来没有用过它,但是当我在寻找类似的CLI时遇到了它。

1

readline(3)你在找什么呢?

readline将从终端读取一行并返回它,使用prompt作为提示。如果 提示是NULL或空字符串,则不会发出提示。返回的行与malloc(3)一起分配为 ;呼叫者必须在完成时释放它。返回的行已删除最后的新行,因此只有行的文本保留。

从这个问题是不清楚,如果你正在寻求实现用户交互的连接。这个答案,UI部分。

+0

我想这个作为运行服务器程序的子线程,并通过套接字通信的客户端。所以我可以随时随地监控服务器程序的状态。 Readline是一个输入处理库,但我想我可能需要其他套接字服务器/命令处理机制。 –

2

可以使用socket图书馆听一个TCP端口,接收有命令和输出回到自己的地位。没有太多的代码需要这样做;一个例子可以在这里找到:http://www.paulgriffiths.net/program/c/echoserv.php

(示例程序只是返回已发送的命令。显然,你会希望有更多特定于应用程序的东西来代替Writeline(...);

2

一个telnet服务器几乎是微不足道的从头开始编写时,唯一容易的是过时的rlogin协议,它仍然可以从ssh访问。你不会有任何麻烦做几个套接字调用来实现这样的事情。

您将被告知,我相信,不要使用telnet,而是SSH。这是一个很好的建议,但你有两个很好的选择:在本地开放代码中实现telnet,并通过ssh隧道连接,或使用ssh服务器通过安全通道登录。

请参阅:对于SSH servers。这不会直接帮助你,尽管apache具有容易嵌入的Java实现。如果你只是谷歌的“telnet服务器”,你会得到更多的链接,我可以在这里以各种语言引用,其中许多语言包含易于实现的示例代码。史蒂文斯的书也可能直接处理这个话题。

+0

谢谢,似乎修改telnet服务器代码是一个简单的解决方案。 –

+1

如果你看一下协议,telnet就不那么简单了......但是当然你不需要实现所有的协议 –

2

如果你不想处理套接字或共享内存段,它很容易让你的守护进程更新SQLite3数据库,这样客户端就可以通过一个简单的查询获得它的统计信息,然而,当你需要使用主机操作系统的用户/组管理来授予低级用户访问权限。

在所有的现实,它通常最好只使用一个简单的套接字连接。在Linux中,很容易找出(本地)哪个用户标识正在调用,并且只允许少数用户标识。

0

这是我以前使用的软件。它提供与Cisco CLI界面几乎相同的CLI功能。

您只需将源代码移植到lib文件夹下。

斑驴路由套房 https://www.nongnu.org/quagga/