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