[url]http://www.51testing.com/?uid-1800-action-viewspace-itemid-131605[/url]
1 编写脚本前说明
1.1 需求:远程部署
1.2 详细描述:
1、将编译完成的文件COPY到远程服务器上。
2、执行远程服务器上的批处理命令,进行清理TOMCAT,并进行发布。
1.3 操作系统:
Windows2008(ant编译机);windows2003(发布应用的服务器)
1.4 依赖:
jakarta-oro-2.0.8.jar,
下载地址:[url]http://archive.apache.org/dist/jakarta/oro/[/url]
commons-net-1.4.1.jar,
下载地址:[url]http://apache.mirror.phpchina.com/commons/net/binaries/[/url]
放在引用的LIB目录下,虽然ANT里特别提到不要放到ANT安装目录的LIB下,不过我还是放在下面了。
1.5 类定义:
1.6 其它说明:
1、 使用FTP时,必须使用被动模式。服务器上需要安装FTP服务。
2、 使用TELNET时,服务器端的TELNET服务需要打开。并且不使用验证方式NTLM。可以使用tlntadmn设置。
3、 使用SSH时,服务器上也需要安装SSH服务。
2 脚本例子
2.1 ANT FTP脚本
2.2 ANT TELNET脚本
出现的问题:
1、 使用ANT调用FTP时,客户端的防火墙需要进行设置,不限制FTP程序。
2、 TELNET对WINDOW的支持感觉很差,尝试了多次,有时成功有时不成功。最终放弃。TELNET不支持进行本地某个目录。如<write>cd e:\test</write>这样是不可以的。另外由于不能进入本地的某个目录,所以也无法使用<read timeout="30">e:\test</read>来验证是否进入想要登录的目录,无法决定是否发送下次指令。而ANT中TELNET只有<read>指令读取成功,才会进行下一条。所以发送<write>指令无法控制。
3、 还有一个问题是,telnet到服务器后,用tlntadmn-s查看,都是一连接,就马上断开了,所以有时无法执行远程的批处理命令。不能稳定地运行。目前不知道解决方法
2.3 ANT SSH脚本
1 编写脚本前说明
1.1 需求:远程部署
1.2 详细描述:
1、将编译完成的文件COPY到远程服务器上。
2、执行远程服务器上的批处理命令,进行清理TOMCAT,并进行发布。
1.3 操作系统:
Windows2008(ant编译机);windows2003(发布应用的服务器)
1.4 依赖:
jakarta-oro-2.0.8.jar,
下载地址:[url]http://archive.apache.org/dist/jakarta/oro/[/url]
commons-net-1.4.1.jar,
下载地址:[url]http://apache.mirror.phpchina.com/commons/net/binaries/[/url]
放在引用的LIB目录下,虽然ANT里特别提到不要放到ANT安装目录的LIB下,不过我还是放在下面了。
1.5 类定义:
<taskdef name="telnet" classname="org.apache.tools.ant.taskdefs.optional.net.TelnetTask"/>
1.6 其它说明:
1、 使用FTP时,必须使用被动模式。服务器上需要安装FTP服务。
2、 使用TELNET时,服务器端的TELNET服务需要打开。并且不使用验证方式NTLM。可以使用tlntadmn设置。
3、 使用SSH时,服务器上也需要安装SSH服务。
2 脚本例子
2.1 ANT FTP脚本
<?xml version="1.0"?>
<project>
<target name="ftp" description="ftp" >
<ftp server="172.16.91.4"
userid="ftp"
password="ftp">
<fileset dir ="${RELEASE_12580_DIR}">
</fileset>
</ftp>
</target>
</project>
2.2 ANT TELNET脚本
<?xml version="1.0"?>
<project>
<target name="telnet" description=" telnet ">
<telnet userid="administrator" password="**********"
server="172.16.80.228" port="23" initialCR="yes" timeout="50">
<read timeout="30">*</read>
<write>start e: \test.bat</write>
</telnet>
</target>
</project>
出现的问题:
1、 使用ANT调用FTP时,客户端的防火墙需要进行设置,不限制FTP程序。
2、 TELNET对WINDOW的支持感觉很差,尝试了多次,有时成功有时不成功。最终放弃。TELNET不支持进行本地某个目录。如<write>cd e:\test</write>这样是不可以的。另外由于不能进入本地的某个目录,所以也无法使用<read timeout="30">e:\test</read>来验证是否进入想要登录的目录,无法决定是否发送下次指令。而ANT中TELNET只有<read>指令读取成功,才会进行下一条。所以发送<write>指令无法控制。
3、 还有一个问题是,telnet到服务器后,用tlntadmn-s查看,都是一连接,就马上断开了,所以有时无法执行远程的批处理命令。不能稳定地运行。目前不知道解决方法
2.3 ANT SSH脚本
<?xml version="1.0"?>
<project>
<target name="sshexec" description="sshexec”
<sshexec host="172.16.91.4"
username="administrator"
assword="***********"
port="22"
trust="true"
command="i:/ecom/deploy_test.bat"/>
</target>
</project>