2015-08-18 1 views
-1

Selon la documentation (https://codeship.com/documentation/continuous-deployment/deployment-with-ftp-sftp-scp/#run-commands-on-a-remote-server-via-ssh), vous devez exécuter toutes les commandes en une seule commande.Commandes ssh de codes

Je comprends que, je ne comprends pas comment je peux courir ce qui suit comme une seule commande, le processus serait:

  1. ssh [email protected]
  2. ssh user @ test- serveur
  3. cd
  4. deploy ./deploy.sh

pas que la deuxième commande est exécutée sur 111.1.111.101 comme demo

C'est actuellement ce que j'ai essayé:

ssh [email protected] "ssh [email protected]; cd deploy; ./deploy.sh"

Mais cela semble se coincer après la première commande ssh, il ne va jamais à la deuxième ssh.

+0

hey, pouvez-vous expliquer pourquoi il est nécessaire pour vous d'avoir deux couches de ssh? et sur quelle machine se trouve le script 'deploy/deploy.sh'? – user156213

+0

C'est juste la façon dont notre serveur est configuré pour le moment, je ne peux pas changer ça. –

Répondre

1
ssh -t [email protected] 'ssh destination "cd deploy; ./deploy.sh"' 
+0

Ceci est parfait, fonctionne exactement comme prévu. Je ne savais pas que vous pourriez mélanger les guillemets simples et doubles. –

1

Comme utilisateur156213 a dit probablement que vous n'avez pas besoin de deux sauts, mais de toute façon vous ajoutez un; après le ssh qui brise tout

Avec un saut

ssh [email protected] "cd deploy ; ./deploy.sh" 

vous pouvez également essayer de supprimer la première ligne

ssh [email protected] ./deploy/deploy.sh 

Jetez un oeil à ProxyCommand dans ssh pour éviter les sauts, modifiez votre .ssh/config pour inclure quelque chose comme ça

Host first 
    Hostname 111.1.111.101 
    User demo 

Host second 
    User user 
    ProxyCommand ssh -q first nc test-server 

maintenant avec un simple

ssh second deploy/deploy.sh 

fera le travail

+0

Malheureusement, j'ai besoin des deux couches de SSH, je ne peux pas changer cela, donc j'ai besoin de comprendre comment le faire avec une seule commande. –

+0

Avec la configuration de ProxyCommand vous pouvez faire les deux couches de ssh juste en une, vous permet également d'utiliser des commandes plus complexes basées sur ssh comme rsync ou git. Par exemple un rsync -av/tmp/seconde:/tmp/va rsync votre local/tmp avec le distant qui saute par le premier proxy ssh – PerroVerd

+0

Cela a du sens, mais je n'avais pas beaucoup d'options de configuration sur ce serveur et je devais travailler avec les commandes simples que j'ai reçues. –