Linux SSH 远程执行脚本

/ Linux / 没有评论 / 2170浏览

1. 环境

有时我们的程序会部署在多个Linux服务器上,每次部署程序我们不可能把程序一一部署到各个服务器上,我们需要实现一个脚本来自动完成这事,这其中有两个难点:

2. 程序文件必须同步到各个服务器

3. 在各个服务器上启动程序

下面就围绕这两个问题来解决。

4. 解决问题

2.1 文件同步

文件同步实现起来比较简单,你可以使用scp,ftp,lftp,http 等等,这里我给大家推荐rsync 这个命令一般Linux服务器默认安装的都有,这个用来同步实在是方便多了,不懂的大家可以百度下,这里我提供一个我使用的

rsync -avrh --exclude '*.swp' --exclude '*.log' --delete ./ root@HOST1:/home/foo

2.2 脚本远程执行

先写个测试脚本remote.sh,后面用来远程执行

#!/bin/bash
echo $1
echo $HOSTNAME

这个脚本用来打印第一个参数和运行时的主机名 执行下述这个命令将 remote.sh 在 HOST1 上执行,无需拷贝

ssh root@HOST1 'bash -s' < remote.sh test

运行结果:

test
HOST1

3. 总结

这里只是提供一个小范例,想对rsync 更深入地可以Google,从这个例子我们可以看出SSH 这个工具的强大之处,其实它的作用还有很多,比如端口映射等等也是非常用的。