使用Ant執行SSH

原本佈署的工作得在兩個server間用putty換來換去的
今天閒來無事就想說用ant一次解決好了
果然,ant沒讓人失望!

第一步:
引用
自Ant1.60開始支持了SSH 及SCP 操作了,早在Ant之前若要支持SSH、SCP、SFTP等任務就必須下載j2ssh的j2ssh-ant.jar和j2ssh-core.jar(在http://www.sourceforge.net的j2ssh下有下載)。

現在可以使用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環境必須在 Window->Preferences->Ant->Runtime->Classpath中加入jsch-0.1.24。


第二步:
引用
<target name="sshexec">
      <sshexec host="192.168.122.180" username="root"  password="123456"
         trust="true" command="cd /;ls"/>
</target>

注意上面的trust屬性一般設置為true, 如果為默認值false時,那麼就要求你所連接的host必須存在於你的knownhosts文件中,並且這個文件也必須是存在的,否則會出現 com.jcraft.jsch.JSchException: reject HostKey: 192.168.122.180異常。
執行Linux下的命令時可以用分號";"把多個命令隔開,它們將會依次執行,而不需要寫多個sshexec進行多次連接,每次連接只執行一個命令。


官方的說明: http://ant.apache.org/manual/OptionalTasks/sshexec.html

有一點很奇怪,就是我在呼叫remote的ant時都會找不到,最後只好使用絕對路徑。

你可能感兴趣的:(eclipse,linux,.net,ant,ssh)