Bash script inicia session en ssh y ejecuta algunos commands

Después de que Travis completa y tiene éxito, bash ejecutar un script bash, que soy bastante nuevo.

Básicamente quiero que inicie session en un server remoto y obtenga una extracción de la twig principal en git y luego reinicie el server node.js

spawn ssh couch@********* -o StrictHostKeyChecking=no expect "assword:" send "*******\r" cd localer forever stop server.js git pull origin master forever start server.js exit 

Esto es lo que tengo hasta ahora, pero me da un error en travis-ci

 ./deploy.sh: line 1: spawn: command not found couldn't read file "assword:": no such file or directory ./deploy.sh: line 3: send: command not found ./deploy.sh: line 4: cd: localer: No such file or directory ./deploy.sh: line 5: forever: command not found From git://github.com/******* * branch master -> FETCH_HEAD Already up-to-date. ./deploy.sh: line 7: forever: command not found 

Instalé esperar en el entorno travis, pero dice que send y spawn no son packages conocidos, así que supongo que son solo properties bash.

Espero que puedas ayudar 🙂

¿Le gustó esto al final?

 #!/usr/bin/expect -f spawn ssh couch@*************** -o StrictHostKeyChecking=no expect "assword:" send "*******\r" set prompt {\$ $} expect -re $prompt send "cd localer\r" expect -re $prompt send "forever stop server.js\r" expect -re $prompt send "git pull origin master\r" sleep 10 expect -re $prompt send "forever start server.js\r" expect -re $prompt send "exit\r" expect eof 

¿Por qué no usas las keys ssh?

en su equipo local, ejecute ssh-keygen , después de que ~/.ssh/id_rsa.pub el process, obtenga el contenido de ~/.ssh/id_rsa.pub , inicie session en su server remoto, ~/.ssh/authorized_keys el contenido en ~/.ssh/authorized_keys

Ahora cierre la session e intente iniciar session de nuevo. No se le volverá a solicitar una contraseña (lo cual es mucho mejor si se almacena de forma sencilla en el script), y ahora puede usar esta syntax para ejecutar commands remotos:

ssh user@host "set -x; cd .; pwd; ls -lah; any command you want"

Realmente no es una buena idea colocar passwords de text simple en files de text.

Configure las keys públicas / privadas de SSH , luego simplemente networkingirija una secuencia de commands local a ssh para ejecutar la secuencia de commands de forma remota:

usuario de ssh @ machine 'bash -s' <local_script.sh