Привет всем.
Есть простая задача выполнение команд через ssh на линухе.
Сам когда-то нашел sshexec и scp tasks, до определенного времени они меня устраивали, но потом выяснилось что scp бажная, не умеет нормально работать с большой иерархией файлов и папок.
А в sshexec, что-то не нашел как один раз открыть сессию и скормить ему по-больше команд. Сейчас мой build.xml превращается в такую портянку:
<sshexec
host="${app_server_host}"
username="${app_server_user}"
password="${app_server_pswd}"
command="mv -v ${dam.search.location}/SearchAttribute.class ${search.location}/SearchAttribute.class.replaced"
trust="yes"
failonerror="false"
/>
<sshexec
host="${app_server_host}"
username="${app_server_user}"
password="${app_server_pswd}"
command="mv -v ${dam.search.location}/SearchAttributeGroup.class ${search.location}/SearchAttributeGroup.class.replaced"
trust="yes"
failonerror="false"
/>
<sshexec
host="${app_server_host}"
username="${app_server_user}"
password="${app_server_pswd}"
command="mv -v ${dam.search.location}/SearchAttributeGroupTag.class ${search.location}/SearchAttributeGroupTag.class.replaced"
trust="yes"
failonerror="false"
/>
Есть какая-нибудь возможность эту запись сократить не объединяя линуховые команды?
Здравствуйте, Kelan, Вы писали:
K>...
K>Есть какая-нибудь возможность эту запись сократить не объединяя линуховые команды?
Задай свои значения атрибутов host, username, password, trust, failonerror в качестве дефолтных через presetdef, используй потом этот шаблон, т.е. надо будет просто указывать команду для удаленного выполнения;
Если для всех файлов, которые должны быть перемещены, используется одна и та же source dir, target dir, name pattern, напиши свой макрос (macrodef), который будет принимать на вход коллекцию имен файлов, которые надо переместить;
Здравствуйте, denis.zhdanov, Вы писали:
DZ>Здравствуйте, Kelan, Вы писали:
K>>...
K>>Есть какая-нибудь возможность эту запись сократить не объединяя линуховые команды?
DZ>
DZ> Задай свои значения атрибутов host, username, password, trust, failonerror в качестве дефолтных через presetdef, используй потом этот шаблон, т.е. надо будет просто указывать команду для удаленного выполнения;
DZ>
Спасибо, действительно нужная вещь, что-то ни разу ее не заметил
Только у меня в разных случая требуется делать failonerror = true
Так что буду юзать два пресета
Здравствуйте, Kelan, Вы писали:
K>Спасибо, действительно нужная вещь, что-то ни разу ее не заметил
K>Только у меня в разных случая требуется делать failonerror = true
K>Так что буду юзать два пресета
Зачем, не надо два. Пресет — просто дефолтные значения атрибутов. В каждом определенном таске их всегда можно переопределить.