服务器命令行自动化(更新项目)

时间:2013-02-11 23:41:31

标签: linux windows command-line ssh automation

如何在远程服务器上自动运行某些命令?

例如我使用的是Windows机器。我运行bat-file。

  • 它编译资源(js + css)
  • 将代码提交给SVN
  • 通过ssh连接到服务器
  • 从该服务器上的SVN更新(使用我在Windows上存储的SVN密码)
  • 运行一些sh-scripts
  • 重启守护进程

如何自动执行远程任务? (其中最后3个在远程服务器上运行)

2 个答案:

答案 0 :(得分:2)

你的意思是自动化?喜欢每天跑步? 为此你安排他们。 因此,对于前两个项目,您可以通过批处理文件执行此操作。如果你有一个在远程服务器上运行的php服务器,你可以创建一个PHP脚本来执行最后3项。 为此你可以有一个页面,如hxxp://myserver.com/update.php(或hxxp://myserver.com/update.php?password = 12345678,以避免其他人执行它)你的批处理文件在Windows中会做类似的事情:

  • 编译资源(js + css)
  • 将代码提交给SVN
  • 向url hxxp://myserver.com/update.php发出请求,该请求将执行服务器端的转发项目

使用php,您可以使用exec('。sh file')执行.sh命令。

希望这会有所帮助,如果您遇到麻烦,我可以为您提供PHP脚本。

C

答案 1 :(得分:2)

您需要做的就是在服务器上创建一个bash脚本来执行此操作。只需创建一个文件,复制您运行的每个命令(每行1个命令)并保存文件。然后,当您连接到远程服务器时,您只需运行

sh /path/to/mybashfile

它将运行所有这些命令。如果您从命令行运行openssh客户端,则只需执行

ssh user@server "sh /path/to/mybashfile"

但我不确定你在Windows上使用的客户端。我很确定你可以用油灰做类似的事情。

如果您想要自动更新,可以创建一个bash脚本来检查存储库的最新版本,如果它比当前安装的版本更新,则运行这些命令。然后,您可以创建一个cron作业,以便在N分钟内运行该bash脚本。