Я впервые за 2 дня использую муравья и борюсь с проблемой ниже.
У меня есть 3 удаленных машины (может быть больше). Допустим, они A, B, C.
Каждый B & C имеет созданный вручную файл свойств с именем Machine.properties , который содержит сведения о соответствующем т / с, такие как его IP, имя хоста и т. Д.
Пример файла:
machine.hostname = VM1
machine.IP = xx.xx.xx.xx
...
Я пытаюсь получить доступ к отдельным компьютерам (B, а затем C) из A и скопировать этот файл m / c Machine.properties в A, а затем получить содержащиеся в нем значения, например machine.hostname & machine.IP и использовать их для дальнейшей обработки.
Первая итерация кода работает правильно. Я могу скопировать B Machine.properties в A и используйте значения из файла. Однако во время второй итерации, хотя C's Machine.properties копируется в A, когда я пытаюсь использовать значения из этого файла, показанные значения являются значениями для машины B (вместос). Читая о свойствах муравья, я понял, что они неизменны, и мы не можем изменить их значение после установки, поэтому я пытаюсь найти обходной путь.
Я прочитал похожие проблемы, опубликованные в SO, и попробовал следующее пока, ноНи один из них не работал.
Попытка 1 Я удалял файл Machine.properties после каждой итерации, думая, что после того, как следующая итерация скопирует новый файл Machine.properties, свойства могут быть «обновлены». Это не сработало.
Попытка 2 Я попытался использовать задачу propertyfile.
После копирования файла Machine.properties я создаю файл файла свойств
<scp remoteFile="${adminname}:${adminpassword}@${IP}:~/myprofile/Machine.properties" localTodir="${destination.dir}" trust="true"/>
<propertyfile file="${destination.dir}/Machine.properties" />
Но тогда я не могу получить доступ к $ {machine.hostname}, пока не загружу содержимое файла, используя
<property file="${destination.dir}/Machine.properties" />
, что снова делает свойство $ {machine.hostname} неизменным.
Попытка 3 Я изменил весь свой подход и решил попытаться получить значение, используя задачу propertyregex (вместо scp и т. Д. Для копирования файла и все) и локальную задачу. Это не сработало, потому что я думаю, propertyregex property = .... снова делает значение host неизменным. Кроме того, из того, что я прочитал, если я изменяю значение свойстваиспользуя local, а затем попытайтесь отправить измененное значение из этого конкретного блока кода, оно не будет работать, и это не будет служить моим целям.
....
<property name="host" value="global"/>
<var name="count" value="0"/>
<target name="GetVMProperties">
<for list="${ipaddress}" param = "IP">
<sequential>
<var name="IP" value="@{IP}"/>
<echo message = "IP of VM = ${IP}"/>
<exec executable="cmd">
<arg value="/c"/>
<arg value="ping"/>
<arg value="-a"/>
<arg value="${IP}"/>
<arg value=">"/>
<arg value="C:/AntPractice/Regex/cmdOP/output${count}.txt"/>
</exec>
<loadfile property="message" srcFile="C:/AntPractice/Regex/cmdOP/output${count}.txt"/>
<local name="host"/>
<propertyregex property="host"
override="true"
input="${message}"
regexp="VM[0-9]*"
select="\0"
casesensitive="false" />
<math result="count" operand1="${count}" operation="+" operand2="1" datatype="int" />
<var name="VM_HNAME" value="${host}"/>
<echo message="Host name is:${VM_HNAME}"/>
</sequential>
</for>
</target>
Оцените любые идеи / советы/ code snippets для решения вышеуказанной проблемы.
Я должен придерживаться ant для этого, поскольку у нас есть существующий каркас (который использует ant и работает для настройки 1 Remote machine), но яя пытаюсь улучшить его, чтобы он работал на нескольких машинах (B, C и т. д.).