Python-Windows定时关机与虚拟WIFI

简介

Python是目前较为流行的胶水语言,一般用于网络编程、系统应用、科研计算等全方位领域,是云计算开源框架OpenStack的主要开发语言。

Python的功能里有一个os模块来衔接windows的命令行工具,可以实现过去在DOS环境下要执行的各种功能。这次的范例是实现一键执行定时关机以及虚拟Wifi热点架设任务,以便未来不需要再敲命令,直接按习惯去执行需要的功能。


定时关机原理

首先看一下Windows的定时关机任务。为了实现它,一般流程是先按Win+R启动运行框,输入cmd进入命令行工具。如果要定时一小时关闭电脑,也就是3600秒,需要在控制台输入下面的指令:

shutdown -f -s -t 3600

要是改变主意不想定时关机了,就再次输入:

shutdown -a

虚拟WIFI架设

然后再看一下用电脑架设虚拟Wifi热点,这里利用的是windows自带的功能,但是也要在windows命令行控制器里执行对应的指令:

netsh wlan set hostednetwork mode=allow ssid=VirtualHotPort key=43215678
netsh wlan start hostednetwork

前一条设置了虚拟wifi的使能、SSID和密码,第二条启动了虚拟wifi,如果要关闭使用下面一条命令:

netsh wlan set hostednetwork mode=disallow

也就是把上面那条的allow改为了disallow并去掉了SSID和密码,这样这个wifi就不会出现了。


Python的作用

我们习惯于C语言系统常用的循环、分支、判断、计算等语法,但是要保存这些执行命令必须要新学习批处理程序,对新手而言增加了很大的时间成本。例如我们要改变定时关机的时间,需要学习下面的语法:

set /p choice=请输入时间(分钟):
if %choice%==undo shutdown /a
set /a minute=%choice%*60
shutdown -f -s -t %minute%

这里的变量choice和minute相当的让人捉急,对以C语言为学习基础的同学很不友好。因此我们要用Python的os模块来进行一次大换血。它里面已经集成了Windows命令行调用函数,可以直接在Python里面处理好字符串、数字等内容,再嵌入到命令中去。这样的好处是我们不用再去学习Windows批处理程序的各种逻辑语法。

Python执行Windows命令行功能只需输入如下指令就够了:

import os      # 导入os模块
os.system(cmd) # 执行命令行指令

为了替换上面minute这个变量的违和感,我们用Python就可轻而易举地实现:

cmd = 'shutdown -f -s -t ' + str(time * 60)
os.system(cmd)

在cmd的参数位置直接输入对应的命令字符串,就可不启动一系列复杂的命令行指令,还可以保存在代码里免去下去敲键盘的时间。


完整代码

#coding=utf-8    # 必须用utf8保存中文字符

import os

def Shutdown(time = 30):
    if time == 0:
        cmd = 'shutdown -a'         # 取消关机任务
    else:
        cmd = 'shutdown -f -s -t ' + str(time * 60)
    print os.system(cmd)


def CreatWifiAp(mode = 'allow' , ssid = 'VirtualHotPort', key = 123456):
    if mode == 'disallow':
        cmd = 'netsh wlan set hostednetwork mode=' + mode
        print os.system(cmd)
    elif mode == 'allow':
        cmd = 'netsh wlan set hostednetwork mode=' + mode + ' ssid=' + ssid + ' key='+str(key)
        print os.system(cmd)
        print os.system('netsh wlan start hostednetwork')

if __name__ == "__main__":
    print '1: 定时关机任务\n2: 架设虚拟WIFI热点'
    TaskNumber = input(r'请输入序号:')
    if TaskNumber == 1 :
        print r'输入0可取消定时关机任务'
        Shutdown(input(r'输入定时分钟数:'))
    elif TaskNumber == 2:
        print r'输入disallow关闭Wifi热点'
        print r'输入allow开启热点'
        mode = input('请输入命令:')
        CreatWifiAp(mode)

使用说明

使用时首先会弹出下面的提示,命令行提示输入序号时,输入1可以跳转到定时关机任务,输入2可以跳转到架设虚拟WIFI热点任务。

1: 定时关机任务
2: 架设虚拟WIFI热点
请输入序号:

在定时关机任务提示输入定时分钟数时,设置一个非0的数可启动关机倒计时,单位以分钟计,命令行执行如下:

1: 定时关机任务
2: 架设虚拟WIFI热点
请输入序号:1
输入0可取消定时关机任务
输入定时分钟数:60

如果要取消定时关机任务,直接输入0函数会去执行对应的命令:

1: 定时关机任务
2: 架设虚拟WIFI热点
请输入序号:1
输入0可取消定时关机任务
输入定时分钟数:0

架设虚拟WIFI时,提示输入命令是打入‘allow’就能启动,注意这个是Python语法里的字符串,因为在Shell下执行的是Python的语法,而不像C++控制台默认输入的是字符串,所以要注意不能少加引号。

1: 定时关机任务
2: 架设虚拟WIFI热点
请输入序号:2
输入disallow关闭Wifi热点
输入allow开启热点
请输入命令:'allow'

如果要关闭WIFI,就打‘disallow’即可:

1: 定时关机任务
2: 架设虚拟WIFI热点
请输入序号:2
输入disallow关闭Wifi热点
输入allow开启热点
请输入命令:'disallow'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值