1

Я реализую схему автоматического резервного копирования, поэтому я создал сценарий оболочки, который сначала создает дампы SQL для всех баз данных MySQL, а затем извлекает все веб-сайты из каталога /var/www удаленного сервера. Последний работает, так как я использую rsync для получения удаленных файлов.

Тем не менее, извлекаемые дампы MySQL с локального сервера, а это не то, что мне нужно. Я хочу также получить дампы SQL с удаленного сервера.

У меня есть туннель между локальным и удаленным сервером, к которому я могу подключиться без использования какого-либо пароля (я добавил открытый ключ в авторизованный_хост), поэтому я попытался добавить следующий код в сценарий:

ssh user@192.168.x.xxx

Затем я попытался получить дампы SQL и вышел с удаленного сервера. Однако это не работает, так как мне все еще приходится вводить выход вручную в терминале для получения дампов SQL с удаленного хоста. Я не знаю, почему это происходит. Вот что пытается сделать скрипт:

//connect to remote server 
ssh user@192.168.x.xxx

//retrieve SQL dumps 
//code to retrieve...

//exit from remote server 
exit

//use rsync to get remote files of /var/www from local server (working)

Есть ли способ подключиться к удаленному хосту И запустить код сценария на ЭТОМ удаленном хосте?

2 ответа2

4

Просто добавьте команду, которую вы хотите запустить, в конец командной строки ssh. Так что-то вроде этого:

ssh user@192.168.x.xxx /path/to/script

запустит /path/to/script на удаленной машине.

2

Если это одна команда, используйте команду ssh user@host remotecommand . Например:

ssh user@dbhost "mysqldump" > dumpfile

Обратите внимание, что перенаправления происходят локально (если вы не помещаете их в кавычки), поэтому dumpfile будет создан на локальном компьютере.

Аргумент remotecommand фактически передается в оболочку user по умолчанию, поэтому вы можете использовать такие вещи, как a; b && c и if/while заявления. Но разумнее вместо этого поместить их во второй файл сценария (на сервере БД).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .