Символ @ в цикле for при использовании scp - PullRequest
4 голосов
/ 19 июля 2010

Пожалуйста, посмотрите на эту строку:

${server_username}:${server_password}@@{server}:/tmp

Двойной @@ вызывает проблемы.Вместо user: pass @ server он отображается как user: passserver и поэтому не может подключиться к удаленному ssh-серверу.

Как вы говорите муравью оставить @ be?

Этомой код:

<for list="${externalLibs}" param="library"> 
  <sequential>
    <for list="${servers}" param="server"> 
      <sequential>
        <echo> Copying @{library} to @{server} ${server_username}:${server_password}@@@{server}:/tmp/@{library}/${@{library}}/ 
        </echo>
        <scp todir="${server_username}:${server_password}@@@{server}:/tmp/@{library}/${@{library}}/">     
          <fileset dir="/tmp/@{library}/${@{library}}/" /> 
        </scp>
      </sequential> 
    </for>
  </sequential> 
</for>

В команде echo это выглядит так:

Копирование имени библиотеки в myserver.domain.com имя пользователя: пароль @ {сервер}: / tmp /LibraryName / LibraryBar

Ответы [ 2 ]

3 голосов
/ 19 июля 2010

Вы избегаете @, удваивая его, как в @@.

Таким образом, в вашем случае это будет:

${server_username}:${server_password}@@@{server}:/tmp

Кстати, то же правило действует для $escape, $$ просто печатает $.

В ответ на комментарий ОП

Пример:

<property name="server_username" value="user-name"/>
<property name="server_password" value="passwd"/>

<for list="s1.foo.bar,s2.foo.bar,s3.foo.bar" param="server">
  <sequential>
    <echo message="${server_username}:${server_password}@@@{server}:/tmp"/>
  </sequential>
</ac>

Это приводит к:

 [echo] user-name:passwd@s1.foo.bar:/tmp
 [echo] user-name:passwd@s2.foo.bar:/tmp
 [echo] user-name:passwd@s3.foo.bar:/tmp

Итак, ваша проблема в другом месте, вероятно, в коде настройки цикла

1 голос
/ 19 июля 2010

Похоже, что это опечатка в этой строке - второй последний @ следует изменить на $: ${server_username}:${server_password}@${server}:/tmp

...