我正在尝试使用可以从本地计算机运行的 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 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;
但是当我运行脚本时收到以下消息:
不会分配伪终端,因为 stdin 不是终端。
sudo:抱歉,您必须有一个 tty 才能运行 sudo
错误:无法打开 .git/FETCH_HEAD:权限被拒绝
我哪里出错了?最后一行只是因为我没有在远程服务器上成功验证为 sudo,所以由于权限错误而无法运行 Git 命令,但是是什么导致了前两行?我是否配置错误,或者我在某处或某处有语法错误?