Ошибка "Неверное количество аргументов" при развертывании с использованием "убийства"

После того, как я ввел команду 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-адресом.

Другие вопросы по тегам