如何通过编程方式向R创建keyring的密码提示传入值
R keyring 非交互式创建密钥环实现方案
方案1:纯R实现(最推荐)
keyring_create 函数原生支持显式传入password参数,不会触发交互式输入提示:
library(keyring) # 直接传入密码参数 keyring_create("system", password = "你的自定义密码")
如果不希望明文写死密码,可以提前将密码存入环境变量,从R中读取:
library(keyring) # 从环境变量R_KEYRING_PASS读取密码 keyring_create("system", password = Sys.getenv("R_KEYRING_PASS"))
方案2:Bash 命令行非交互式调用
你之前的管道写法不生效,是因为Ubuntu系统下keyring默认使用libsecret后端,会弹出GUI密码输入框,不会读取stdin的输入内容。你可以指定使用文件后端,手动读取stdin传入的密码:
echo "mypasswd" | Rscript -e 'library(keyring); keyring_create("system", password = readLines("stdin", n=1))'
如果需要固定使用文件后端,可以提前设置环境变量:
export R_KEYRING_BACKEND=file echo "mypasswd" | Rscript -e 'library(keyring); keyring_create("system")'
注意说明
- 文件后端的密钥环默认存储在
~/.config/r-keyring/路径下,默认权限仅当前用户可读写,安全性和系统原生密钥环一致 - 生产环境禁止硬编码明文密码,优先通过环境变量、加密配置管理工具传递密码值
内容的提问来源于stack exchange,提问作者tanovsky
相关产品推荐
相关产品推荐

