Tôi có thể SSH vào một thư mục cụ thể không?


9

Tôi SSH vào vô số máy chủ khác nhau mỗi ngày và một số trong số chúng có cấu trúc hệ thống tệp khác nhau cho trang web của họ. Mỗi lần tôi thay đổi máy chủ, tôi phải tìm ra nơi tôi sẽ đến với các tệp tôi thực sự muốn (vì rất hiếm khi tôi muốn ở trong đó ~).

Tôi sử dụng các tệp Fabric để tự động hóa tất cả các hành động của mình (đẩy sang git, SSH tự động đến máy chủ để lấy từ git, khởi động lại ứng dụng web, thay đổi phụ thuộc, v.v.), vì vậy tôi tự hỏi liệu tôi có thể nói với tôi rằng tôi muốn không để SSH vào đúng thư mục để tôi có thể chạy fab sshvà ở trong một phiên SSH bình thường, chỉ cần ở đúng nơi và bắt đầu làm việc ngay lập tức.

Đây không phải là về Vải mặc dù; hãy bỏ qua nó Fabric chỉ đang chạy một loạt các lệnh. Đối số của tôi là với sshlệnh. Đó là những gì tôi sẽ bảo Fabric chạy.

Vì vậy, làm thế nào tôi có thể nhận được sshđể cdvào một thư mục cụ thể về đăng nhập?

Lưu ý: đây không thể là máy chủ hoặc toàn bộ người dùng. Tôi có nhiều trang web dưới một người dùng trên một số máy chủ nên việc gắn một cái gì đó vào ~/.bashrcsẽ không hiệu quả với tôi.

Câu trả lời:


9

Vâng tôi biết tôi có thể chạy một cái gì đó khi đăng nhập, nhưng tôi biết nó sẽ thoát ra ngay sau khi chạy. Điều tôi nhớ bây giờ là tôi có thể chạy bao nhiêu tùy thích trên một máy chủ từ xa. Bạn chỉ có thể xâu chuỗi các lệnh lại với nhau!

ssh user@server -t "cd /websites/website ; /bin/bash"

Bây giờ tôi chỉ có thể nói với vải để làm điều đó và chúng tôi đi. Đơn giản.


Tôi đã nói rằng nó không liên quan gì đến Fabric nhưng đây cũng là phần mới trong kịch bản vải của tôi, dựa trên những điều trên:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    local('ssh -t -p%(port)s %(server)s "cd %(remote_dir)s ; /bin/bash"' % {
        'server': server_host,
        'port': server_port,
        'remote_dir': remote_dir,
    })

Tôi liên kết mềm cùng một kịch bản xung quanh để các biến ( server_host, server_portremote_dir) thay đổi từ trang này sang trang.

Bởi vì Fabric có thể xử lý kết nối ra ngoài, bạn cũng có thể thực hiện việc này:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    run('cd %s ; /bin/bash' % remote_dir)

Điều này không hoạt động nhưng đầu ra được thêm vào một chuỗi từ Fabric. Điều này làm cho lời nhắc trên 80 ký tự dài và trong khi tôi có hàng tấn độ phân giải, điều đó quá sức đối với tôi :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.