2012-06-07 38 views
11

遠程服務器時,我得到了下面的堆棧跟蹤上運行的面料任務:爲什麼Fabric會拋出'TypeError:參數必須是int,或者有fileno()方法'?

[x.x.x.x] run: git fetch && git reset --hard origin/develop 
Exception in thread Thread-2: 
Traceback (most recent call last): 
    File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner 
    self.run() 
    File "/var/lib/jenkins/jobs/deploy/workspace/.pyenv/lib/python2.6/site-packages/ssh/agent.py", line 115, in run 
    self._communicate() 
    File "/var/lib/jenkins/jobs/deploy/workspace/.pyenv/lib/python2.6/site-packages/ssh/agent.py", line 125, in _communicate 
    events = select([self._agent._conn, self.__inr], [], [], 0.5) 
TypeError: argument must be an int, or have a fileno() method. 

使織物任務試圖執行一個混帳取和例外SSH的上升的事實/劑.py讓我覺得SSH認證有問題。

相同的用戶可以在Fabric之外運行git fetch,並且該任務可以在我的筆記本電腦上正常運行。

這是怎麼回事嗎?我該如何解決這個問題?

回答

17

An issue織物上的問題跟蹤器提出提到,從沒有在主機上運行的ssh-agent可能出現的錯誤。

我通過啓動ssh-agent和添加用戶的關鍵解決了這個問題:

$> eval `ssh-agent` 
$> ssh-add ~/.ssh/id_rsa 

成功!

0

爲自動啓動的ssh-agent當你第一次登錄,添加到您的~/.bashrc

if [ ! -S ~/.ssh/ssh_auth_sock ]; then 
    eval `ssh-agent` 
    ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock 
    ssh-add 
fi 
export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock 
0

我就遇到了這個錯誤,而使用織物與Python/Django的,當我試圖用手來執行任務在./manage.py shell_plus之內。

原來(對我來說),該錯誤是由我的shell_plus的成立,而是使用IPython中的bpython造成的事實。

當我跑./manage.py shell_plus --ipython代替,一切都工作正常。

我知道這可能不是直接回答你的問題,但我想我還不如留個字條這裏爲別人穿過的問題,像我一樣誰發生。

相關問題