Попытка обновить 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
  • Как иметь отдельную историю команд для разных сеансов для одного и того же пользователя?
  • как перемещаться по слову в командной строке в tcsh?
  • tcsh, чтобы переместить курсор обратно в предыдущее пространство
  • Как можно обеспечить цвет для завершения табуляции в tcsh?
  • Как я могу сделать tcsh эхом время выполнения команды до ее выполнения?
  • Ошибка добавления даты в историю tcsh
  • псевдоним tcsh со сложными аргументами cmds, quotes и cmd
  • Как получить список ярлыков tcsh?
  • Когда автозаполнение в tcsh, могу ли я ссылаться на предыдущий аргумент?
  • Переименование файлов дает странный результат в tcsh
  • Interesting Posts

    о нет! Что-то пошло не так. Возникла проблема, и система не может восстановиться. Обратитесь к системному администратору

    Как удалить фрагмент диска с помощью Ubuntu?

    Bash – оболочка vs переменная среды

    Umount сетевые диски с системойd перед выключением

    Как иметь дело с утилитами с таким же именем, но вести себя по-разному между вариантами Unix?

    Сделать rsync перемещать (не копировать) файлы в локальной файловой системе

    Возможно ли «защитить» символ IFS от разделения поля?

    Как установить домашнюю страницу firefox из терминала?

    понимать обозначение символических ссылок

    Особое значение '{}' ';' с поиском

    xinitrc: запуск xterm с помощью tmux заставляет все окна использовать одну и ту же геометрию

    Проблема с grep на нескольких файлах и отсутствие получения желаемого результата

    Получает ли этот диспетчер процесс зомби?

    Установите скорость прокрутки и введите команду на клавиатуре дисплея на Mint 16

    Почему блок-разделитель (ASCII 31) невидим в выводах терминала?

    Linux и Unix - лучшая ОС в мире.