如何将本地TXT中的密码解析至YAML文件以替代手动录入
刚好我之前也处理过类似的配置安全需求,用Ruby搭配Psych gem就能完美实现自动从本地TXT文件读取密码并更新YAML配置的功能,全程不用手动修改YAML内容,给你梳理个清晰的实现流程:
1. 准备密码文件
先把你的密码单独存到一个本地TXT文件里,比如路径设为 /home/#{ENV["USERNAME"]}/app_password.txt,文件里只放纯密码字符串,不要加引号或多余换行,确保文件权限设置为 chmod 600(防止其他用户读取,安全第一)。
2. 编写Ruby脚本实现自动替换
下面是完整的脚本代码,你可以直接调整路径后使用:
require 'psych' # 1. 读取本地密码文件 password_file_path = "/home/#{ENV["USERNAME"]}/app_password.txt" begin app_server_password = File.read(password_file_path).strip rescue Errno::ENOENT puts "错误:密码文件不存在,请检查路径" exit 1 end # 2. 加载原YAML配置文件 yaml_file_path = "/devl/galaxy/common/edwEnvironmentConfig.yml" config = Psych.load_file(yaml_file_path) # 3. 更新配置中的密码字段 config["app_server_password"] = app_server_password # 可选:顺便替换其他环境变量(比如$USERNAME$) config["app_server_username"] = ENV["USERNAME"] config["environment_profile"] = "/home/#{ENV["USERNAME"]}/eproduct/difenv" config["teradata_logon_file"] = "/home/#{ENV["USERNAME"]}/.priv/devl/.td_connection" config["project_root_directory"] = "/home/#{ENV["USERNAME"]}/eproduct/" # 4. 将修改后的配置写回YAML文件 File.write(yaml_file_path, Psych.dump(config, indentation: 2)) # 缩进2格保持原格式风格 puts "密码已成功更新到YAML配置文件!"
3. 关键注意事项
- 权限安全:一定要给密码文件设置严格的权限(
chmod 600),避免敏感信息泄露 - 备份原文件:首次运行脚本前,建议先备份你的YAML配置文件,防止意外修改
- 异常处理:脚本里加了文件不存在的异常捕获,你可以根据需要扩展其他错误处理逻辑
- 格式保持:
Psych.dump时指定indentation: 2可以让生成的YAML和原格式保持一致,看起来更整洁
内容的提问来源于stack exchange,提问作者Phantom
相关产品推荐
相关产品推荐

