远程开关机程序

标签: 开关 程序 | 发表时间:2011-10-30 10:17 | 作者:看那边的人 L
出处:http://www.cnblogs.com/

      背景:有一个营业厅很大,有两层,大致拥有十多台客户体验机,每台体验机其实都是一台电脑,其中主机集中放在后台的机房里,显示器和鼠键在前台,操作系统安装有美萍软件。这样就产生了一个日常问题:每天都需要到机房里把每台电脑逐个开机,下班后有需要每台电脑逐个解锁美萍然后关机(当然不排除拉电闸这种高效方法)。在这种情景下就萌生了要一个远程开关机的程序这么个需求。

首先说关机这事吧。这个实现起来途径很多,难度不大。例如windows系统便自己拥有允许远程关机这么的一个命令:

shutdown [/m \\computer]

shutdown命令允许向远程计算机发送关机指令,当然需要远程计算机端授权允许才行,如何授权?可以在组策略里找到相关选项;其次,就是使用软件关机命令,使用软件实现调用系统的api从而实现关机,这个为代码实现方法;还有就是可以使用批处理的at命令,执行计划任务,当到达下班时间便自动关机。

最后我选择了第二种,软件实现方法。排除第一种方法,是对于系统完整性和对部署机的不了解决定的,在程序正式做好投入使用之前我是没到现场见过那些体验机的,即我对目标机器完全不了解,系统是否为精简版、登录需要密码不?其次在技术研究的时候,使用了2台笔记本做实验,发现有一台无法实现关机,问题一定是处在系统配置及自身上,但是作为非专业windows维护人员,又无法通过更改配置解决问题。要是营业厅也出现这样的机器无法解决就不好了;第3中方法就太简单了,配置好计划任务后下班时间自动关机,但是领导不采纳,估计就是觉得它缺乏控制力。

开机,这个问题已开始觉得比较麻烦,后来发现这个非常容易,因为网卡正好具备了一个叫做“Wake On LAN”的功能,简单的说一下,“wake on lan” 原理。首先需要bios支持,打开bios设置,大概在电源管理里把wake on lan 设置为 enable 使能。然后向欲开机的的主机的子网发送一个广播包,包的内容为:6个“FF"+16个目标主机网卡地址。例如目标主机的mac地址是“00010203040506”,那么这个包的内容就是

FFFFFFFFFFFF0001020304050600010203040506000102030405060001020304050600010203040506

0001020304050600010203040506000102030405060001020304050600010203040506

0001020304050600010203040506000102030405060001020304050600010203040506

00010203040506

注意中间没有回车。

将以上数据以udp方法发送到7或者9端口上。这样便实现了远程开机功能。

       开机和关机的技术点就这么个解决方法。接着再说说界面问题,界面是个大问题,不知道是不是由于要把这个软件作为营业厅提高工作效率的创新工程,要求界面一定要好看,无奈经过几番修改仍达不到领导理想中的界面,请领导描述具体外观要求,又只说“要漂亮”。幸得时间有限,改到最后限期不满也得接受了。

GUI集设计和控制为一体,通过工具栏里新增布局面板和往布局面板里新增电脑,鼠标自由拖动面板和电脑的位置。右键设置参数,可自定义面板颜色和文字,通过高亮度电脑表示该主机ping得通。

界面截图

 

 

如果有兴趣了解的话,在下一篇文章再具体介绍代码实现方式。

 应楼下要求,代码打包  ,代码分析要下次

http://files.cnblogs.com/topdog/WakeAndShutdown.zip 

作者: 看那边的人 发表于 2011-10-30 10:17 原文链接

评论: 9 查看评论 发表评论


最新新闻:
· Nook Color 2即将杀到,只要200美元(2011-10-30 15:22)
· WINDOWS 8 可能无法完全卸载 IE 10(2011-10-30 15:21)
· HTC王雪红:设计是最重要的(2011-10-30 15:19)
· 三星将在明年推出可弯曲显示器(2011-10-30 15:18)
· 中国厂商再次抢先 计划移植Windows 8到手机(2011-10-30 15:17)

