gpt4 book ai didi

linux - 使用 bash 替换 .conf 文件中的单个占位符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:32 25 4
gpt4 key购买 nike

大家好,我现在还在学习 bash,但我正在写作用于安装 Docker 和 CNTLM 的工作脚本,因为我们在一些代理后面运行。

我的安装工作正常,但我很难更改下面 cntlm.conf 文件中的 2 个变量占位符。

cnlm.conf

#
# Cntlm Authentication Proxy Configuration
#
# NOTE: all values are parsed literally, do NOT escape spaces,
# do not quote. Use 0600 perms if you use plaintext password.
#

Username $MyUserName
Domain NTADMIN
Password $MyPassWord
# NOTE: Use plaintext password only at your own risk
# Use hashes instead. You can use a "cntlm -M" and "cntlm -H"
# command sequence to get the right config for your environment.
# See cntlm man page
# Example secure config shown below.
PassLM 93409221097752460192457192457999
PassNT 08992693829837928372938729387229
### Only for user 'testuser', domain 'corp-uk'
PassNTLMv2 02793865976487363876348763873467

# Specify the netbios hostname cntlm will send to the parent
# proxies. Normally the value is auto-guessed.
#
# Workstation netbios_hostname

我已经能够改变

  • 通行证
  • 通行证
  • 通过NTLMv2

通过使用带有“sed”的替换行,但我无法从 bashscript 中使用的变量中更改 $MyUserName 和 $MyPassWord。

关于如何做到这一点有什么想法吗?

最佳答案

有多种选择:

要在"template"上使用 sed 替换它们并创建一个新文件,您可以这样做:

sed 's/\$MyPassword/MySuperPassword/' cnlm.conf > cnlm.new.conf

现在,如果您要替换到同一个文件中并且您不知道密码的最后一个值,您可以这样做:

sed -ri 's/^(Password *).*$/\1MySuperPassword/' cnlm.conf

如果您的新密码在 shell 变量中,那么您可以像这样执行最后一个命令:

newPasswd="abcde" 
sed -ri "s/^(Password *).*$/\1${newPasswd}/" cnlm.conf

最后,如果您想在同一命令中更改用户名和密码:

newUser="user123" 
newPasswd="abcde"
sed -ri "s/^(Username *).*$/\1${newUser}/; s/^(Password *).*$/\1${newPasswd}/" cnlm.conf

关于linux - 使用 bash 替换 .conf 文件中的单个占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47046876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com