2016-09-13 3 views
1

Ich habe ein Boto-Python-Skript, das in /var/lib/jenkins/workspace/project/python-script.py lebt, das in der execute-Shell eines jenkins-Builds ausgeführt wird.Jenkins-Benutzer kann Python-Skript nicht ausführen

Wenn ich in meinen jenkins-Server ssh und den Befehl python python-script.py arg1 arg2 als root oder den ec2-Benutzer ausführe, läuft das Python-Skript genau so, wie ich es ausführen möchte. Wenn ich laufe 2 die jenkins bauen oder sudo -u jenkins Python Python-Skript arg1 arg bekomme ich den gleichen Fehler wie folgt:

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 

Ich habe versucht, den Pfad zu den Pfad zu Python zu ändern, geändert Berechtigungen für die Python-Datei an den Benutzer jenkins und machte die Datei ausführbar.

Ich bin mir nicht sicher, wo ich von hier aus gehen soll, da die Suche nach wiederholten Antworten beginnt. JEDE Hilfe würde sehr geschätzt werden.

Beim Drucken der Umgebungen ist dies, was ich bekommen:

für Root-Benutzer:

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 

und für jenkins Benutzer:

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 
+0

Ich würde beginnen, indem Sie das env. Variablen aus beiden Fällen (OK, nicht OK) und vergleichen Sie das Los. –

+0

Ich versuche mir diese anzuschauen und darzulegen, was sie verursacht. Ich habe meine Frage aktualisiert, wenn Sie auf andere Weise helfen könnten, das wäre großartig. – Zgbrell

+0

Einige env. Vars fehlen. Da es "ec2" etwas gibt, vermute ich, dass das Hinzufügen von "EC2_HOME =/opt/aws/apitools/ec2 EC2_AMITOOL_HOME =/opt/aws/amitools/ec2" hilfreich wäre. Betrachten Sie im Allgemeinen Ihre .profile/.bashrc für den EC2-Benutzer, wo es funktioniert. Vielleicht auch die 'AWS_etwas'-Variablen (nur eine Ahnung) –

Antwort

1

Ended, dass ich nur meine benötigt zu setzen .boto-Datei, die meine Zugriffs- und geheimen Schlüssel im Stammverzeichnis des jenkins-Benutzers enthält. Sobald ich die Datei im Stammverzeichnis des Jenkins-Benutzers erstellt hatte, begann sie zu arbeiten.

+0

Sie könnten diese Antwort akzeptieren. Selbst wenn es dein eigenes ist. – exhuma

+0

Ich versuchte, aber sagt, dass ich für meinen eigenen Beitrag nicht stimmen kann – Zgbrell

+0

Accepting arbeitet, indem er das check-mark unter dem downvote Knopf anklickt. Wenn es nicht angezeigt wird, könnte es sich um ein Reputationsproblem handeln. Je mehr Reputation Sie haben, desto mehr Funktionen werden verfügbar. Ich habe sowohl Ihre Frage als auch Ihre Antwort aufgefrischt, um Ihnen einen kleinen Schub zu geben, aber ich bin mir nicht sicher, dass es genug sein wird. Ich habe das auch gefunden: https://stackoverflow.blog/2009/01/accept-your-own-answers/ - also sollte es * funktionieren *. – exhuma