2012-06-07 26 views
11

Khi chạy một nhiệm vụ vải trên một máy chủ từ xa tôi nhận được stack trace sau:Tại sao Fabric throw 'TypeError: đối số phải là một int, hoặc có một phương thức 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. 

Thực tế là nhiệm vụ Vải đang cố gắng để thực hiện một git lấy và rằng trường hợp ngoại lệ được nâng lên trong ssh/đại lý .py khiến tôi nghĩ rằng có sự cố với xác thực SSH.

Cùng một người dùng có thể chạy git fetch bên ngoài Vải và tác vụ chạy tốt trên máy tính xách tay của tôi.

Điều gì đang xảy ra ở đây? Làm cách nào để giải quyết vấn đề này?

Trả lời

17

An issue được nêu trên bộ theo dõi vấn đề của Fabric đề cập đến lỗi có thể phát sinh do không có ssh-agent chạy trên máy chủ.

tôi giải quyết vấn đề bằng cách bắt đầu một ssh-agent và thêm chìa khóa của người dùng:

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

thành công!

0

Để auto-start ssh-agent khi bạn đăng nhập đầu tiên, thêm video này vào ~/.bashrc của bạn:

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

Tôi chạy vào lỗi này khi sử dụng vải với Python/Django khi tôi đã cố gắng để thực hiện nhiệm vụ bằng tay trong phạm vi ./manage.py shell_plus.

Nó chỉ ra (đối với tôi) rằng lỗi được gây ra bởi thực tế là shell_plus của tôi đã được thiết lập để sử dụng bpython thay vì ipython.

Khi tôi chạy ./manage.py shell_plus --ipython thay vào đó, mọi thứ hoạt động hoàn hảo.

Tôi nhận ra rằng điều này có thể không phải là câu trả lời trực tiếp cho vấn đề của bạn, nhưng tôi cho rằng tôi có thể để lại một ghi chú ở đây cho bất kỳ ai khác xảy ra trong vấn đề như tôi đã làm.