首页 文章

未知命令 - LFTP

提问于
浏览
1

我在Gitlab CI上使用LFTP来部署一组文件 . 我已经在我设置的一台服务器(使用SFTP的登台服务器)上很好地工作了 . 但是,在我客户端的服务器上,我似乎无法连接 . 服务器是使用FTP设置的,我必须使用普通/不安全模式通过Filezilla连接 - 它确实连接并正常工作(虽然我将提供一些建议,以便将来使用SFTP) .

当我尝试通过.gitlab-ci.yml文件使用LFTP执行相同操作时,我收到以下错误:

Unknown command `ftp.example.com'.
mirror: Not connected
ERROR: Build failed: exit code 1

我怀疑这是因为使用普通的FTP,但我已经尝试更改主机,使用 set 放置主机的 ftp:// 和其他一些命令,但没有运气 .

这是我的.gitlab-ci.yml文件(的编辑版本):

stages:
  - build-staging
  - build-production

variables:
  EXCLUDE: "--exclude '.htaccess' --exclude-glob .git* --exclude '.git/' --exclude 'wp-config.php'"
  SOURCE_DIR: "./"

  # STAGING
  DEST_DIR: "/"
  HOST_STAGING: "sftp://123.456.789"
  USERNAME_STAGING: "user"
  PASSWORD_STAGING: "password"

  # PRODUCTION
  DEST_DIR_PROD: "/"
  HOST_PROD: "ftp.example.com"
  USERNAME_PROD: "user"
  PASSWORD_PROD: "password"

job1:
  stage: build-staging
  environment: staging
  script:
  - apt-get update -qq && apt-get install -y -qq lftp
  - echo "Deploying"
  - lftp -c "set ftp:ssl-allow no; set sftp:auto-confirm yes; open -u $USERNAME_STAGING,$PASSWORD_STAGING $HOST_STAGING; mirror -Rv --ignore-time --parallel=10 $EXCLUDE $SOURCE_DIR $DEST_DIR_STAGING"
  only:
  - staging
  tags:
  - 2gb

job2:
  stage: build-production
  environment: production
  when: manual
  script:
  - apt-get update -qq && apt-get install -y -qq lftp
  - echo "Deploying"
  - lftp -c "set ftp:ssl-allow no; open -u $USERNAME_PROD,$PASSWORD_PROD $HOST_PROD; mirror -Rv --ignore-time --parallel=10 $EXCLUDE $SOURCE_DIR $DEST_DIR_PROD"
  only:
  - production
  tags:
  - 2gb

任何帮助都会很棒,谢谢!

1 回答

  • 2

    这是由于密码中的特殊字符 - 我的密码以 & 结尾,这导致lftp期望不同的命令 . 为了解决这个问题,我删除了引号并使用 | 转义 & ,如下所示:

    PASSWORD_PROD: password\&
    

相关问题