<scp>
와 <sshexec>
Task
<scp>
와 <sshexec>
Task 를 이용하면 자동화의 수준을 높일 수 있다.
1. JSch 라이브러리 추가
JSch 홈페이지에서 jsch-0.1.55.jar 파일을 다운로드 한 후에, ANT_HOME 아래의 lib 디렉토리에 복사한다.
Apache Ant의 추가적인 라이브러리에 대해서는 Library Dependencies를 참조한다.
2. <scp>
sftp 로 파일을 보내거나 받아온다.
2.1. 파일 보내기
2.1.1. 기본적인 형태
<scp file="myfile.txt" todir="user:password@somehost:/home/chuck" trust="true" />
2.1.2. file 속성 대신 fileset 요소 사용
<scp todir="user:password@somehost:/home/chuck" trust="true"> <fileset dir="src_dir"> <include name="**/*.java"/> </fileset> </scp>
2.1.3. password 속성
<scp file="myfile.txt" todir="user@somehost:/home/chuck" password="password" trust="true" />
2.1.4. 실무에서
여러 개의 서로 다른 remote 디렉토리에 파일을 업로드하는 경우 <scp>
Task 를 여러 번 사용해야 하기 때문에,
먼저 다음과 같이 <property>
로 정의하고,
<property name="remote.host" value="somehost" /> <property name="remote.username" value="user" /> <property name="remote.password" value="password" />
다음과 같이 <property>
를 가져다 쓴다.
<scp todir="${remote.username}@${remote.host}:/home/chuck" password="${remote.password}" trust="true"> <fileset dir="src_dir"> <include name="**/*.java"/> </fileset> </scp>
<property>
정의하는 대신,
ant 명령어를 실행할 때 다음과 같이 해도 된다.
ant -Dremote.username=user -Dremote.password=password target1 target2
2.2. 파일 받기
파일 받기는 remote 쪽에서 fileset 을 사용할 수 없다.
<scp file="${remote.username}@${remote.host}:/home/chuck/*" todir="/home/sara" password="${remote.password}" trust="true" />
3. <sshexec>
다음과 같이 remote 서버에서 shell 명령어를 실행할 수 있다.
<sshexec host="${remote.host}" trust="yes" username="${remote.username}" password="${remote.password}" command="ls" />
여러 개의 명령어를 실행하려는 경우,
- 명령어를 ";" 로 나누거나,
- 서버쪽에서 shell script 를 작성한다.