日期:2023-01-24 阅读量:0次 所属栏目:智能科技
摘 要:常规的远程控制能实现单一主控计算机对单一被控计算机的远程管理和维护,而广播式的远程计算机可以实现一个主控端对多台被控端的控制操作。本系统为解决机房中硬盘保护卡、网络还原精灵、无盘系统等维护工具功能缺陷而设计,以降低机房管理中大批量计算机的软件的安装、注册、测试等工作量为目标,实现一台计算机控制多台软件安装、注册、测试可以在多台计算机中同步执行。
关键词:远程控制;广播;Au3
1.引言
在机房管理中,为了方便维护和管理,我们会经常使用一些软硬件作为辅助工具,常用的有硬盘保护卡、网络还原精灵、无盘系统。这些工具给我们的机房管理带来了很大的方便,些工具的设计都是将一台母机的所有数据同步到其它机器中,这样可以让所有机器的数据与母机基本一致,并允许机器的计算机名、IP地址可以自动分配,这样可以达到其全部主机都能正常运行的效果。但是,由此也产生一些问题,具体表现在,如果软件安装、注册、测试过程中,我们可能要让部分机器的某些输入与母机不一致。例如在某些软件注册中,序列号根据主机硬件机器码相关。而每台机器的机器码不相同,所以,注册相息也会有所不同。这样就要求我们在每台机器上输入不同的序列号来保证软件能成功注册、正常运行。而这方面的工作量是很大的,维护成本高。
2.相关技术
常规意义上的远程控制是通过网络联通需被控制的计算机,将被控计算机的桌面环境显示到主控计算机的显示器上,主控端通过操作主控计算机的输入设备实现对被控计算机进行配置、软件安装等工作。
广播是指将信息发送到网上所有的节点。广播在本系统的应用主要是将指令发送到各客户机中,使客户机取得操作指令,交由客户机程序执行。
Au3脚本是AutoIt3 Windows自动安装脚本语言。AutoIt 是一种自动控制工具。它最初被设计用来自动完成安装那些其它方法不能自动安装的软件。 Au3脚本可以获取Windows控件上的信息,并且通过模拟鼠标键盘实现对这些控件的操作而不必担心操作动作落空。
还原卡、网络还原精灵、无盘系统等目前并不能实现需要对不同主机配置不同信息的软件安装,如活动目录的安装;软件注册需要根据机器码生成,如3DMAXS的注册;软件测试需要对测试主机所输入的帐户信息不允许重复,如全国计算机应用等级考试系统的测试。为了更好地解决这一类问题,是本系统的设计目标。
3.系统体系结构
因为要通过控制鼠标键盘等操作计算机,本系统采用实现CS模式实现。
服务器端(主控端)主要通过Au3脚本对主控计算机的键盘鼠标等输入设备的操作进行捕获、经过解析和编码,连同捕获到的Windows控件信息经过通信模块一同广播到受控客户端上。
客户端(被控端)主要功能是接收服务器端发送过来的信息进行解码、分析并对控件信息所对应的控件模拟鼠标键盘执行相对应的操作。有些操作我们可能需要获取每台计算机单独的MAC地址、IP地址、计算机名、机器码等,然后根据这些获取到的信息进行一定的编码,本系统也提供了很好的支持。使得在软件安装、软件注册、及软件测试时能根据需要填写对应的经过编码的信息。达到不同软硬件,输入信息
本系统的服务器端向客户端发送的数据仅包括鼠标、键盘操作的信息和Windows控件信息,并不发送桌面视图数据。客户端看到的仍是客户机自身的桌面,客户机对获取到服务器发送的信息进行翻译,实现自动操作的目的。
4.功能模块设计与实现
服务器端 服务器端的功能主要有:鼠标键盘输入识别模块、Windows控件识别模块、MAC、IP、计算机名、机器码识别及编码模块、软键盘模块、通信模块、文件传输模块、屏幕墙模块、快捷命令操作模块。
客户端 客户端主要是解析并执行服务器端发送过来的操作编码、通信、接收文件等功能。
远程控制主要流程设计分析
主控端键盘输入捕获实现
If (($keycode > 64) And ($keycode < 91)) _ ; a - z
Or (($keycode > 96) And ($keycode < 123)) _ ; A - Z
Or (($keycode > 47) And ($keycode < 58)) Then ; 0 - 9
$buffer &= Chr($keycode)
Switch $buffer
Case "Jon"
ToolTip("What can you say?")
Case "AutoIt"
ToolTip("AutoIt Rocks")
EndSwitch
ElseIf ($keycode > 159) And ($keycode < 164) Then
Return
ElseIf ($keycode = 27) Then ; esc key
Exit
Else
$buffer = ""
EndIf
被控端键盘解析模拟实现
Local $tKEYHOOKS
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Then
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndIf
If $wParam = $WM_KEYDOWtN Then
EvaluateKey(DllStructGetData($tKEYHOOKS, "vkCode"))
Else
Local $flags = DllStructGetData($tKEYHOOKS, "flags")
Switch $flags
Case $LLKHF_ALTDOWN
ConsoleWrite("$LLKHF_ALTDOWN" & @CRLF)
Case $LLKHF_EXTENDED
ConsoleWrite("$LLKHF_EXTENDED" & @CRLF)
Case $LLKHF_INJECTED
ConsoleWrite("$LLKHF_INJECTED" & @CRLF)
Case $LLKHF_UP
ConsoleWrite("$LLKHF_UP: scanCode - " & DllStructGetData($tKEYHOOKS, "scanCode") & @TAB & "vkCode - " & DllStructGetData($tKEYHOOKS, "vkCode") & @CRLF)
EndSwitch
EndIf
5.结束语
本系统主要应用于需要同时对大量计算机进行管理和维护的计算机机房。可以实现对还原卡、网络还原精灵、无盘系统等暂时不能提供解决方案的软硬件工具提供支持与补充。同一机房中,可能存在部分机器的硬件与主控端配置不同,如显示器分辨率不一致,可能会导致鼠标的部分操作可能出现空操作,因而无法与主控端同步。因此,在使用本系统前,必须保证所有被控端与主控端一致。
上一篇:关于网络危机传播模式的建构