原创_给客户端添加重启系统后台服务功能脚本(基本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 发贴数  185 精华数  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 发贴数  7381 精华贴  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 
  |  
 
 |  
 
 |  
 
 
 |