Bisakah saya SSH ke direktori tertentu?

9

Saya SSH menjadi banyak server yang berbeda setiap hari dan beberapa dari mereka memiliki struktur sistem file yang berbeda untuk situs web mereka. Setiap kali saya mengganti server, saya harus mencari tahu di mana saya akan mendapatkan file yang saya inginkan (karena sangat jarang saya ingin berada di dalamnya ~).

Saya menggunakan file Fabric untuk mengotomatiskan semua tindakan saya (mendorong ke git, SSH otomatis ke server untuk menarik dari git, memulai kembali aplikasi web, mengubah dependensi, dll), jadi saya bertanya-tanya apakah saya juga tidak bisa mengatakannya bahwa saya ingin ke SSH ke direktori yang benar sehingga saya dapat menjalankan fab sshdan berada di sesi SSH normal, tepat di tempat yang tepat dan mulai bekerja segera.

Ini bukan tentang Fabric; tolong abaikan saja. Fabric hanya menjalankan sejumlah perintah. Argumen saya adalah dengan sshperintah. Itulah yang akan saya katakan pada Fabric untuk dijalankan.

Jadi bagaimana saya bisa masuk sshke cddirektori spesifik saat login?

Catatan: ini bukan server atau hal yang berhubungan dengan pengguna. Saya memiliki beberapa situs web di bawah satu pengguna di beberapa server sehingga memasukkan sesuatu ~/.bashrctidak akan bekerja untuk saya.

Oli
sumber

Jawaban:

9

Yah saya tahu saya bisa menjalankan sesuatu saat masuk, tapi saya tahu itu akan keluar langsung setelah berjalan. Apa yang sekarang saya ingat adalah bahwa saya dapat menjalankan sebanyak yang saya suka di server jauh. Anda bisa menggabungkan perintah bersama-sama!

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

Sekarang saya bisa memberi tahu fabric untuk melakukan itu dan kita pergi. Sederhana.


Saya memang mengatakan itu tidak ada hubungannya dengan Fabric tapi ini bagian baru dari skrip fabric saya juga, berdasarkan pada yang di atas:

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,
    })

Saya menyinkronkan skrip yang sama sehingga variabel ( server_host, server_portdan remote_dir) berubah dari situs ke situs.

Karena Fabric dapat menangani koneksi keluar Anda juga bisa melakukan ini:

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

Ini berfungsi tetapi output diawali dengan string dari Fabric. Ini membuat prompt lebih dari 80 karakter panjang dan sementara saya punya banyak resolusi, itu terlalu banyak untuk saya :)

Oli
sumber