I SSH на множество разных серверов каждый день, а некоторые из них имеют разные структуры файловой системы для своих веб-сайтов. Каждый раз, когда я меняю сервер, мне приходится работать там, где я собираюсь получить файлы, которые я действительно хочу (потому что очень редко я хочу быть в ~).
Я использую Fabric файлы для автоматизации всех моих действий (нажатие на git, автоматическое SSH на сервер, чтобы вытащить из git, перезапуск веб-приложения, изменение зависимостей и т. д.), поэтому мне было интересно, не могу ли я сказать, что я хочу, чтобы SSH правый каталог, чтобы я мог запустить fab ssh и быть в обычном сеансе SSH, как раз в нужном месте и сразу начать работать.
Это не о Fabric; пожалуйста, проигнорируйте его. Ткань только запускает команду команд. Мой аргумент заключается в команде ssh. Вот, что я буду говорить, чтобы Fabric работал.
Примечание: это не может быть сервера или пользователя. У меня есть несколько сайтов под одним пользователем на некоторых серверах, поэтому что-то в ~/.bashrc не будет работать для меня.
Ну, я знал, что могу запустить что-то при входе в систему, но я знал, что он выйдет сразу после запуска. Теперь я помню, что я могу запускать столько, сколько мне нравится на удаленном сервере. Вы можете просто соединить команды вместе!
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) меняются с сайта на сайт.
Поскольку Fabric может обрабатывать исходящее соединение, вы также можете просто выполните это:
def ssh():
''' SSH into the remote server at the correct directory '''
run('cd %s ; /bin/bash' % remote_dir)
Это работает, но вывод добавляется в строку из Fabric. Это сделало подсказку более 80 символов длинной, и пока у меня есть тонны разрешения, это слишком много для меня:)
Ну, я знал, что могу запустить что-то при входе в систему, но я знал, что он выйдет сразу после запуска. Теперь я помню, что я могу запускать столько, сколько мне нравится на удаленном сервере. Вы можете просто соединить команды вместе!
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) меняются с сайта на сайт.
Поскольку Fabric может обрабатывать исходящее соединение, вы также можете просто выполните это:
def ssh():
''' SSH into the remote server at the correct directory '''
run('cd %s ; /bin/bash' % remote_dir)
Это работает, но вывод добавляется в строку из Fabric. Это сделало подсказку более 80 символов длинной, и пока у меня есть тонны разрешения, это слишком много для меня:)