bash script execute commands after ssh
我试图通过我的第一个脚本执行一些命令,但它不起作用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #!/bin/bash #connect to server echo"Connecting to the server..." ssh -t root@IP ' #switch user to deploy su - deploy #switch path echo"Switching the path" cd /var/www/deploys/bin/app/config #run deploy script echo"Running deploy script" /usr/local/bin/cap -S env=prod deploy #restart apache sudo /bin/systemctl restart httpd.service bash -l ' |
发生什么事了?我已成功连接到服务器,用户已更改,然后我看不到任何事情发生。当我像在终端中那样按ctrl+c时,应该执行的命令会出现一些输出,但也会出现一些错误。
为什么我在启动脚本后看不到终端中发生的一切?我做错事了吗?
顺便说一句:当我尝试手动连接并自己运行命令时,一切都运行良好。
使用CENTOS 7。
通过ssh登录并执行一组命令的简单方法是
1 2 3 | ssh user@ip << EOF #some commands EOF |
这里,
脚本可以修改为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ssh -t root@IP << EOF #switch user to deploy su - deploy #switch path echo"Switching the path" cd /var/www/deploys/bin/app/config #run deploy script echo"Running deploy script" /usr/local/bin/cap -S env=prod deploy #restart apache sudo /bin/systemctl restart httpd.service bash -l EOF |
将执行该命令并在之后关闭那里的连接