2010-07-02 2 views
1

Я хочу выполнить файл .sql в каталоге/x/y/z на сервере UNIX, используя ANT-скрипт из локальной системы Windows XP. Файлы .sql находятся на сервере UNIX.Как выполнить файл SQL на удаленном сервере с помощью ANT

Я использовал ниже муравей цели из моей системы Windows XP:

<target name="execute" > 
    <sshexec host="hostname" 
    username="UNIX system username" 
    keyfile="/export/home/appldev/.ssh/id_dsa" 
    commandResource="psql -f /u01/appldev/devappl/po/11.5.0/reports/xxbt/1.0.0/sql"/> 
    </target> 

Я попытался ниже ошибку после ключевого файла:

<target name="execute" > 
    <sshexec host="server_ip" 
    username="server_uname" 
    password="server_pass" 
    command="touch abc"/> 
    </target> 

Получил ошибку:

Buildfile: C:\Program Files\Java\apache-ant-1.8.1\build.xml 

execute: 
    [sshexec] Connecting to server_IP:22 

BUILD FAILED 
C:\Program Files\Java\apache-ant-1.8.1\build.xml:49: com.jcraft.jsch.JSchExcepti 
on: connection is closed by foreign host 

Пожалуйста, помогите.

+0

Ключевой файл находится на стороне клиента (Windows XP). Он использует этот закрытый ключ для аутентификации клиента вместо пароля. Google «Аутентификация открытого ключа SSH», чтобы узнать больше. – leedm777

+0

У вас работает sshd на сервере UNIX? Есть ли настройка брандмауэра, блокирующая SSH? – leedm777

ответ

0

Используйте Ant sql task.

<sql 
    driver="org.database.jdbcDriver" 
    url="jdbc:database-url" 
    userid="sa" 
    password="pass" > 
    <transaction src="data1.sql"/> 
    <transaction src="data2.sql"/> 
    <transaction src="data3.sql"/> 
    <transaction> 
    truncate table some_other_table; 
    </transaction> 
</sql> 

Edit:

Чтобы сделать файл доступным из вашего ящика Windows XP, у вас есть много вариантов. Выбор, который вы выбираете, зависит от настроек безопасности и того, как вы относитесь к запросу Ant о паролях или хранении паролей в файле в файловой системе.

  1. Вы можете открыть каталог UNIX с помощью Samba. Затем вы можете установить это как диск в Windows.
  2. Экспозиция файла с использованием FTP-сервера на стороне UNIX. Затем скопируйте файл с помощью FTP task.
  3. Используйте scp task, чтобы скопировать файл с помощью SSH.

Другой альтернативой является использование sshexec task для вызова клиента базы данных на сервере UNIX.

<sshexec host="unix-host" 
    username="dbuser" 
    keyfile="${user.home}/.ssh/id_dsa" 
    commandResource="psql -f /x/y/z"/> 
+0

Извините, я не читал достаточно внимательно. Будет редактировать, чтобы быть более применимым. – leedm777

+0

Спасибо Дэйв. На самом деле файлы .sql находятся на сервере UNIX, и я хочу выполнить эти файлы из своей системы Windows XP с помощью команды ANT. – Shaun

+0

@Shaun - Я надеюсь, что обновленный ответ более полезен :-) – leedm777

Смежные вопросы