SSH соединение с удаленным сервером базы данных - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть Rake-задача , чтобы остановить удаленный сервер MySQL, например:

   task :stop_mysql do

     #SSH connect to the remote db server first
     #how???

     #then, run the following command
     system 'sudo /etc/init.d/mysql stop'
   end

Как вы видите выше, теперь сервер базы данных является удаленным , я знаю IP адрес сервера базы данных.

Как программно установить ssh соединение с сервером базы данных и выполнить команду в задаче rake выше, чтобы остановить MySQL?

P.S. Конфигурация ssh выполнена (я имею в виду ключи). Не нужно беспокоиться о конфигурации SSH. Мне нужно только знать, каким должен быть код ruby, чтобы установить соединение SSH.

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Оберните это в простую функцию, и это действительно удобно:

def run( cmd )
  system "ssh user@host '#{cmd}' "
end

run( 'echo "aha coolness" >> test.txt' )
run( 'ls *.txt' )
run( 'cat test.txt' )

выводит что-то в файл test.txt работает удаленно кошка файл удаленно.

для вашего случая использования run ('sudo /etc/init.d/mysql stop')

Иметь файл идентификации и настройки .ssh / config, и для этого не требуется вводить пароли ...

1 голос
/ 01 декабря 2011

ssh может выполнить одну команду вместо открытия новой оболочки. Таким образом, вы можете использовать system для выполнения вашей команды на удаленном хосте.

Попробуйте

system 'ssh user@host sudo /etc/init.d/mysql stop'

(для второго аргумента может потребоваться убежать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...