导航:首页 > 文件管理 > ebs采购申请修改配置文件

ebs采购申请修改配置文件

发布时间:2024-05-17 06:17:31

『壹』 如何修改一个配置文件

1. 引言
OpenWRT中采用作为它的Web interface界面框架,采用Lua语言。在本文中将以一个简单的示例详细描述如何自定义开发一个界面,对一个配置文件进行操作。
2.Model与Controler
MVC的设计理念是进行LuCI开发的一个关键
在LuCI中Controller的文件定义在固件中的/usr/lib/lua/luci/controller目录中,模版目录在/usr/lib/lua/luci/view目录下,而model则是在/usr/lib/lua/luci/model中。而model中有一个特殊的模块叫做CBI,被称为LuCI中最酷的功能,该模块的功能是方便的对一个配置文件进行修改。
3.示例
本文中的页面建立在LuCI界面的network下,不单独创建页面,因此无需写view,只用些controller和model就可以了。
1)首先创建一个controller
ccontroller/mycbi.lua
mole("LUCI.controller.mycbi", package.seeall)

function index()
entry({"admin", "network", "mycbi_change"}, cbi("mycbi-model/mycbimole"), "Change My Conf", 30).dependent=false
end

解释一下关键代码

在index()函数中,使用entry函数来完成每个模块函数的注册,官方说明文档如下:
entry(path, target, title=nil, order=nil)
path is a table that describes the position in the dispatching tree: For example a path of {"foo", "bar", "baz"} would insert your node in foo.bar.baz.
target describes the action that will be taken when a user requests the node. There are several predefined ones of which the 3 most important (call, template, cbi) are described later on on this page
title defines the title that will be visible to the user in the menu (optional)
order is a number with which nodes on the same level will be sorted in the menu (optional)
其中target主要分为三类:call,template和cbi。call用来调用函数,template用来调用已有的htm模版,而CBI模块则是使用非常频繁也非常方便的模块,包含的一系列lua文件构成界面元素的组合,所有cbi模块中的控件都需要写在luci.cbi.Map中,在cbi模块中定义各种控件,Luci系统会自动执行大部分处理工作。在cbi.lua文件中封装了所有的控件元素,例如复选框,下拉列表等。

2)创建model
#mkdir /usr/lib/lua/luci/model/cbi/mycbi-model
#vim /usr/lib/lua/luci/model/cbi/mycbi-model/mycbimole.lua
m = Map("mycbi", "mycbi conf change interface")
s = m:section(TypedSection, "MySection")
s.addremove = true
s:option(Value, "username", "Name:")
key=s:option(Value, "password", "Password")
key.password=true;
return m

解释一下关键代码:

3)创建配置文件
#vim /etc/config/mycbi
config 'MySection' 'mycbi'

option 'username' 'youruser'
option 'password' 'yourpass'

4. 测试
进入OpenWRT界面,登陆后就可以点击逗网络地,如果是英文就点击network,可以看到我们添加的子页面入口:

点击后进入页面如下:

输入用户名密码:root/test,点击保存,后台查看配置文件已经被更改:

5. 问题记录
1)首先,配置文件不能有任何后缀,否则页面加载后是空页面
2)如果出现500 错误,说明lua文件写的有问题,要么是路径错误,要么是语法错误,暂时没找到写日志的方法,可以用wireshark抓包看错误

『贰』 程序怎么实现配置文件修改切换

        在服务器切换过程中,可以需要不同的配置文件,笔者就在想怎么来完成配置文件的修改达到不同的场景需求呢?第一视角可能就是直接把配置文件修改成需要的值,然后再重新拉进程完成服务切换。

    本文笔者再linux中列举两种方法,windows列举一种方法,敬请参考至于在windows下直接修改配置文件的内容,笔者在命令行没有找到方法,但是笔者想可以使用python来完成。但是相对于直接修改配置文件,不如(windows)或cp(linux)优雅、安全、

    以下的方法,可以结合脚本来进一步优化实现。配置文件修改完成后,把重拉进程写入脚本中,来完成自动化的操作。

1、sed命令修改配置文件中的字段值

        sed 全名为 stream editor,流编辑器,用程序的方式来编辑文本,功能相当的强大。

        语法:sed -i 's/Search_String/Replacement_String/' Input_File

        根据配置文件的字段,将需要修改的值直接使用sed -i 来直接对文本文件进行操作,这个操作有点危险。下面是将配置文件中的3306替换为3307,完成配置文件的修改。

        这样操作会直接修改原始文件,稍有不慎,那么风险是很大的。有没有可能将原始文件备份一下再修改呢?sed -i添加一个后缀(比如,-i.bak)就会生成一个原始文件的备份.bak文件。

    这个后缀是可以自定义的,不局限于.bak,可以以日期来命名方便区分记忆。

    那么还有一个问题,万一配置文件里面有相同的字段值,但是需求只是修改一处而已呢?默认情况下,sed 命令替换每一行第一次出现的模式,它不会替换行中的其他的匹配结果,在行中使用/1、/2……/n 等标志来代替相应的匹配。如果只需要替换某一处,那么可以将更多的字符串作为被替换的字符串。例如下面例子。

2、linux中cp复制需要的配置文件到目标配置文件            

    根据需求,修改配置文件来切换最直接,但是修改原始配置文件可能存在风险。于是可以换个思路,将需要的配置写入到不同的文件中,形成多配置文件,在不同场景进行切换不同的文件即可。

     根据不同的应用场景需要切换配置文件,目标配置文件是my.cnf,在cp时会覆盖以前的配置文件。原始配置信息仍然存在,只是以另外的文件名包保存。

3、windows中复制需要的配置文件到目标配置文件   

    和 linux中cp复制一样,只是命令时而已。

阅读全文

与ebs采购申请修改配置文件相关的资料

热点内容
怎么查微信公众号什么时候开通的 浏览:717
安装三菱编程闪退怎么回事 浏览:488
手机怎么创建word文件格式 浏览:694
c语言连接数据库 浏览:887
数据线粉色和白色哪个是正 浏览:775
vb编程应注意什么 浏览:855
js循环添加控件 浏览:615
学习计算机网络的作用 浏览:235
access数据库最新内容怎么调 浏览:203
上古世纪新版本跑商 浏览:267
iphone5国际漫游设置 浏览:107
ipodwatch如何安装app 浏览:114
谁有微信抢红包的群号 浏览:872
word07页码从任意页开始 浏览:791
js禁止滑动事件 浏览:800
苹果查序号怎么看不是 浏览:61
linux在txt文件 浏览:568
ps如何导入文件匹配 浏览:201
转转app怎么把自己的账号租出去 浏览:828
福昕阅读器合并照片pdf文件 浏览:591

友情链接