二重引用符と変数を出力する

二重引用符と変数を出力する

私はPowerDNSでLet's Encryptを自動化するスクリプトを書いています(これはDebianで実行されるシンプルなbashシェルスクリプトです)

Certbot が実行され、スクリプトが呼び出され、変数 $CERTBOT_VALIDATION が渡されます。

すでにスレッドを読みましたここ'"content"'これは、一重引用符 'と二重引用符 が必要であることを示しています"。(コードの別の反復でこれを試しましたが、うまくいきませんでした) 引用符内の展開された変数を出力するのに苦労しています。試した方法の 1 つを次に示します。

pdnsutil add-record Example.com _acme-challenge txt 120 "\"%s\""  "$CERTBOT_VALIDATION"

ただし、これを bash から出力するには、\の前にを追加する必要があります"

出力コマンドは次のようになります。

 pdnsutil add-record Example.com _acme-challenge txt 120 "content"

これを行う最善の方法は何ですか?

現在出力されているものはすべてエラーになっています:

Error: Parsing record content (try 'pdnsutil check-zone'): Data field in DNS should start with quote (") at position 0 of ''yXtgt_2vlnrF7j2V-eTJZuSjXbswsGN97TQ0Zp3IynM''

答え1

将来この問題に遭遇する人のために、潜在的な回答として最新情報を提供します。

certbot コマンドを実行する場合:

certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /etc/letsencrypt/customScripts/authenticator.sh -d *.example.com --dry-run

スクリプト authenticator.sh は次のようになります。

#!/bin/bash
new='"'
new2=$new$CERTBOT_VALIDATION$new
pdnsutil add-record example.com _acme-challenge txt 120 $new2
echo $new2 > output.log
# Sleep to make sure the change has time to propagate over to DNS
sleep 25

これは、変数を文字列として連結して二重引用符を追加すると機能します。output.logには、変数が

cat output.log 
"RipQQbHO5pG95nzJjouCgTXJMrGTbLKQ5XsV5Zgn7uI"

certbot は次のように報告しています:

certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /etc/letsencrypt/customScripts/authenticator.sh -d *.example.com --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for example.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
Output from authenticator.sh:
RipQQbHO5pG95nzJjouCgTXJMrGTbLKQ5XsV5Zgn7uI
New rrset:
_acme-challenge.example.com. IN TXT 120 "RipQQbHO5pG95nzJjouCgTXJMrGTbLKQ5XsV5Zgn7uI"

Error output from authenticator.sh:
Apr 05 10:51:41 Reading random entropy from '/dev/urandom'
Apr 05 10:51:41 gmysql Connection successful. Connected to database 'pdns' on '127.0.0.1'.
Apr 05 10:51:41 gmysql Connection successful. Connected to database 'pdns' on '127.0.0.1'.

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - The dry run was successful.

これで解決したようです。

関連情報