今天,我将和大家谈谈如何使用Ant进行ssh和scp操作。很多人可能不太了解。为了让大家更好的了解,边肖为大家总结了以下内容。希望你能从这篇文章中有所收获。
使用Ant进行ssh和scp操作
一、导言:
现在,当我们安装Linux时,出于安全原因(默认情况下),我们通常不会打开telnet服务,而ssh服务是可用的。ant支持telnet已经很久了,但是我们需要在Linux下安装telnet-server并启用这项服务。
幸运的是,从Ant1.60开始,SSH和SCP操作都得到了支持。在Ant之前,如果要支持SSH、SCP、SFTP等任务,必须下载J2SH的j2ssh-ant.jar和J2SH-core . jar(在http://www.sourceforge.net的J2SH下下载)。现在您可以使用Ant提供的Sshexec和scp任务,由$ANT_HOME/lib/ant-jsch.jar支持,但是您还需要在http://www.jcraft.com/jsch/index.html,下载一个依赖包jsch-0.1.24.jar(文件名因版本而异),jsch也是http://www.sourceforge.net旗下的一个项目。
您需要将下载的jsch-0.1.24复制到$ANT_HOME/lib。如果是Eclipse下的Ant环境,必须将jsch-0.1.24添加到window-preferences-Ant-runtime-class path中。
JSch是SSH2的纯Java实现。
JSch允许您连接到sshd服务器,并使用端口映射和X11映射。Scp文件传输等。可以将JSch提供的功能集成到自己的Java项目中,JSch的授权方式是BSD。
第二,简单的例子:
下面是使用JSch完成Sshexec和scp任务的最简单的例子。如果您需要更多详细信息,请参考蚂蚁用户手册。
[Sshexec任务]
目标名称=' sshexec '
sshexec主机='10.14.50.63 '用户名='abs '密码='abs '
trust=' true ' command=' CD/;ls “/
/target
请注意,上面的信任属性通常设置为true。如果默认值为false,则要求您连接的主机必须存在于knownhosts文件中,并且该文件也必须存在。否则会出现com . jcraft . jsch . jschexception 3360拒绝主机密钥3360 192.168.122.180的异常。在Linux下执行命令时,可以使用分号分离多个命令,它们将依次执行,而不是为多个连接编写多个sshexec,每个连接只执行一个命令。
[scp任务]带根目录的远程计算
1.将单个文件复制到远程服务器。
scp文件=" c :/cmd . txt " todir=" root :123456 @ 192 . 168 . 122 . 180:/tmp " trust=" true "/
或者
scp file=" c :/cmd . txt " todir=" root @ 192 . 168 . 122 . 180:/tmp " password=" 123456 " trust=" true "/
2.本地复制远程文件
scp文件=" root :123456 @ 192 . 168 . 122 . 180:/tmp/cmd . txt " todir=" d :/my-app " trust=" true "/
3.将远程目录复制到本地区域,这将被递归操作。
scp文件=" root :123456 @ 192 . 168 . 122 . 180:/tmp/* " todir=" d :/my-app " trust=" true "/
4.递归地将本地目录的内容复制到远程端,但不要在服务器上设置my-app目录。SCPTIDIR=" root :123456 @ 192 . 168 . 122 . 1803360/tmp/" Trust=" true "
文件集dir="d:/my-app"/
/scp
5.将一系列文件复制到远端,会建立相应的分层目录,而不是my-app目录。
scp todir=" root :123456 @ 192 . 168 . 122 . 180:/tmp " trust=" true "
不间断空格
;<fileset dir=“d:/my-app”>
<include name=“**/*.java” />
</fileset>
</scp>
或
<scp todir=“root:123456@192.168.122.180:/tmp” trust=“true”>
<fileset dir=“d:/my-app” excludes=“**/*.java”/>
</scp>
三、其他例子:
例子1:
<project name="buildssh" default="DEFAULT" basedir=".">
<target name="init">
<!-- set properties, mkdir, etc. -->
<property file="build.properties" />
<property name="this.project" value="buildssh" />
<echo message="init in ${this.project}" />
<tstamp />
</target>
<target name="DEFAULT" depends="init">
<echo message="connecting to ${build.server}" />
<sshexec host="Linux server IP address"
username="Linux server username"
password="Linux server password" trust="true"
command="Command you want to run on the server" />
</target>
</project>
例子2:
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.UserInfo;
public class ExecSCP {
public static final UserInfo defaultUserInfo = new UserInfo() {
public String getPassphrase() {
return null;
}
public String getPassword() {
return null;
}
public boolean promptPassword(String arg0) {
return false;
}
public boolean promptPassphrase(String arg0) {
return false;
}
public boolean promptYesNo(String arg0) {
return true;
}
public void showMessage(String arg0) {
}
};
public static void main(String[] args) throws Exception {
String hostname = "10.14.50.63";
String username = "abs";
String password = "abs";
String remoteFile = "asbpack.sh";
String localFile = "C:\\";
JSch jsch = new JSch();
/**
* 22为端口
*/
Session session = jsch.getSession(username, hostname, 22);
session.setPassword(password);
session.setUserInfo(defaultUserInfo);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp c = (ChannelSftp) channel;
c.get(remoteFile, localFile);
session.disconnect();
}
}
看完上述内容,你们对如何使用Ant进行ssh和scp操作有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/81172.html