You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写Bash脚本:从命令行获取用户名密码并加密更新配置文件

Bash脚本实现配置文件用户名与加密密码更新

完整脚本代码

#!/bin/bash

# 提示输入用户名
read -p "请输入用户名: " new_username

# 提示输入密码(隐藏输入内容)
read -s -p "请输入密码: " new_password
echo  # 换行优化输出格式

# 使用openssl对密码加密,这里用MD5算法,可按需更换为SHA-256/SHA-512
encrypted_pass=$(openssl passwd -1 "$new_password")

# 检查目标配置文件是否存在
if [ ! -f "admin.conf" ]; then
    echo "错误:admin.conf文件不存在!"
    exit 1
fi

# 替换配置文件中的username字段
sed -i "s/^username = .*/username = $new_username/" admin.conf

# 替换配置文件中的pass字段为加密后的密码
sed -i "s/^pass = .*/pass = $encrypted_pass/" admin.conf

echo "用户名和加密密码已成功更新至admin.conf!"

代码逐行说明

  • #!/bin/bash:指定脚本的执行解释器为Bash,必须放在脚本最开头。
  • read -p "请输入用户名: " new_username:显示提示文本,读取用户输入的用户名并存储到new_username变量中。
  • read -s -p "请输入密码: " new_password:-s参数会隐藏用户输入的密码(避免明文显示),输入完成后用echo换行,让后续输出更整洁。
  • encrypted_pass=$(openssl passwd -1 "$new_password"):调用openssl工具加密密码,-1代表使用MD5加密算法;若需要更高安全性,可替换为-5(SHA-256)或-6(SHA-512)。加密后的密码存入encrypted_pass变量。
  • 文件存在检查:通过[ ! -f "admin.conf" ]判断配置文件是否存在,若不存在则打印错误信息并退出脚本,避免无效操作。
  • sed -i "s/^username = .*/username = $new_username/" admin.conf:使用sed命令直接修改原文件,正则表达式^username = .*精准匹配以username = 开头的行,将其替换为包含新用户名的内容。-i参数表示直接修改原文件。
  • 第二条sed命令逻辑相同,用于替换pass字段为加密后的密码。

使用注意事项

  • 确保系统已安装openssl:绝大多数Linux发行版默认自带,若未安装,可通过包管理器安装(如Debian/Ubuntu:sudo apt install openssl;CentOS/RHEL:sudo yum install openssl)。
  • 权限问题:运行脚本时需要具备admin.conf文件的读写权限,若文件归root所有,需用sudo执行脚本。
  • 加密算法选择:MD5安全性较低,生产环境建议使用SHA-512(将-1改为-6)。

内容的提问来源于stack exchange,提问作者Rishabh Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:28:37