큰따옴표 및 변수 출력

큰따옴표 및 변수 출력

저는 PowerDNS에서 Let's Encrypt를 자동화하는 스크립트를 작성 중입니다(이것은 데비안에서 실행할 간단한 bash 쉘 스크립트입니다).

Certbot은 스크립트를 실행하고 호출하여 변수 $CETBOT_VALIDATION을 제공합니다.

이미 스레드를 읽었습니다.여기이는 '"content"'작은 따옴표  '와 큰 따옴표에  주목하세요 ". (나는 코드의 다른 반복에서 이것을 시도했지만 아무 소용이 없었습니다.) 확장된 변수를 따옴표 안에 출력하는 데 어려움을 겪고 있습니다. 여기에 내가 시도한 한 가지 방법이 있습니다.

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

이제 스크립트 authenticater.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.

그래서 해결된 것 같습니다.

관련 정보