python cmd以管理员执行指令(网卡切断与打开)

1.dos命令行-禁用和启用本地连接
https://blog.csdn.net/Q672405097/article/details/85321162?utm_source=app
启用和禁用本地连接的dos指令
禁用:

netsh interface set interface name=“以太网” admin=DISABLED

启用:

netsh interface set interface name=“以太网” admin=ENABLED

找到了dos指令,下一步就是如何使用python调用dos指令实现网络的切换,因为必须是在管理员方式下才可以,怎么执行呢?
2.windows下python脚本以管理员方式执行cmd指令
python运行cmd命令主要有两种形式
(1)os模块
OS模块调用CMD命令有两种方式:os.popen(),os.system(). 都是用当前进程来调用。

os.system # 是无法获取返回值的。当运行结束后接着往下面执行程序。用法如:OS.system("ipconfig").
  OS.popen   # 带返回值的,如何获取返回值。如
  p=os.popen(cmd)
  print p.read(). # 得到的是个字符串。

这两个都是用当前进程来调用,也就是说它们都是阻塞式的
(2)subprocess模块
运行原理会在当前进程下面产生子进程。

sub=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
  sub.wait()
  print sub.read()

但是这两个只是在非管理员模式下(并不清楚说的对不对)进行执行的,所以命令不能有效。如何才能在管理员权限下执行呢?
使用runas的/savecred参数
首先执行一次命令然后保存密码
runas /savecred /user:Administrator cmd

输入密码回车,密码就保存到了本机,下次可以直接使用runas而不用输入密码,再使用Python脚本进行调用即可。
但是这里遇到了一个麻烦,输入密码之后出错登录失败,用户账号限制。可能的原因包括不允许空密码,登录时间限制,或强制的策略限制。
解决方法:(参考文章
1、按WIN+R,调出运行框。WIN就是键盘上有个windows图标的那个键。在运行框输入 gpedit.msc ,并回车;

在这里插入图片描述
2、在弹出的窗口,展开左侧目录树至安全选项,如图。(计算机配置-Windows设置-安全设置-本地策略-安全选项);

在这里插入图片描述
4、在右侧策略处找到“账户:使用空白密码的本地账户只允许进行控制台登录”,此策略默认是已启用;

在这里插入图片描述
5、双击打开“账户:使用空白密码的本地账户只允许进行控制台登录”,将其改为“已禁用”,并确定,生效。再访问共享就正常了。

在这里插入图片描述
3.最终解决的方法我暂时使用的是两种
1.把python程序在cmd以管理员方式运行

以管理员方式打开命令提示符,然后切换到代码所在的目录下(自行百度),然后直行python 程序名字,此时程序里面对应的p=os.popen(cmd)都是以管理员权限下执行的。
我碰到了使用Anaconda import SSL DLL load failde:找不到指定模块这个问题

  File "C:\Users\Tf011\Anaconda3\Lib\ssl.py", line 98, in <module>
    import _ssl             # if we can't import it, let the error propagate
ImportError: DLL load failed: 找不到指定的模块。

解决方法:
在环境变量中加入Anaconda的三个路径(依照自己当初设置的路径):

D:…\lenovo\Anaconda3;
D:…\Anaconda3\Scripts;
D:…\Anaconda3\Library\bin;

2.runas /savecred /user:Administrator + “要执行的指令”
通过不断的尝试,才发现这样这个指令是可以运行的,具体的实现如下:

import os
lis = '"netsh interface set interface name="以太网" admin=enabled"'
t = "runas /savecred /user:Administrator"+' ' + lis
os.popen(t)

这里把它拆开的原因是,多个引号在一块容易出错(我是这样觉得),另外对于lis一定要注意字符串里面含有引号,所以外面有一个单引号,两者连接时注意要空格。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值