Git 什么';我的部署脚本有什么问题?

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

我正在尝试使用一个可以从本地计算机上运行的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;
    
    #/垃圾箱/垃圾箱
    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_PORT
    ssh
    在此处请求密码:

    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
    我仍然会得到伪终端错误,尽管命令执行成功。如何抑制该错误消息?