2013-03-07 85 views
1

我確定之前已經詢問過這個問題,如果有問題,但我無法找到它,我很抱歉。

我試圖用dovecot SHA512-CRYPT密碼替換下面的'mypassword',但美元符號搞砸了,我無法弄清楚如何逃避它。

doveadm pw -s SHA512-CRYPT -p ${rootemailpw}生成的密碼看起來像下面,你可以看到在這幾個美元符號:

{SHA512-CRYPT}$6$sujue1sr0abLZisA$Dq1qtz422woyR/A4wDaJ9JYByKHis27FO.mO5EfUCDuI/PRSawxgCRGA3Oq/LE4Nbr32nCr4731BCPIotmRNR0 

這裏是我使用的腳本:

rootemailpw=$(</dev/urandom tr -dc A-Za-z0-9 | head -c12) 
rootpw=$(doveadm pw -s SHA512-CRYPT -p ${rootemailpw}) 

cat <<'EOF' > tmp 
USE `postfix`; 
INSERT INTO `users` (`username`,`password`) VALUES ('[email protected]','mypassword'); 
EOF 

sed -i "s/mypassword/${rootpw}/" tmp 

所以如何正確脫出$符號s/mypassword/${rootpw}/

+0

是否'rootpw'變量包含換行? – Thor 2013-03-07 21:22:44

+0

沒有。如果您安裝了鴿舍,請運行'doveadm pw -s SHA512-CRYPT -p somepassword'以查看輸出 – Christian 2013-03-07 21:27:05

回答

3

SHA散列可能包含斜槓字符(/),這是通常的sed分隔符。 sed支持大多數分隔符,因此一個方法是使用不同的分隔符,例如,一個管道字符(|):

pw=$(doveadm pw -s SHA512-CRYPT -p somepassword) 
echo password | sed "s|password|$pw|" 

輸出:

{SHA512-CRYPT}$6$qtXJPWaMbX3l8zMW$mXWuax8NG9Wa1AkFdcClA5vw2T3407uBdImKNNbcBd/CUkS5NafjZnQ5ow.IubyLujU5ohS8PWogdNoPiF4d// 
+0

中設置* $ *時,雙引號是有問題的您好@Thor,請您告訴我您的代碼 – Christian 2013-03-07 21:47:29

+0

,如果您使用單引號括住pw,但如果從'rootpw = $(doveadm生成pw pw -s SHA512-CRYPT -p $ {rootemailpw})' – Christian 2013-03-07 22:00:15

+0

@Christian:SHA哈希包含跳出sed的斜槓,請參閱更新。 – Thor 2013-03-07 22:14:51

0

在./tmp中有以下內容:

USE `postfix`; 
INSERT INTO `users` (`username`,`password`) VALUES ('[email protected]','mypassword'); 

執行rootpw='1234$asdf' ; cat tmp | sed "s/mypassword/${rootpw}/"將取代輸入mypassword$ {的rootpw}像這樣的內容:

USE `postfix`; 
INSERT INTO `users` (`username`,`password`) VALUES ('[email protected]','1234$asdf'); 

爲:

  1. rootpw='1234$asdf'設置環境變量
  2. cat tmp | sed "s/mypassword/${rootpw}/"取代mypassword加上「1234 $ asdf」

在變量上使用單引號。

這是否回答你的問題?

+0

現在設置'rootpw = 123 $$ 131'並查看會發生什麼...... – Christian 2013-03-07 21:28:24

+0

您也不需要使用導出。另外'sed -i'是內聯編輯的,所以你也不需要'cat tmp |'。而這個''s/mypassword/\ $ \ {rootpw \} /「'很瘋狂,爲什麼不用's/mypassword/$ {rootpw} /''..不管怎樣,這不是答案,而是謝謝您。 – Christian 2013-03-07 21:35:17

+0

當您在變量 – MeBa 2013-03-07 22:23:34