Вывод двойных кавычек и переменной

Вывод двойных кавычек и переменной

Я пишу скрипт для автоматизации Let's Encrypt в PowerDNS (это простой скрипт оболочки bash для запуска на Debian).

Certbot запускается и вызывает скрипт, передавая ему переменную: $CERTBOT_VALIDATION

Я уже прочитал веткуздесьчто показывает необходимость '"content"'– обратите внимание на одинарные  'и двойные кавычки  ". (Я пробовал это в другой итерации кода, но безрезультатно) Я изо всех сил пытаюсь вывести расширенную переменную внутри кавычек, вот один из способов, который я попробовал:

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

Однако, чтобы вывести это из bash, мне нужно добавить a \перед ".

Я хочу, чтобы команда вывода была следующей:

 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.

так что, похоже, это решило проблему.

Связанный контент