Могу ли я SSH в определенный каталог?


9

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

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

Это не о Ткани, хотя; пожалуйста, игнорируйте это. Ткань просто запускает пакет команд. Мой аргумент с sshкомандой. Это то, что я скажу, чтобы Ткань бежала.

Так как я могу получить , sshчтобы cdв определенный каталог на входе в систему?

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

Ответы:


9

Ну, я знал, что могу что-то запустить при входе в систему, но я знал, что он выйдет сразу после запуска. Теперь я помню, что могу работать сколько угодно на удаленном сервере. Вы можете просто связать команды вместе!

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

Теперь я могу сказать ткани сделать это, и мы ушли. Просто.


Я сказал, что это не имеет ничего общего с Fabric, но вот и новая часть моего сценария 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) переход от сайта к сайту.

Поскольку Fabric может обрабатывать исходящее соединение, вы также можете просто сделать это:

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.