Git 什么';我的部署脚本有什么问题?
我正在尝试使用一个可以从本地计算机上运行的shell脚本来自动化部署过程。过程很简单:Git 什么';我的部署脚本有什么问题?,git,shell,ssh,Git,Shell,Ssh,我正在尝试使用一个可以从本地计算机上运行的shell脚本来自动化部署过程。过程很简单: SSH连接到远程服务器 根据提供的参数运行git pull命令 目前我有: #!/bin/sh SSH_HOST="REMOVED" SSH_PORT="REMOVED" SSH_USER="REMOVE" if [ "$1" = "live" ] then DIR="REMOVED" GIT_BRANCH="REMOVED" echo "Deploying to live
git pull
命令#!/bin/sh
SSH_HOST="REMOVED"
SSH_PORT="REMOVED"
SSH_USER="REMOVE"
if [ "$1" = "live" ]
then
DIR="REMOVED"
GIT_BRANCH="REMOVED"
echo "Deploying to live site..."
elif [ "$1" = "test" ]
then
DIR="REMOVED"
GIT_BRANCH="REMOVED"
echo "Deploying to test site..."
else
echo "ERROR: Please specify a target (either live or test)"
exit 1;
fi
# create SSH connection
echo "ssh $SSH_USER@$SSH_HOST -p $SSH_PORT"
ssh $SSH_USER@$SSH_HOST -p $SSH_PORT << END_SSH
sudo -s
cd $DIR
git pull origin $GIT_BRANCH
END_SSH
echo "Site successfully deployed."
exit 0;
#/垃圾箱/垃圾箱
SSH_HOST=“已删除”
SSH_PORT=“已删除”
SSH\u USER=“删除”
如果[“$1”=“现场”]
然后
DIR=“已删除”
GIT_BRANCH=“已删除”
echo“部署到实时站点…”
elif[“$1”=“测试”]
然后
DIR=“已删除”
GIT_BRANCH=“已删除”
echo“部署到测试站点…”
其他的
echo“错误:请指定目标(实时或测试)”
出口1;
fi
#创建SSH连接
echo“ssh$ssh_用户@$ssh_主机-p$ssh_端口”
ssh$ssh_USER@$ssh_HOST-p$ssh_PORTssh
在此处请求密码:
ssh $SSH_USER@$SSH_HOST -p $SSH_PORT << END_SSH
ssh$ssh\u用户@$ssh\u主机-p$ssh\u端口
不会分配伪终端,因为stdin不是终端
这是正常的行为,因为您已使用重定向stdin。如果我向远程计算机上的授权用户添加SSH密钥以绕过密码输入,那么我的脚本会工作吗?我强烈怀疑是这样。另一种方法是使用-t选项-t
标志做什么?我已经设置了基于密钥的身份验证,因此通过SSH连接时不需要提供密码。然而,使用-t
我仍然会得到伪终端错误,尽管命令执行成功。如何抑制该错误消息?