Hudson GUI не может выполнить задание с той же командой, которая хорошо работает от оболочки

Я получаю эту ошибку при попытке выполнить задание в Гудзоне вот журнал

Started by user anonymous
[workspace] $ /bin/bash -x /tmp/hudson3189813701500418318.sh
+ date
Thu Feb 19 17:02:03 EST 2015
+ fab -f /FABRIC/FABFILESv1/deploy_ansiblev1.py -H 192.168.23.151 deploy_ansible
/usr/lib64/python2.6/getpass.py:83: GetPassWarning: Can not control echo on the terminal.
  passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.
[192.168.23.151] Login password for 'root': [192.168.23.151] Executing task 'deploy_ansible'
[192.168.23.151] run: cd /ANSIBLE/ANSIBLEv1/PLAYBOOKSv1
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/fabric/main.py", line 743, in main
    *args, **kwargs
  File "/usr/lib/python2.6/site-packages/fabric/tasks.py", line 384, in execute
    multiprocessing
  File "/usr/lib/python2.6/site-packages/fabric/tasks.py", line 274, in _execute
    return task.run(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/fabric/tasks.py", line 174, in run
    return self.wrapped(*args, **kwargs)
  File "/FABRIC/FABFILESv1/deploy_ansiblev1.py", line 7, in deploy_ansible
    run('cd /ANSIBLE/ANSIBLEv1/PLAYBOOKSv1')
  File "/usr/lib/python2.6/site-packages/fabric/network.py", line 647, in host_prompting_wrapper
    return func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/fabric/operations.py", line 1054, in run
    shell_escape=shell_escape)
  File "/usr/lib/python2.6/site-packages/fabric/operations.py", line 921, in _run_command
    channel=default_channel(), command=wrapped_command, pty=pty,
  File "/usr/lib/python2.6/site-packages/fabric/state.py", line 397, in default_channel
    chan = _open_session()
  File "/usr/lib/python2.6/site-packages/fabric/state.py", line 389, in _open_session
    return connections[env.host_string].get_transport().open_session()
  File "/usr/lib/python2.6/site-packages/fabric/network.py", line 159, in __getitem__
    self.connect(key)
  File "/usr/lib/python2.6/site-packages/fabric/network.py", line 151, in connect
    user, host, port, cache=self, seek_gateway=seek_gateway)
  File "/usr/lib/python2.6/site-packages/fabric/network.py", line 531, in connect
    password = prompt_for_password(text)
  File "/usr/lib/python2.6/site-packages/fabric/network.py", line 612, in prompt_for_password
    new_password = _password_prompt(password_prompt, stream)
  File "/usr/lib/python2.6/site-packages/fabric/network.py", line 584, in _password_prompt
    return getpass.getpass(prompt.encode('ascii', 'ignore'), stream)
  File "/usr/lib64/python2.6/getpass.py", line 83, in unix_getpass
    passwd = fallback_getpass(prompt, stream)
  File "/usr/lib64/python2.6/getpass.py", line 118, in fallback_getpass
    return _raw_input(prompt, stream)
  File "/usr/lib64/python2.6/getpass.py", line 135, in _raw_input
    raise EOFError
EOFError
Finished: FAILURE

теперь та же команда хорошо работает через CLI

[root@bbhudson ~]# fab -f /FABRIC/FABFILESv1/deploy_ansiblev1.py -H 192.168.23.151 deploy_ansible
[192.168.23.151] Executing task 'deploy_ansible'
[192.168.23.151] run: cd /ANSIBLE/ANSIBLEv1/PLAYBOOKSv1
[192.168.23.151] run: ansible-playbook -i /ANSIBLE/ANSIBLEv1/PLAYBOOKSv1/hosts /ANSIBLE/ANSIBLEv1/PLAYBOOKSv1/stg-servers.yml
[192.168.23.151] out:  [WARNING]: The version of gmp you have installed has a known issue regarding
[192.168.23.151] out: timing vulnerabilities when used with pycrypto. If possible, you should update
[192.168.23.151] out: it (i.e. yum update gmp).
[192.168.23.151] out:
[192.168.23.151] out:
[192.168.23.151] out: PLAY [stg-servers] ************************************************************
[192.168.23.151] out:
[192.168.23.151] out: GATHERING FACTS ***************************************************************
[192.168.23.151] out: ok: [192.168.23.77]
[192.168.23.151] out:
...
...

Что вызывает это? Я уже перезапустил сервер и не помог.

Спасибо

ДОБАВЛЕННЫЙ:

Просто реализованные гудзонские задания выполняют как гудзонский пользователь Поэтому, что я делаю для фиксации этого? Пользователь root потребности задания для выполнения... аутентификации SSH необходим в задании для выполнения

Посмотрите ниже

[root@bbhudson ~]# ps aux | grep hudson
root      1134  0.0  0.1 108436  1160 ?        S    Feb19   0:00 /bin/sh /etc/rc3.d/S50hudson start
root      1136  0.0  0.1 131176  1420 ?        S    Feb19   0:00 runuser -s /bin/bash hudson -c ulimit -S -c 0 >/dev/null 2>&1 ; /usr/bin/java -Djava.awt.headless=true -DHUDSON_HOME=/var/lib/hudson -jar /usr/lib/hudson/hudson.war --logfile=/var/log/hudson/hudson.log --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
hudson    1149  0.0  0.1 106060  1324 ?        Ss   Feb19   0:00 bash -c ulimit -S -c 0 >/dev/null 2>&1 ; /usr/bin/java -Djava.awt.headless=true -DHUDSON_HOME=/var/lib/hudson -jar /usr/lib/hudson/hudson.war --logfile=/var/log/hudson/hudson.log --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
hudson    1150  0.1 16.6 1117940 169604 ?      Sl   Feb19   1:20 /usr/bin/java -Djava.awt.headless=true -DHUDSON_HOME=/var/lib/hudson -jar /usr/lib/hudson/hudson.war --logfile=/var/log/hudson/hudson.log --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root     11133  0.0  0.0 103244   868 pts/0    S+   11:33   0:00 grep hudson
0
задан 20 February 2015 в 18:34
2 ответа

Только что выяснил, что у пользователя, под которым работал hudson, не было необходимых прав для запуска задания

Я действительно переустановил jenkins (на этот раз не hudson .. раз для переноса в любом случае) под пользователем, который я указал, и создал такое же задание с пользователем с соответствующими правами для запуска задания и БАХ !!!

Это сработало !!!

Спасибо

0
ответ дан 5 December 2019 в 12:57

Используйте эту функцию вместо команды запуска и бомбы.

output['running']  = False     # Avoid fabric to output what it is doing behind the scenes
output['stdout']   = False     # Do not show stdout
output['stderr']   = False     # Do not show stderr
output['status']   = False     # Prevent fabric from using print in some situations (at least in disconnect_all)
output['warnings'] = False     # Avoid fabric from showing messages about failed commands

def run_it(command, user, host, port, keyfile):
    env.host_string = "%s@%s:%s" % (user, host, port)
    env.key_filename = keyfile
    try:
        res = run(command, pty=False, shell=True)
        print "SUCCESS: return_code=%s" % (return_code)
    except Exception, e:
        print "ERROR  : %s" % (e)
        stdout, return_code =  None, None
    return stdout, return_code

P.S. Не передавать список ключей в env.key_filename

0
ответ дан 5 December 2019 в 12:57

Теги

Похожие вопросы