执行shell远程脚本

出衷:我希望UI组能使用svn来管理css、js、图片。这样PHP组在套用的时候就可以通过对比版本来知道UI组在css里新增了哪些东西。

做法:叫小马把现有ui.rt.cn上的东西转到svn里去。
小马的要求:希望改动代码之后提交到svn之后,能自动发布到ui.rt.cn上去。

问题解析:svn是在192.168.0.27,而ui.rt.cn是在192.168.0.28,两台服务器

思路1:ui.rt.cn上用svn checkout一份,然后定时更新。在0.28上做crontab就好了。
思路2:提交到svn之后,可以利用post-commit这个hook来执行一些命令。应该把“自动发布”这个东西放到这里来。但自动发布怎么做?同样在0.28上checkout一份代码,然后如果能在0.27这台服务器post-commit之后触发0.28的svn up就好了。
so …
[root@test hooks]# cat ui_svn_up.sh
#!/usr/bin/expect
set user root
set host 192.168.0.28
spawn ssh $user@$host
expect -re "]#"
send "cd /home/ui\r"
send "svn up . --username user --password pwd --force -q \r"
expect eof
send "exit\r"

利用expect做跨服务器脚本调用。这里要注意的是我们在0.27到0.28里因为做了ssh key,所以不需要再输用户名和密码。在正常的情况下,是要再改一下代码来实现登录的过程的。

然后在post-commit的hook里加这个脚本就行了。

参考贴:请猛击

就叫我雷锋吧。

Copyright © 2014. All Rights Reserved.

发表评论

电子邮件地址不会被公开。 必填项已用*标注