Ошибка "Неверное количество аргументов" при развертывании с использованием "убийства"
После того, как я ввел команду peer, она показывает следующую ошибку:
** [out :: 172.23.99.7] Incorrect number of arguments
** [out :: 172.23.99.7]
** [out :: 172.23.99.7] Usage:
** [out :: 172.23.99.7] python murder_client.py peer/seed out.torrent OUT.OUT 127.0.0.1
** [out :: 172.23.99.7]
** [out :: 172.23.99.7] The last parameter is the local ip address, normally 10.x.x.x
** [out :: 172.23.99.7]
** [out :: 172.23.99.5] Incorrect number of arguments
** [out :: 172.23.99.5]
** [out :: 172.23.99.5] Usage:
** [out :: 172.23.99.5] python murder_client.py peer/seed out.torrent OUT.OUT 127.0.0.1
** [out :: 172.23.99.5]
** [out :: 172.23.99.5] The last parameter is the local ip address, normally 10.x.x.x
** [out :: 172.23.99.5]
** [out :: 172.23.98.78] Incorrect number of arguments
** [out :: 172.23.98.78]
** [out :: 172.23.98.78] Usage:
** [out :: 172.23.98.78] python murder_client.py peer/seed out.torrent OUT.OUT 127.0.0.1
** [out :: 172.23.98.78]
** [out :: 172.23.98.78] The last parameter is the local ip address, normally 10.x.x.x
** [out :: 172.23.98.78]
command finished
failed: "sh -c 'python /u/apps/example-app/shared/murder/murder_client.py peer '\''/tmp/Test_2.tgz.torrent'\'' '\''/tmp/Test_2.tgz'\'' LC_ALL=C host 172.23.99.7 | awk '\\''/has address/ {print $4}'\\'' | head -n 1'" on 172.23.99.7; "sh -c 'python /u/apps/example-app/shared/murder/murder_client.py peer '\''/tmp/Test_2.tgz.torrent'\'' '\''/tmp/Test_2.tgz'\'' LC_ALL=C host 172.23.98.78 | awk '\\''/has address/ {print $4}'\\'' | head -n 1'" on 172.23.98.78; "sh -c 'python /u/apps/example-app/shared/murder/murder_client.py peer '\''/tmp/Test_2.tgz.torrent'\'' '\''/tmp/Test_2.tgz'\'' LC_ALL=C host 172.23.99.5 | awk '\\''/has address/ {print $4}'\\'' | head -n 1'" on 172.23.99.5
Как видите, он выдает ошибку "Неверное количество аргументов" на каждом партнере.
Все до этого (создание торрента и запуск процесса посева) работало нормально.
1 ответ
Я не думаю, что убийство совместимо с определениями хоста IP-адреса. Он ожидает доменное имя, которое может быть разрешено с помощью "host", отсюда и небольшая красота из вашего вывода журнала:
`LC_ALL=C host 172.23.99.5 | awk '\\''/has address/ {print $4}'\\'' | head -n 1'`
Вы заметите, что выполнение этого без обратных кавычек - даже на IP-адресе с соответствующей записью DNS - дает пустой вывод. Отсюда и ошибка "неверное количество аргументов".
Похоже, что на github есть запрос на выборку, чтобы использовать ifconfig для определения IP-адреса вместо хоста. Вы можете использовать патч этого парня, если хотите, но он не обрабатывает хосты с несколькими интерфейсами. Самым лучшим решением является просто добавить несколько причудливых записей DNS для ваших машин:)
Редактировать:
На самом деле, я думаю, что это должно помочь как хостам IP-адресов, так и определениям DNS-серверов.
Снова обращаясь к запросу на удаление, замените строку хоста на:
HOST = "LC_ALL=C host $CAPISTANO:HOST$ | awk '/has address/ { print $4 } // { print \"$CAPISTRANO:HOST$\" }' | head -n 1"
Если имя хоста не преобразуется в IP-адрес, оно просто распечатывает имя хост-сервера capistrano, которое в вашем случае будет IP-адресом.