我正在使用运行Linux的嵌入式设备(使用BusyBox)。我需要提供一个命令行工具来配置静态IP地址。有一些限制。
ifconfig
将无法完成工作,因为它会在以后丢失
系统重启。 vi
文本编辑器可以修改Linux配置文件。但不知何故,这也不被接受。因为假设客户不知道如何使用vi
或更深入地理解Linux。我需要提供一个工具,以便他们可以按下“ConfigMyIP 192.168.0.1 255.255.255.0”这样的工作并完成工作。知道如何做到这一点? (使用shell
或C
或两者)
答案 0 :(得分:2)
我自己想出了另一个解决方案。一般的想法是创建一个可以在系统init目录中配置IP地址的shell脚本。这是代码:
#include <stdio>
#define MAXBUF 100
int main(int argc, char** argv)
{
FILE* f;
char content[MAXBUF];
f = fopen("/etc/init.d/configip", "w+");
strcat("#!/bin/sh\n", content);
strcat("ifconfig ", content);
strcat(argv[1], content);
strcat(" ", content);
strcat(argv[2], content);
strcat(" up", content);
fwrite(content, 1, strlen(content) + 1, f);
fclose(f);
return 0;
}
当使用“192.168.0.1 255.255.255.0”等参数执行该程序时,它将在etc/init.d
中生成一个shell脚本:
#!/bin/sh
ifconfig 192.168.0.1 255.255.255.0 up
每次Linux启动时都会加载脚本。
答案 1 :(得分:0)
为什么不用您选择的语言编写程序,提示用户输入所需的IP地址?然后,将现有配置文件复制到备份版本,并通过一次读取备份版本来创建新配置文件。
如果该行指定了IP地址,则将其丢弃并写入新行,指定新IP地址,否则只需写入现有行。
如果客户从命令行输入参数很重要,如问题所示,那么请查看您选择的语言文档,以查看haw访问命令行参数。如果您使用的是C,那么请查看传递给argc
的{{1}}和argv
参数。
答案 2 :(得分:0)
如果我理解得很好,目标就会运行BusyBox
。
那么为什么不添加custom applet来提供这个“简单的界面”,允许用户永久修改相应的配置文件呢?
我认为此选项可能比外部程序更适合您所描述的非常有限的环境。