我试图通过我的第一个脚本执行一些命令,但它不起作用。
#!/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就像在终端中那样,会出现应该执行的命令的一些输出但是有一些错误。
为什么我在启动脚本后看不到终端中发生的一切?我这样做是错误的吗?
BTW:当我尝试手动连接并自己运行命令时,一切都运行良好。
使用CentOS 7。
答案 0 :(得分:20)
通过ssh登录并执行一组命令的简洁方法是
ssh user@ip << EOF
#some commands
EOF
此处EOF
充当命令列表的分隔符
脚本可以修改为
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
将执行命令并在
之后关闭那里的连接