原创_给客户端添加重启系统后台服务功能脚本(基本SQL数据库)_人力资产
学习交流 » 人力资产 »给客户端添加重启系统后台服务功能脚本(基本SQL数据库)
|
|
| |
作者 |
|
awfixtdm [个人空间]
注册  2011-08-18 发贴数 445 精华贴 2 原创贴 5 来自 状态 正常
级别 版主 |
|
|
之前发过一个OIT系统的后台服务维护程序,一旦检测到后台服务没运行,或是服务端口没有打开就自动启动服务,实际运行中发现偶尔会有服务器的端口开着,但是客户端连不上的情况,这种情况下维护程序不会重启后台,需要人工干预,去服务器上操作,不太人性化。 基于此,想到了在客户端加入人工重启服务器后台服务的功能。步骤如下: 1、在系统功能--主窗体脚本定义加入如下内容 menu_set_hot_key('N_Restart','F11',0,0); //此句作用把切换用户/重新登录加上个快捷键F11,以后有用 menu_add_csp('N_Top_System',5,'shutdownoit','重启后台服务','shutdownoit.csp'); //此句用来添加一个重启后台服务的菜单,执行的是脚本shutdownoit.csp的脚本集 string addre,str2 addre=get_home_path() str2='copy \\192.168.0.253\新综合系统完整版\dll\shutdownoit.exe ' system(str2+addre+"\dll /y") //上面一段用来每次启动系统的时候,从内网253机器的共享目录\\192.168.0.253\新综合系统完整版\dll上复制一个shutdownoit.exe到本地OIT系统执行目录的dll下,地址接实际修改。如果没有新用户,过段时间可以把这行注释掉,下载一次就行了 |
|
附件(登录后才可下载):1402181413_08.exe 说明: 原文件:shutdownoit.exe 大小:9728 Byte
|
于 2014-02-18 14:41 被 awfixtdm 修改
QQ:80240800
|
|
awfixtdm [个人空间]
注册  2011-08-18 发贴数 445 精华贴 2 原创贴 5 来自 状态 正常
级别 版主 |
|
|
为什么要自己做第三方程序?不用脚本自身呢,因为一旦服务器端口关闭,客户端跟服务器之前的通道将断开,脚本结果无法传递到服务器,所以我们需要建立一条新的通道,用来通知服务器服务断开了,要重启服务。 接下来我们来说怎么建立一条新的通道。虽然有很多方法可以实现,但是从效率和方便操作上,我选择了数据库。 2、打开SQL,打开系统的数据库,新建一个新表,建立一个字段cs,类型为int,保存新表,取名shutdown。把CS填上0 双击新建立的表shutdown,在触发器上右键 ,新建触发器,复制下面内容后点击执行即可 CREATE TRIGGER [dbo].[shut] ON [HRDB].[dbo].[shutdown] for update AS BEGIN declare @k int select @k=cs from inserted --print @k if @k=1 begin declare @file varchar(100) set @file = 'c:\shutdownoit.bat' exec master..xp_cmdshell @file update [shutdown] set cs='0' end END GO |
|
|
于 2014-02-18 14:32 被 awfixtdm 修改
QQ:80240800
|
|
awfixtdm [个人空间]
注册  2011-08-18 发贴数 445 精华贴 2 原创贴 5 来自 状态 正常
级别 版主 |
|
|
通过上面这个触发器,我们可以理解到它的意义,就是当shutdown表的CS字段发生变化,并且cs的值变成1的时候,就执行c:\shutdownoit.bat的批处理文件,然后又把CS的值改加0。 这里的'c:\shutdownoit.bat' 的批处理,就是我们用来执行重启后台服务的,当然,我们也可以直接写在触发器里,不用建立bat文件。这里我是建了文件,新建一个文本文件,写入下面两行内容,保存,重命名,把文件名改为shutdownoit.bat,扔到C盘根目录,地址也可以随便改,触发器里相应修改 批处理内容: taskkill /f /t /im server.ex start "" "E:\HR\oit_setup_20130824\oit_setup\oserver.exe" 第一行是结束后台服务的进程,第二行是运行,路径要修改为你服务器上的路径 至此,第二步完成,当后台断开的时候,只要服务器接收到cs的值变为1,就会重启服务,我们第三步要做的事,就是怎么样把CS的值变为1 |
|
|
QQ:80240800
|
|
awfixtdm [个人空间]
注册  2011-08-18 发贴数 445 精华贴 2 原创贴 5 来自 状态 正常
级别 版主 |
|
|
3、进入系统,配置管理,脚本工具,初始化,在main函数中输入如下内容 inp_clear(); inp_para_set_title('请输入重启后台服务管理密码') inp_def_string('mnum','重启密码:'); inp_para(); num inp_num; inp_num=inp_get_val('mnum') if(inp_num==*****)//设个密码 { inp_clear(); inp_def_string('mnum1','确定请输入Y:'); inp_para_set_title('确认重启后台服务') inp_para(); string qd; qd=inp_get_val('mnum1') if(qd=="Y") { msg("后台服务即将重启") string addre addre=get_home_path() system(addre+"\dll\shutdownoit.exe 服务器IP 用户名 密码 数据库名") } else { msg("输入有误,请重新输入") } } else { msg("重启密码错误,请重新输入") } 注意上面有一行要自行输入服务器IP,用户名,密码,数据库名,按顺序填入,中间空格隔开 点击另存为,输入shutdownoit.csp保存。就是第一步骤里重启后台服务菜单的脚本,这段的作用,就是利用shutdownoit.exe程序,实现把数据库里cs参数改为1,让后台重启的。 //注意把其他用户的脚本权限去掉,不然个个能看到数据库信息了 效果如下 |
|
|
于 2014-02-18 15:08 被 awfixtdm 修改
QQ:80240800
|
|
awfixtdm [个人空间]
注册  2011-08-18 发贴数 445 精华贴 2 原创贴 5 来自 状态 正常
级别 版主 |
|
awfixtdm [个人空间]
注册  2011-08-18 发贴数 445 精华贴 2 原创贴 5 来自 状态 正常
级别 版主 |
|
awfixtdm [个人空间]
注册  2011-08-18 发贴数 445 精华贴 2 原创贴 5 来自 状态 正常
级别 版主 |
|
|
这里重登录的功能,就是利用上面第一步中加入的快捷键F11,因为不是在窗体脚本,所以menu_trigger_click函数不起作用,用menu_trigger_click('N_Restart')没有反应,触发不了“切换用户/重登录”的菜单。所以改成用了快捷键触发回到登录界面,不用人工再去操作。 至此,客户端重启后台服务功能添加完成,此方法OIT各系统通用 |
|
|
于 2014-02-19 09:07 被 awfixtdm 修改
QQ:80240800
|
|
dragonzsp [个人空间] QQ名 十二个耳环(187199580)
注册  2011-03-25 发贴数 183 精华数 0 原创贴 4 来自 温州 状态 正常
级别 贵宾 |
|
|
|
|
官方认证第三方服务团队 QQ:187199580
收费教程地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=7&topic_id=102140&topic_page_id=1
手机收费版本地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=3&topic_id=103479&topic_page_id=1
|
|
三生石 [个人空间] QQ名 Meng
注册  2005-09-20 发贴数 7383 精华贴 14 原创贴 6 来自 杭州 状态 正常
级别 版主 |
|
|
|
|
三生石上旧精魂 赏月吟风莫要论 惭愧情人远相访 此身虽异性长存
|
|
awfixtdm [个人空间]
注册  2011-08-18 发贴数 445 精华贴 2 原创贴 5 来自 状态 正常
级别 版主 |
|
|
对于从服务器上下载文件到本地的脚本,也可以在数据库里加个表,给每个文件一个参数,然后脚本里判断一下,第一次下载好就顺便db_run写入一行数据标识一下,下次不再重新下载,就不会登录都闪黑框了 |
|
|
QQ:80240800
|
|
mozsen [个人空间]
注册  2012-07-24 发贴数 9 精华数 0 原创贴 0 来自 状态 正常
级别 会员 |
|
ahhnztz [个人空间] QQ名 安徽-大志
注册  2012-12-14 发贴数 55 精华贴 1 原创贴 3 来自 安徽 状态 正常
级别 会员 |
|
|
|
|
联系QQ:729208139 TEL:17775227617
|
|
afoo [个人空间] QQ名 常德-ZEN
注册  2010-04-08 发贴数 207 精华贴 6 原创贴 6 来自 常德-ZEN 状态 正常
级别 会员 |
|
|
|
|
官方认证第三方服务团队 蒋逸凡(常德-ZEN) QQ:50636277 微信FrankBZE
服务介绍: http://www.onlyit.cn/user_show_topic?user_id=13498&topic_id=79894&topic_page_id=1
|
|
webshow [个人空间]
注册  2009-02-09 发贴数 133 精华数 0 原创贴 0 来自 状态 正常
级别 会员 |
|
awfixtdm [个人空间]
注册  2011-08-18 发贴数 445 精华贴 2 原创贴 5 来自 状态 正常
级别 版主 |
|
|
一样用的,没分局域和互联。只要把shutdownoit.exe放到客户端dlll下就行了。 |
|
|
QQ:80240800
|
|
|
|