编辑推荐:博问,帮您解决IT难题

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库

相关 [开关 程序] 推荐:

远程开关机程序

- L - 博客园-首页原创精华区
      背景:有一个营业厅很大,有两层,大致拥有十多台客户体验机,每台体验机其实都是一台电脑,其中主机集中放在后台的机房里,显示器和鼠键在前台,操作系统安装有美萍软件. 这样就产生了一个日常问题:每天都需要到机房里把每台电脑逐个开机,下班后有需要每台电脑逐个解锁美萍然后关机(当然不排除拉电闸这种高效方法).

Android 应用程序

- - CSDN博客推荐文章
Android 应用程序由四个模块构造而成:Activity、Intent 、Content Provider 、Service. 下面简单介绍一下如下模块的含义:. 1、Activity  "活动". 一个Activity就是单独的屏幕,每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口并对事件作出响应.

Linux程序调试

- - C++博客-首页原创精华区
Linux下的段错误产生的原因及调试方法    原文地址: http://www.upsdn.net/html/2006-11/775.html .    参考地址: http://www.cnblogs.com/khler/archive/2010/09/16/1828349.html .

Cppentry程序开发

- -
最近修改公司线上kafka集群配置然后直接kill掉进程来重启集群发现所有生产者都无法写入数据导致丢了数据,栽了一个大坑,接下来的工作肯定是补坑找原因,就分享一下. 系统环境说明:kafka版本为0.8.1.1,kafka集群配置为10.12.0.23:2181,10.12.0.24:2181,10.12.0.25:2181/kafka,因此在zookeeper中的根路径为:/kafka.

普通程序员、文艺程序员、2B程序员

- 可可 - 宇宙的心弦
希望能引起广大苦逼的正在学或者已经学过c++人的共鸣和会心一笑吧. 如何辨别自己在现实还是虚拟世界.

开关便利贴

- Hua - 设计|生活|发现新鲜
记性不好有健忘症的童鞋,会不会有时候连查看便利贴这样的事情都会忘记,急急忙忙收拾完行头出门后才发现忘记这忘记那. 现在有了这款开关便利贴,把重要的事情都记录其中,固定在进户门的开关上. 每次出门进门的时候就能第一眼看到,再不会延误重要事情. 只是那个厚度会不会影响灯的开关. 「设计,生活,发现新鲜」在新浪微博,更即时地获读更新,更直接地交流沟通.

如何面试程序员?

- bluesnail - 阮一峰的网络日志
你要面试一个程序员,应该问他什么问题. 有人在Hacker News的讨论区里,请求指点,怎么才能在面试中发现合格的人. 众人纷纷出主意,有很多高质量的回帖,我觉得挺有启发,就整理出了下面这篇文章. 首先,最重要的是,你自己一开始就应该想清楚:. 哪些途径和方法可以发现这样的人. 只有明确这些根本性的问题,才能正确高效地完成面试.

从流水程序到SOA

- Allen - 阿朱=行业趋势+开发管理+架构
咱就从函数代码开始谈起,更史前的Goto和汇编代码咱就不谈了. 函数和变量写多了,自然也就发现有些函数和变量互相粘在一起很高耦合,而与其它的一些却没多达关系,于是为了显性化让其他的开发人员知道哪些函数和变量确实关联性很紧密,于是创造了类. 面向对象在80年代的国外代码开发界颇为流行. 但接口思想的风潮在90年代刮起了.

程序员的本质

- Allen - 译言-电脑/网络/数码科技
来源What do programmers really do?.   很多人(包括我岳母)认为计算机变得如此智能,所以在不久的未来将不再需要程序员. 另外一些人认为程序员是天才,他们在电脑前能不断地解决复杂的数学难题. 甚至不少程序员对他们是做什么的都没有清晰的概念.   在这篇文章中,我想给不知情的人解释一下程序员到底是做什么的:.