【问题标题】:Jenkins user unable to run python scriptJenkins用户无法运行python脚本
【发布时间】:2017-01-21 13:14:53
【问题描述】:

我有一个 boto python 脚本,它位于 /var/lib/jenkins/workspace/project/python-script.py 中,该脚本在 jenkins 构建的执行 shell 中运行。

当我 ssh 进入我的 jenkins 服务器并以 root 或 ec2-user 身份执行命令 python python-script.py arg1 arg2 时,python 脚本将完全按照我希望的方式运行。当我运行 jenkins build 或 sudo -u jenkins python python-script arg1 arg 2 我得到相同的错误如下:

    Traceback (most recent call last):
  File "ec2-elb.py", line 31, in <module>
    main()
  File "ec2-elb.py", line 17, in main
    elb_conn = boto.ec2.elb.connect_to_region(args.region)
  File "/usr/local/lib/python2.7/site-packages/boto-2.42.0-py2.7.egg/boto/ec2/elb/__init__.py", line 63, in connect_to_region
    return region.connect(**kw_params)
  File "/usr/local/lib/python2.7/site-packages/boto-2.42.0-py2.7.egg/boto/regioninfo.py", line 187, in connect
    return self.connection_cls(region=self, **kw_params)
  File "/usr/local/lib/python2.7/site-packages/boto-2.42.0-py2.7.egg/boto/ec2/elb/__init__.py", line 98, in __init__
    profile_name=profile_name)
  File "/usr/local/lib/python2.7/site-packages/boto-2.42.0-py2.7.egg/boto/connection.py", line 1100, in __init__
    provider=provider)
  File "/usr/local/lib/python2.7/site-packages/boto-2.42.0-py2.7.egg/boto/connection.py", line 569, in __init__
    host, config, self.provider, self._required_auth_capability())
  File "/usr/local/lib/python2.7/site-packages/boto-2.42.0-py2.7.egg/boto/auth.py", line 991, in get_auth_handler
    'Check your credentials' % (len(names), str(names)))
boto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Handler'] Check your credentials

我尝试将 PATH 更改为 python 的路径,将 python 文件的权限更改为 jenkins 用户并使文件可执行。

由于搜索开始带回重复的答案,我不知道从哪里开始。任何帮助将不胜感激。

当打印环境时,这是我得到的:

root 用户:

LESS_TERMCAP_mb=
HOSTNAME=ip-172-31-3-2
LESS_TERMCAP_md=
LESS_TERMCAP_me=
SHELL=/bin/bash
TERM=xterm-256color
HISTSIZE=1000
EC2_AMITOOL_HOME=/opt/aws/amitools/ec2
LESS_TERMCAP_ue=
USER=root
LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:
SUDO_USER=ec2-user
EC2_HOME=/opt/aws/apitools/ec2
SUDO_UID=500
USERNAME=root
LESS_TERMCAP_us=
PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
MAIL=/var/spool/mail/root
PWD=/root
JAVA_HOME=/usr/lib/jvm/jre
AWS_CLOUDWATCH_HOME=/opt/aws/apitools/mon
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
SUDO_COMMAND=/bin/bash
HOME=/root
AWS_PATH=/opt/aws
AWS_AUTO_SCALING_HOME=/opt/aws/apitools/as
LOGNAME=root
AWS_ELB_HOME=/opt/aws/apitools/elb
LC_CTYPE=en_US.UTF-8
LESSOPEN=||/usr/bin/lesspipe.sh %s
SUDO_GID=500
LESS_TERMCAP_se=
_=/usr/bin/printenv

对于詹金斯用户:

HOSTNAME=ip-172-31-3-2
TERM=xterm-256color
HISTSIZE=1000
LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:
USERNAME=root
MAIL=/var/spool/mail/root
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
LOGNAME=jenkins
USER=jenkins
HOME=/var/lib/jenkins
SUDO_COMMAND=/usr/bin/printenv
SUDO_USER=root
SUDO_UID=0
SUDO_GID=0

【问题讨论】:

  • 我将从转储环境开始。两种情况下的变量(OK,不OK)并比较批次。
  • 我正在尝试查看这些并描述可能导致它的原因。如果您能以任何其他方式提供帮助,我会更新我的问题。
  • 一些环境。缺少变量。由于提到了ec2,我怀疑添加那些EC2_HOME=/opt/aws/apitools/ec2 EC2_AMITOOL_HOME=/opt/aws/amitools/ec2 会有所帮助。通常,查看您的 .profile/.bashrc 以了解它工作的 EC2 用户。也可能是AWS_something 变量(只是预感)

标签: python python-2.7 jenkins amazon-ec2 boto


【解决方案1】:

最后我只需要将包含我的访问和密钥的 .boto 文件放在 jenkins 用户的根目录中。一旦我在 jenkins 用户的根目录中创建了文件,它就开始工作了。

【讨论】:

  • 您可能想接受这个答案。即使是你自己的。
  • 通过点击downvote按钮下方的复选标记接受作品。如果不显示,则可能是声誉问题。您拥有的声誉越高,可用的功能就越多。我已经对你的问题和答案都投了赞成票,以给你一点动力,但我不确定这是否足够。我还发现了这个:stackoverflow.blog/2009/01/accept-your-own-answers——所以它应该工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 2013-01-24
  • 2016-03-06
相关资源
最近更新 更多