Чи можу я SSH у певний каталог?


9

Я щодня входжу в безліч різних серверів, і деякі з них мають різні файлові системи для своїх веб-сайтів. Кожен раз, коли я зміню сервер, мені доводиться визначати, куди я збираюся потрапити до тих файлів, які мені дуже хочеться (тому що дуже рідко мені хочеться опинитися ~).

Я використовую файли Fabric для автоматизації всіх моїх дій (натискання на git, автоматизований SSH на сервер, щоб витягнути з git, перезапуск веб-програми, зміна залежностей тощо), тому мені було цікаво, чи не можу я також сказати, що я хочу щоб SSH потрапив у потрібний каталог, щоб я міг запуститись fab sshта перейти на звичайний сеанс SSH, просто в потрібному місці та почати працювати негайно.

Але це не про тканину; будь ласка, проігноруйте це. Тканина просто виконує партію команд. Мій аргумент з sshкомандою. Ось що я скажу Fabric бігати.

Тож як я можу потрапити sshдо cdконкретного каталогу при вході?

Примітка: це не може бути серверним або користувацьким. У мене є кілька веб-сайтів під одним користувачем на деяких серверах, тож вставляти щось у ~/.bashrcмене не вийде.

Відповіді:


9

Ну я знав, що можу щось запустити на вході, але знав, що після запуску це вийде прямо. Я зараз пам’ятаю, що я можу працювати на віддаленому сервері скільки завгодно. Ви можете просто з'єднати команди разом!

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

Тепер я можу просто сказати тканині зробити це, і ми йдемо. Простий.


Я сказав, що це не має нічого спільного з Fabric, але ось нова частина мого сценарію тканини, виходячи з вищезазначеного:

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

Я симлінк той же сценарій навколо так змінні ( server_host, server_portа remote_dir) перехід від сайту до сайту.

Оскільки Тканина може обробляти вихідне з'єднання, ви також можете це зробити:

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

Це спрацьовує, але вихідний заздалегідь передбачений рядком з Fabric. Це зробило підказку понад 80 символів довгим, і, хоча я маю тонни дозволу, це занадто багато для мене :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.