原创_给客户端添加重启系统后台服务功能脚本(基本SQL数据库)_人力资产
学习.交流
专业源于专注
www. onlyit. cn   
学习交流 文件下载 手册资料 交流QQ群

    

 21  1/2   1  2  >  >|  
作者
内容
awfixtdm  [个人空间]


注册  2011-08-18
发贴数  445
精华贴  2
原创贴  5
来自  
状态  正常

级别  版主
#1»发布于2014-02-18 14:41

之前发过一个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»发布于2014-02-18 14:32

为什么要自己做第三方程序?不用脚本自身呢,因为一旦服务器端口关闭,客户端跟服务器之前的通道将断开,脚本结果无法传递到服务器,所以我们需要建立一条新的通道,用来通知服务器服务断开了,要重启服务。 
 
接下来我们来说怎么建立一条新的通道。虽然有很多方法可以实现,但是从效率和方便操作上,我选择了数据库。 
 
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
来自  
状态  正常

级别  版主
#3»发布于2014-02-18 14:39

通过上面这个触发器,我们可以理解到它的意义,就是当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
来自  
状态  正常

级别  版主
#4»发布于2014-02-18 15:08

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
来自  
状态  正常

级别  版主
#5»发布于2014-02-18 14:48

为防止误操作,加入了一些验证








QQ:80240800

awfixtdm  [个人空间]


注册  2011-08-18
发贴数  445
精华贴  2
原创贴  5
来自  
状态  正常

级别  版主
#6»发布于2014-02-18 14:51

点击确定后,自动重启后台,并重登录回到登录窗口








QQ:80240800

awfixtdm  [个人空间]


注册  2011-08-18
发贴数  445
精华贴  2
原创贴  5
来自  
状态  正常

级别  版主
#7»发布于2014-02-19 09:07

这里重登录的功能,就是利用上面第一步中加入的快捷键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
来自  温州
状态  正常

级别  贵宾
#8»发布于2014-02-18 18:19

牛逼,膜拜啊






官方认证第三方服务团队   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
来自  杭州
状态  正常

级别  版主
#9»发布于2014-02-19 09:14

 
很强,感谢分享






 三生石上旧精魂 赏月吟风莫要论 惭愧情人远相访 此身虽异性长存 

awfixtdm  [个人空间]


注册  2011-08-18
发贴数  445
精华贴  2
原创贴  5
来自  
状态  正常

级别  版主
#10»发布于2014-02-19 14:00

对于从服务器上下载文件到本地的脚本,也可以在数据库里加个表,给每个文件一个参数,然后脚本里判断一下,第一次下载好就顺便db_run写入一行数据标识一下,下次不再重新下载,就不会登录都闪黑框了






QQ:80240800

mozsen  [个人空间]


注册  2012-07-24
发贴数  9
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#11»发布于2014-02-22 08:18

mark 收藏一下先




ahhnztz  [个人空间]
QQ名  安徽-大志


注册  2012-12-14
发贴数  55
精华贴  1
原创贴  3
来自  安徽
状态  正常

级别  会员
#12»发布于2014-02-26 21:09

留个记号,有时间深入学习下,谢谢楼主的无私奉献! 






联系QQ:729208139    TEL:17775227617

afoo  [个人空间]
QQ名  常德-ZEN


注册  2010-04-08
发贴数  207
精华贴  6
原创贴  6
来自  常德-ZEN
状态  正常

级别  会员
#13»发布于2014-03-05 10:40

多谢楼主共享这么好的经验,收藏了!






官方认证第三方服务团队  蒋逸凡(常德-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
来自  
状态  正常

级别  会员
#14»发布于2014-03-08 16:25

仅仅是基于局域网,有没有适合互联网的呢




awfixtdm  [个人空间]


注册  2011-08-18
发贴数  445
精华贴  2
原创贴  5
来自  
状态  正常

级别  版主
#15»发布于2014-03-10 11:52

一样用的,没分局域和互联。只要把shutdownoit.exe放到客户端dlll下就行了。






QQ:80240800


 21  1/2   1  2  >  >|  

登录后方可发贴


[ 电话: 0571-85462761 王先生 QQ: 124520435 加入软件QQ群 - 杭州 - 浙ICP备19051128号-1 网安 33010402003225 ]