免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: duanjigang
打印 上一主题 下一主题

分享自己做的一个系统工具--CME [复制链接]

论坛徽章:
0
31 [报告]
发表于 2008-09-03 13:20 |只看该作者
原帖由 ecjtubaowp 于 2008-9-3 12:01 发表
恩,感谢讲解,最后一个问题是下面的代码打开文件,文件中有内容吗,没看到前面有初始化的地方?
new_fp = fopen(pDev->result_file, "r";
    if(!fp)
    {
&n ...

呵呵,下次记得插入代码时用code风格扩起来,我帮你改了2次了:wink: 这样方便阅读
对fopen和fprintf两个文件我都进行解释吧。

首先:在函数
  1. int do_work_dev(struct dev_t *pDev, FILE* fp)
复制代码
中,我们是把该设备的shell执行结果重定向到
文件
  1. pDev->result_file
复制代码
中了,这个从构造shell语句的代码中能看到,你可以打开语句
sprintf(szcmd, "expect ./%s %s  %s \"echo '%s'; %s\" > %s ",
    SHELL_FILE, szip, cme_config.password, MAGIC_STRING, cme_config.command, pDev->result_file);

下面一行的printf,看看这个标准的shell语句。
所以
  1. new_fp = fopen(pDev->result_file, "r");
复制代码
其实是读这个Shell执行结果的文件的。

其次 fprintf的文件是线程打开的,每个线程一个,专门存储该线程执行结果的文件。

[ 本帖最后由 duanjigang 于 2008-9-3 13:21 编辑 ]

论坛徽章:
0
32 [报告]
发表于 2008-09-03 13:23 |只看该作者
更新了一下设置线程初始状态的语句位置,v1.2

论坛徽章:
0
33 [报告]
发表于 2008-09-03 14:12 |只看该作者
汗啊,刚发现一个问题,纠正了

论坛徽章:
0
34 [报告]
发表于 2008-09-04 14:49 |只看该作者
看的有点晕,,

挺好!!但同时查看服务器的相同的地方的,执行相同命令的,机会很少,
反正我就很少,需要同时查看多服务器上的相同东西,服务器各有各的通途,呵呵

不过东西,还是不错的,值得肯定

论坛徽章:
0
35 [报告]
发表于 2008-09-04 19:41 |只看该作者
原帖由 lpc16 于 2008-9-4 14:49 发表
看的有点晕,,

挺好!!但同时查看服务器的相同的地方的,执行相同命令的,机会很少,
反正我就很少,需要同时查看多服务器上的相同东西,服务器各有各的通途,呵呵

不过东西,还是不错的,值得肯定

俺们应用这个比价多,2000台左右的服务器,性能查看,文件比较经常做,所以就做了个副产品。

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
36 [报告]
发表于 2008-09-05 09:11 |只看该作者
副产品是什么意思,另外如果在远程服务器上运行一个很费时的脚本时,你那个可能就要超时,这样的话在结果文件中就得不到命令执行的结果.我在一台机器上直接用expect(没用你的程序)在远程服务器上运行一个脚本,这个脚本很费时,我发现要把cme.sh中那个timeout设置很大,比如50才行.

论坛徽章:
0
37 [报告]
发表于 2008-09-05 09:37 |只看该作者
原帖由 ecjtubaowp 于 2008-9-5 09:11 发表
副产品是什么意思,另外如果在远程服务器上运行一个很费时的脚本时,你那个可能就要超时,这样的话在结果文件中就得不到命令执行的结果.我在一台机器上直接用expect(没用你的程序)在远程服务器上运行一个脚本,这个 ...

是这样的,本来对多台远程主机进行命令操作就是要能准实时的返回结果的,如果任务执行时间很长的话,那么即使不超时,发出命令所在的机器等待结果
时间也是很漫长的,这是不能忍受的。
这个工具的目的在于能够正确的触发远程主机的一个事件或者执行一条很快能返回的命令。
另外,如果你要执行一个费时很长的任务的话,为什么不用一个程序在远程主机上封装一下,远程工具执行start命令,只要开启你执行的动作就行,然后就可以返回,没有必要一直等待执行结果。
然后过一段时间,你可以再用这个工具去检测一下执行结果就行了。

论坛徽章:
0
38 [报告]
发表于 2008-09-05 11:26 |只看该作者
收藏了,留个名

论坛徽章:
0
39 [报告]
发表于 2008-09-05 11:30 |只看该作者
原帖由 tingfengmanbu 于 2008-9-5 11:26 发表
收藏了,留个名

呵呵,经过一些修改,windows版的也能用了,总算把它搞成多平台的了,明天有空更新出来

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
40 [报告]
发表于 2008-09-05 11:51 |只看该作者
原帖由 duanjigang 于 2008-9-5 09:37 发表

是这样的,本来对多台远程主机进行命令操作就是要能准实时的返回结果的,如果任务执行时间很长的话,那么即使不超时,发出命令所在的机器等待结果
时间也是很漫长的,这是不能忍受的。
这个工具的目的在于能 ...

我的远程主机上本来就有脚本了,没必要在服务器上封装程序吧,我就是要在本地执行这些脚本执行任务,我猜想expect执行ssh操作时对于我的要求来说可能就会超时,不过我自己用一个ssh的底层库来实现时几乎没有超时的现象,就是要等待执行结果。不过你的多线程还是能借鉴一下的,呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP