【问题标题】:-bash: ./deploy.sh: Permission denied , ERROR: script returned exit code 126-bash:./deploy.sh:权限被拒绝,错误:脚本返回退出代码 126
【发布时间】:2018-12-09 13:29:46
【问题描述】:

我正在尝试使用 Jenkins 实现持续部署,这涉及将 jar 文件发送到远程服务器并在远程服务器上启动 jar。

问题是我不断收到拒绝访问错误,我已经尝试了我在远程和本地服务器上的每个帐户,但似乎没有任何效果。我得到同样的错误。

Jenkins 文件

pipeline {
    agent any

    stages {

        stage ('Packaging stage') {

            steps {
                withMaven(maven : 'Maven') {
                    sh 'mvn clean install'
                }
            }
        }

        stage ('Deploy To Dev Server') {

             steps {
                sh './deploy.sh'
         }
       }
    }

}

deploy.sh

#!/usr/bin/expect -f
spawn scp -P 10022 /var/lib/jenkins/.m2/repository/org/hector/eureka-naming-server/0.0.1-SNAPSHOT/eureka-naming-server-0.0.1-SNAPSHOT.jar
myUserName@myRemoteServer.net:/home/myname/repository/eureka-service-deploy

expect "password: "

send "myPassword\r"

expect "$ "
send "other_command_to_execute_on_remote\r"
expect "$ "
send "exit\r"
echo "Successfully sent file"

【问题讨论】:

  • deploy.sh 的权限是什么?执行权限是否设置为 Jenkins 用户可以执行?
  • 我不确定在哪里设置此类权限,请您提供有关如何设置此类权限的指南
  • 你可以用ls -l查看文件的读、写和执行权限,这是一本很好的入门读物:digitalocean.com/community/tutorials/…

标签: java bash spring-boot jenkins


【解决方案1】:

您的 deploy.sh 似乎无法执行,您可以看到错误代码 126 “command not executable”。

ls -l path/to/

输出应该类似于:

-rw-r--r--    1 user  staff      402 Aug  1 10:55 deploy.sh

如果您的文件没有可执行标志,您应该使用chmod 更改访问权限,例如:

chmod +x path/to/deploy.sh

结果应该类似于(注意第 4 个字符 x):

-rwxr--r--    1 user  staff      402 Aug  1 10:55 deploy.sh

如果你的脚本提交到 git,你也可以这样做:

git update-index --chmod=+x path/to/deploy.sh

【讨论】:

  • deploy.sh文件是springboot项目的一部分
  • ./deploy.sh:第 2 行:spawn:找不到命令 ./deploy.sh:第 3 行:myUserName@myRemoteServer.net:/home/myname/repository/eureka-service-deploy:没有这样的文件或目录 ./deploy.sh:第 7 行:期望:找不到命令 ./deploy.sh:第 10 行:发送:找不到命令 ./deploy.sh:第 14 行:期望:找不到命令 ./deploy .sh:第 15 行:发送:未找到命令 ./deploy.sh:第 16 行:期望:未找到命令 ./deploy.sh:第 17 行:发送:未找到命令
  • 我在尝试 chmod +x path/to/deploy.sh 后得到上述错误
  • 现在你有一个新的错误说现在命令spawn 不存在,这表明你的deploy.sh 现在是可执行的。我不知道您的expect 环境是否正确配置了正确的二进制文件。
  • 我最终在 Jenkind 中使用了一个名为 publish over ssh 的插件
猜你喜欢
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
  • 2021-11-25
相关资源
最近更新 更多