Bien que cette question ne soit pas vraiment nouvelle, je me suis retrouvé aujourd'hui dans une situation similaire. Mon objectif est de télécharger des fichiers et d'exécuter des commandes sur un serveur distant auquel je dois accéder par tunnel (via un autre serveur). J'ai réussi à forger une solution pour cela avec ant
(qui peut à nouveau être déclenché à partir de maven comme mentionné ici).
Fourmis sshsession
ne crée qu'un tunnel que vous pouvez utiliser pour les tâches qui s'y trouvent. Les tâches qu'il contient ne sont pas automatiquement exécutées sur le serveur distant, mais vous pouvez utiliser la fonction d'exécution des tâches. sshexec
en collaboration avec le tunnel pour y parvenir. De même, le scp
La tâche peut maintenant être téléchargée à travers le tunnel vers le serveur distant. Voici un exemple :
<sshsession host="${jumphost}" port="22" username="${user}" password="${password}" trust="true">
<localtunnel lport="${localTunnelPort}" rhost="${targethost}" rport="22"/>
<sequential>
<!-- run a command on the remote server (here mkdir) -->
<sshexec host="localhost" port="${localTunnelPort}" username="${user.param}" password="${password.param}" command="mkdir ${home}/foobar" trust="true" />
<!-- upload a file to the remote server -->
<scp port="${localTunnelPort}" file="test_file.txt" todir="${user.param}:${password.param}@localhost:${home}/foobar/" trust="true" />
</sequential>
</sshsession>