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

程序怎么实现配置文件修改切换,第1张

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

    本文笔者再linux中列举两种方法,windows列举一种方法,敬请参考至于在windows下直接修改配置文件的内容,笔者在命令行没有找到方法,但是笔者想可以使用python来完成。但是相对于直接修改配置文件,不如copy(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中copy复制需要的配置文件到目标配置文件   

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

对于普通的不依赖于外置程序目录结构的注册表项目,可以用常规方法将修改项写成reg文件(可以直接从xp系统中导出,然后在其基础上修)。在外置程序目录下有个regdoc.cmd,这个文件是毛桃用来注册外置程序文档关联的(就是改注册表),可以用记事本打开它,加入一行:

则pe加载外部配置时它会自动导入。

这是最简单的改注册表的方法。但是如果要修的项依赖于外置程序的目录结构(比如要在右键菜单中添加用ultraedit32打开),就不能用上面的方法了,因为外置程序的绝对路径是不确定的(不同的机器中盘符不能确定)。

这种情况就需要用原始的reg命令来做了(就跟毛桃在regdoc.cmd中的做法一样),这个命令的语法比较艰涩,且注册表键值的表示方法跟reg文件不同。在命令提示符下通过/?参数可以获得它的用法(中文的哦),提醒一下/?参数是个以多层使用的,如reg/?得到的是基本参数的说明,如用regadd/?则可得到add这个参数的用法……

有了这个命令的基础后,我们来看看是怎么解决不定路径问题的。

在regdoc.cmd中有一个环境变量%tp%,代表的是regdoc.cmd这个文件所在的路径。我们可以通过%tp%..表示它的上层目录,%tp%....表示它的上两层目录。用此方法可以索引到外置程序目录内的所有路径,而不用考虑外置程序目录本身的绝对路径。

(还有个方法就是在winpe.ini中用pecmd的regi命令一行行添加,这个比系统的reg命令好理解些,同样可以用%curdir%环境变量来索引外置程序目录内的所有路径)

直接修改的好处是启动pe就是所需要设置,不依赖外部配置文件,pe的加载速度也比较快,但麻烦。修改配置文件则比较简单,但要依赖配置文件加载过程(直到加载到那些语句时才会生效),启动时需要额外的时间加载,相当于给系统打补丁去修改默认设置。

一般情况下不推荐直接修改pe注册表,麻烦,重新打包也比较花时间。但有些跟系统紧密的键必须直接修改才有效,比如屏幕分辨率,虽然在外面也可以修改有,但在登录时加载到它之前是无效的,那么在登录的过程中屏幕就会因切换分辨率而闪烁。

自己修改注册表的前提是自己要知道所希望的改变要修注册表中的哪些键值。可以上网搜索,现在网上的这些资源多得是,实在找不到的话可以还可以用regmon之类的注册表监视软件来定位。

比如修改记事本的自动换行,又不知道相应的键值在哪。可以先开启regmon,然后在记事本中改变换行的选项,看regmon的监视结果,来定位是哪个键值。因为系统本身也在不断的更改注册表,regmon中的显示会很多,但是通过不断的改变记事本中的设置,最终是可以找到的,这个过程需要的是耐心和细心。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12069281.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存