如何连接到远程服务器并在该特定服务器上运行一些代码?

如何连接到远程服务器并在该特定服务器上运行一些代码?

我正在实施一个自动备份方案,因此我创建了一个 shell 脚本,该脚本首先为所有 MySQL 数据库创建 SQL 转储,然后从/var/www远程服务器的目录中检索所有网站。后者正在运行,因为我正在使用 rsync 获取远程文件。

但是,检索到的 MySQL 转储来自本地服务器,这不是我想要的。我还想从远程服务器获取 SQL 转储。

我在本地和远程服务器之间有一个隧道,我可以不使用任何密码来连接它(我将公钥添加到authorized_hosts),所以我尝试将以下代码添加到脚本中:

ssh [email protected]

然后我尝试检索 SQL 转储并退出远程服务器。但是这不起作用,因为我仍然必须在终端中手动输入 exit 才能从远程主机检索 SQL 转储。我不知道为什么会发生这种情况。这是脚本试图执行的操作:

//connect to remote server 
ssh [email protected]

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

//exit from remote server 
exit

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

有没有办法连接到远程主机并在该远程主机上运行脚本的代码?

答案1

只需将要运行的命令添加到 ssh 命令行末尾即可。如下所示:

ssh [email protected] /path/to/script

/path/to/script将在远程机器上运行。

答案2

如果是一条命令,则使用ssh user@host remotecommand。例如:

ssh user@dbhost "mysqldump" > dumpfile

请注意,重定向在本地进行(除非您将它们放在引号内),因此dumpfile将在本地计算机上创建。

远程命令参数实际上已传递给 的默认 shell user,因此您可以使用诸如a; b && c和 if/while 语句之类的内容。但将它们放在第二个脚本文件中(在数据库服务器中)更为明智。

相关内容