USE(Universal Script Executor):一个基于SSH的本机、远程机器统一视图的通用脚本执行器
USE是本人的第一个开源项目。立项的理由很简单:1)想证明通过组合“PHP+BASH+SSH”这三种常见的程序来产生一个集群内各机器统一视图的通用脚本执行器是切实可行的(当然,考虑到需要事先安装好PHP解释器和做好信任关系所造成的麻烦,后续有时间的话会使用C++直接调用libssl来实现);2)集中管理运维过程中用到的各个脚本;3)提供对现有程序无侵入式的管理方式。
这3点实际上是相关的。当然了,USE都做到了。实现很简单,目前代码行数在500行左右,本人利用元旦放假时间完成。以Apache License 2.0协议发布,代码可在https://github.com/xuchaoqian/use查看。
设计简图如下:
如图所示,所有的脚本程序都被集中管理起来了,不需要先分发到各远程机器再来执行了。现在只需在控制机上编写,存放到USE指定的目录(可配置),然后调用USE执行就可以了。这其中的脚本分发、脚本同步(因为过期了或者意外被删除了)、脚本日志记录,USE帮我们解决。透明性是USE在设计和实现时重点考虑的因素,对用户来说,脚本的编写、修改是在本机,脚本的执行也好像是在本机(因为所有的脚本执行日志都在本机可查,而且USE默认是把分发过去的脚本放到远程机器的/tmp目录里,不会侵入远程机器上的应用程序)。
命令帮助:
NAME
use - Universal Script Executor.
SYNOPSIS
use [host:]script[ arg1 arg2 ... argn]
DESCRIPTION
use connects and logs into the specified host and executes the runnable script with the args. If host is not given it’s connected to the localhost. If args is not given it’s assigned empty array.
测试用例:
# The content of echo.sh: echo "$@";
# The response: a"${b}'"\ c\"d 2012
use echo.sh $'a"${b}\'\"\\' 'c\"d' 2012
有兴趣的朋友可以直接用ssh执行一个远程命令来打印上述参数,看麻不麻烦?呵呵,用USE就不需要自己关心转义的事了。
另外,USE还提供了通过API编程的能力:
try {
$executor = new executor();
echo $executor->run($host, $script, $args);
} catch (exception $e) {
echo $e->format_stack_trace();
exit(-1);
}
详细的,就不再赘述了,感兴趣的朋友可以自己翻代码看。
建议继续学习:
- Linux shell脚本使用while循环执行ssh的注意事项 (阅读:6642)
- 在ssh服务里使用chroot (阅读:4861)
- 为什么要用公钥/私钥而不是密码去做SSH身份验证 (阅读:4697)
- 懒人连ssh不输密码若干大法 (阅读:4496)
- ssh连接超时解决办法 (阅读:4483)
- 如何让ssh登录更加安全 (阅读:4495)
- ssh命令 (阅读:4225)
- SSH无密码登录 (阅读:4258)
- 共享会话的ssh连接配置 (阅读:3588)
- SSH下连接Oracle的方法 (阅读:3489)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:许超前 来源: 许超前的博客
- 标签: SSH USE
- 发布时间:2012-01-02 20:57:40
- [56] IOS安全–浅谈关于IOS加固的几种方法
- [55] 图书馆的世界纪录
- [55] 如何拿下简短的域名
- [55] android 开发入门
- [53] Oracle MTS模式下 进程地址与会话信
- [53] Go Reflect 性能
- [50] 【社会化设计】自我(self)部分――欢迎区
- [49] 读书笔记-壹百度:百度十年千倍的29条法则
- [41] 程序员技术练级攻略
- [35] 视觉调整-设计师 vs. 逻辑