2017-11-01 15 views
0

皆さん私は今でもまだbashを学んでいますが、DockerとCNTLMのインストールに使用されているスクリプトはです。bashを使用して.confファイル内の単一のプレースホルダを置き換えてください。

私はインストールが正常ですが、以下のcntlm.confファイルで2つの可変プレースホルダを変更するのに苦労しています。私は再利用して

  • PassLM
  • PassNT
  • PassNTLMv2

を変更することができました

# 
# 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 

cnlm.conf

'sed'で行を置きますが、私は$ MyUserNameと$ MyPassWordをbashscriptで使われている変数から変更できません。

どうすればいいですか?

答えて

2

様々な選択肢があります。

あなたはこのようにそれを行うことができ、「テンプレート」にsedを使用して、新しいファイルを作成し、それらを交換するには:あなたはに置き換えられます場合は、今すぐ

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

は、同じファイルと、あなたが行うことができ、パスワードの最後の値を知らない:

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

新しいパスワードがシェル変数である場合は、あなたが最後に実行することができます

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 
+0

素晴らしい、ありがとう、私の問題を解決し、このようなコマンド! – Xander