Golang读取并修改非主流配置文件
今天工作中碰到的问题,要求修改此配置文件,没看出来是什么格式,用了下面的思路:
mysql {
# If any of the files below are set, TLS encryption is enabled
tls {
ca_file = "/etc/ssl/certs/my_ca.crt"
ca_path = "/etc/ssl/certs/"
certificate_file = "/etc/ssl/certs/private/client.crt"
private_key_file = "/etc/ssl/certs/private/client.key"
cipher = "DHE-RSA-AES256-SHA:AES128-SHA"
tls_required = yes
tls_check_cert = no
tls_check_cert_cn = no
}
# If yes, (or auto and libmysqlclient reports warnings are
# available), will retrieve and log additional warnings from
# the server if an error has occured. Defaults to 'auto'
warnings = auto
}
postgresql {
# unlike MySQL, which has a tls{} connection configuration, postgresql
# uses its connection parameters - see the radius_db option below in
# this file
# Send application_name to the postgres server
# Only supported in PG 9.0 and greater. Defaults to no.
send_application_name = yes
}
# Connection info:
#
server = "127.0.0.1"
port = 5432
login = "testuser13"
password = "Tpass123"
# Database table configuration for everything except Oracle
radius_db = "test13"
# If you are using Oracle then use this instead
# radius_db = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=your_sid)))"
用Go代码修改如上所示的配置文件,如radius_db字段的值,步骤如下:
github.com/go-ini/ini获取键radius_db的值;fmt.Sprintf()将radius_db = "test13"整体包装成字符串;fmt.Sprintf()包装新字符串;strings.Replace()整体替换。
主要实现代码:
// 根据路径获取文件
configFile := "./sql.conf"
configContent, err := ioutil.ReadFile(configFile)
// 加载配置文件,跳过无法解析的行;设置key/value分隔符为"="
cfg, err := ini.LoadSources(ini.LoadOptions
{SkipUnrecognizableLines:true, KeyValueDelimiters:"="}, configFile)
// 获取"radius_db"的值
sqlDBName := cfg.Section("").Key("radius_db").String()
// newName指要修改的新值
sqlDBNameOld := fmt.Sprintf(`radius_db = "%s"`, sqlDBName)
sqlDBNameNew := fmt.Sprintf(`radius_db = "%s"`, newName)
// 替换并写入
newConfig := strings.Replace(string(configContent), sqlDBNameOld, sqlDBNameNew, 1)
// 写入文件
err = ioutil.WriteFile(configFile, []byte(newConfig), 0644)
Golang读取并修改非主流配置文件的更多相关文章
- C# 配置文件读取与修改
C# 配置文件读取与修改 配置文件在很多情况下都使用到, 配置文件分为两种 一种是应用程序的配置文件, 一种是web的配置文件. 两种配置文件最大的区别是web的配置文件更新之后会实时更新, 应用 ...
- C# 配置文件读取与修改(转)
C# 配置文件读取与修改 配置文件在很多情况下都使用到, 配置文件分为两种 一种是应用程序的配置文件, 一种是web的配置文件. 两种配置文件最大的区别是web的配置文件更新之后会实时更新, 应用 ...
- 配置文件——App.config文件读取和修改
作为普通的xml文件读取的话,首先就要知道怎么寻找文件的路径.我们知道一般配置文件就在跟可执行exe文件在同一目录下,且仅仅在名称后面添加了一个.config 因此,可以用Application.Ex ...
- C#项目实例中读取并修改App.config文件
C#项目是指一系列独特的.复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间.预算.资源限定内,依据规范完成.项目参数包括项目范围.质量.成本.时间.资源. 1. 向C#项目实 ...
- SpringBoot学习(三)-->Spring的Java配置方式之读取外部的资源配置文件并配置数据库连接池
三.读取外部的资源配置文件并配置数据库连接池 1.读取外部的资源配置文件 通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法: @Configuration ...
- WPF C#之读取并修改App.config文件
原文:WPF C#之读取并修改App.config文件 简单介绍App.config App.config文件一般是存放数据库连接字符串的. 下面来简单介绍一下App.config文件的修改和更新. ...
- golang 读取 ini配置信息
package main //BY: 29295842@qq.com//这个有一定问题 如果配置信息里有中文就不行//[Server] ;MYSQL配置//Server=localhost ...
- 在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。
在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除. 作者:邵盛松 2009-09-05 前言 1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇& ...
- IntelliJ IDEA 在网页修改数据,但是在浏览器刷新的时候,不能读取到修改之后的数据
使用IntelliJ IDEA 在网页修改数据,但是在浏览器刷新的时候,不能读取到修改之后的数据? 解决办法:tomcat配置中,On frame deactivation属性选择Update cla ...
随机推荐
- JS 树形结构与数组结构相互转换、在树形结构中查找对象
总是有很多需求是关于处理树形结构的,所以不得不总结几个常见操作的写法.¯\_(ツ)_/¯ 首先假设有一个树形结构数据如下 var tree=[ { 'id': '1', 'name': '教学素材管理 ...
- 微信小程序开发--flex详细解读(2)
一.align-items和其参数 stretch / baseline 注:sretch只有在交叉轴没有设置固定长度的情况下才有作用 ...
- Vue2.0 新手入门 — 从环境搭建到发布
什么是 Vue Vue 是一个前端框架,特点是数据绑定 比如你改变一个输入框 Input 标签的值,会自动同步更新到页面上其他绑定该输入框的组件的值 组件化 页面上小到一个按钮都可以是一个单独的文件. ...
- 【转载】UNICODE与ASCII的区别
原文地址:https://blog.csdn.net/lx697/article/details/5914417 最近的项目涉及到了国际化的问题,由于之前并没有接触到UNICODE编码,因此,在项目期 ...
- ssh实现无密码登陆
参考教程:https://linux.cn/article-5444-1.html 1.假设你有一台主机A(ip:111.111.111.111),用户名为server123,想无密码登陆到主机B(1 ...
- Odoo中的env详解
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826382.html 一:environment environment类提供了对ORM对象的封装,同时提 ...
- Activiti6 查询由某人发起的流程请求 设置流程发起人
发起流程时,配置activiti:initiator属性,并且在代码中: Authentication.setAuthenticatedUserId(userId); 其中,userId对应流程发起人 ...
- 前端html页面,手机查看
在写前端页面中,经常会在浏览器运行HTML页面,从本地文件夹中直接打开的一般都是file协议,当代码中存在http或https的链接时,HTML页面就无法正常打开,为了解决这种情况,需要在在本地开启一 ...
- Anaconda3(5-1)程序编辑器 自带的spyder
1装好后自带spyder编辑器 2 打开软件 3 每次程序需要制定anaconda3中创建的虚拟环境对应 的python版本的路径 例如在我的电脑我创建了两个环境 而我的pytorch安装在pytho ...
- 管理node.js的nvm
我们坑同时在运行2个项目.而2个不同的项目所使用的node版本又不一样,或者是要用更新的node版本进行试验或学习.这种情况下,对于维护多个版本的node将会是一键非常麻烦的事情,而nvm就是为了解决 ...