Попытка обновить Amazon Route53 с помощью скрипта, но домен не обновляется

У меня есть несколько экземпляров Amazon EC2, работающих под управлением Ubuntu 10.04, с которыми я бы хотел использовать Amazon's Route53. Я настраиваю скрипт, как описано в статье Шломо Свидлера, но я все еще ничего не вижу.

Когда скрипт работает, он не возвращает какой-либо вывод, который я изначально предполагал, что он работает правильно. Однако, когда я проверяю записи DNS с помощью MyR53DNS , для моих экземпляров нет записей. Вот мой сценарий:

#!/bin/tcsh -f set root=`dirname $0` setenv EC2_HOME /usr/lib/ec2-api-tools setenv EC2_CERT /etc/cron.route53/ec2_x509_cert.pem setenv EC2_PRIVATE_KEY /etc/cron.route53/ec2_x509_private.pem setenv AWS_ACCESS_KEY_ID myaccesskeyid setenv AWS_SECRET_ACCESS_KEY myaccesskey /usr/bin/ec2-describe-instances | \ perl -ne '/^INSTANCE\s+(i-\S+).*?(\S+\.amazonaws\.com)/ \ and do { $dns = $2; print "$1 $dns\n" }; /^TAG.+\sShortName\s+(\S+)/ \ and print "$1 $dns\n"' | \ perl -ane 'print "$F[0] CNAME $F[1] --replace\n"' | \ xargs -n 4 /etc/cron.route53/cli53/cli53.py \ rrcreate -x 60 mydomain.com 

Кто-нибудь видит проблему с этим скриптом? Если это не сценарий, что еще может помешать обновлению моего домена Route53?

Я использую группы безопасности для IP-ограничения экземпляров. Я попытался открыть порт 53, но это не показало эффекта. Есть ли другой порт, который использует Route53?

Я был бы признателен за любую помощь или рекомендации, которые может предложить сообщество Unix и Linux. Дайте мне знать, если вам нужна дополнительная информация.


Ниже приведены результаты работы: tcsh -f -x /etc/cron.route53/aws-route53.sh

 set root=`dirname $0` dirname /etc/cron.route53/aws-route53.sh setenv EC2_HOME /usr/lib/ec2-api-tools setenv EC2_CERT /etc/cron.route53/ec2_x509_cert.pem setenv EC2_PRIVATE_KEY /etc/cron.route53/ec2_x509_private.pem setenv AWS_ACCESS_KEY_ID myaccesskeyid setenv AWS_SECRET_ACCESS_KEY myaccesskey 

Я получаю тот же результат, если прокомментировать или раскомментировать последние 7 строк.


 > cat -A /etc/cron.route53/aws-route53.sh #!/bin/tcsh -f$ $ set root=`dirname $0`$ setenv EC2_HOME /usr/lib/ec2-api-tools$ setenv EC2_CERT /etc/cron.route53/ec2_x509_cert.pem$ setenv EC2_PRIVATE_KEY /etc/cron.route53/ec2_x509_private.pem$ setenv AWS_ACCESS_KEY_ID myaccesskeyid$ setenv AWS_SECRET_ACCESS_KEY myaccesskey$ $ /usr/bin/ec2-describe-instances | \$ perl -ne '/^INSTANCE\s+(i-\S+).*?(\S+\.amazonaws\.com)/ \$ and do { $dns = $2; print "$1 $dns\n" }; /^TAG.+\sShortName\s+(\S+)/ \$ and print "$1 $dns\n"' | \$ perl -ane 'print "$F[0] CNAME $F[1] --replace\n"' | \$ xargs -n 4 /etc/cron.route53/cli53/cli53.py \$ rrcreate -x 60 mydomain.com > cat /etc/cron.route53/aws-route53.sh #!/bin/tcsh -f set root=`dirname $0` setenv EC2_HOME /usr/lib/ec2-api-tools setenv EC2_CERT /etc/cron.route53/ec2_x509_cert.pem setenv EC2_PRIVATE_KEY /etc/cron.route53/ec2_x509_private.pem setenv AWS_ACCESS_KEY_ID myaccesskeyid setenv AWS_SECRET_ACCESS_KEY myaccesskey /usr/bin/ec2-describe-instances | \ perl -ne '/^INSTANCE\s+(i-\S+).*?(\S+\.amazonaws\.com)/ \ and do { $dns = $2; print "$1 $dns\n" }; /^TAG.+\sShortName\s+(\S+)/ \ and print "$1 $dns\n"' | \ perl -ane 'print "$F[0] CNAME $F[1] --replace\n"' | \ xargs -n 4 /etc/cron.route53/cli53/cli53.py \ rrcreate -x 60 mydomain.com 

One Solution collect form web for “Попытка обновить Amazon Route53 с помощью скрипта, но домен не обновляется”

Ага! В конце вашего сценария отсутствует новая строка. Текстовые файлы Unix (например, скрипты) представляют собой последовательности строк, и каждая строка (даже последняя) должна быть завершена новой строкой.

Большинство современных инструментов unix могут справиться с искаженными текстовыми файлами, но tcsh не считается современным: похоже, что он игнорирует последнюю, неразрешенную логическую строку (все после последней новой строки, которой не предшествует обратная косая черта).

Хороший редактор (например, Emacs или Vi (m)) автоматически гарантирует, что скрипты csh завершаются новой строкой. 1 Похоже, ваш редактор не делает правильные вещи, поэтому убедитесь, что ваши сценарии заканчиваются новой линией ( cat /path/to/script должен показывать последнюю строку сценария над следующей подсказкой, а не рядом с ней).

¹ В действительно хорошем редакторе, таком как Emacs, это не относится к другим типам файлов, которые могут быть законно не завершены с использованием новой строки.

  • Имеет ли tcsh эквивалент «$ {a: -b}» для назначения переменной по умолчанию, например Bash?
  • Как сделать мой Linux tcsh ярким?
  • Как установить переменную как идентификатор пользователя
  • Настройка команды promt в tcsh для отображения только 3-х рабочих каталогов вместо полного пути?
  • Как выполнить команду на каждом входе, учитывая список входных данных
  • Переименование файлов дает странный результат в tcsh
  • setenv из awk в tcsh
  • Как создать правило для замены пользовательского флага с помощью оболочки C?
  • TCSH побитовый | оператор
  • Как получить часть имени пути и присвоить его переменной?
  • ls после cd в tcsh?
  • Linux и Unix - лучшая ОС в мире.