Python自动化测试中实现远程服务器管理

2 篇文章 0 订阅
2 篇文章 0 订阅

序:项目为B/S架构,提供的功能通过多个服务实现,当页面配置有变更时,需重启服务。

Python调用Win命令有3种方式:

    os.system('command')

    os.popen('command')

    subprocess('command',stderr,stdout,stdin,shell=True)

而远程管理也有几种实现方式:

    wmic /node:远程服务器 /user:用户 /password:密码  CMD命令

    winrm CMD命令

    PowerShell中CMDLET命令

因wmic、Winrm执行需配置各种权限,存在失败的风险,最后选用PowerShell方式。

# WMIC方式
def restartService(node='x.x.x.x', servicename='ServiceName'):
    # 重启服务
    ex = 'Method execution successful.'
    err = 'No Instance(s) Available.'
    s = os.popen('wmic /node:%s /user:user /password:password SERVICE where name="%s" call stopservice' % (node, servicename))
    sres = s.read()
    s.close()
    time.sleep(3)

    if ex in sres:
        # sys.stdout.write('Service Stop Successfully!')
        tsr = os.popen('wmic /node:%s /user:user /password:password SERVICE where name="%s" call startservice' % (node, servicename))
        ts = tsr.read()
        tsr.close()
        if ex in ts:
            # sys.stdout.write('\nService start successfully!')
            return True
        elif err in ts:
            # sys.stdout.write('Service not exit')
            return False
    elif err in sres:
        # sys.stdout.write('Service not exit')
        return False

以下为PowerShell实现:

# PowerShell实现
def ps(name='computername', sname='servicename'):
    import subprocess
    try:
        res = subprocess.run(["powershell.exe", "Invoke-Command -ComputerName %s -ScriptBlock {Get-Service -Name %s | Restart-Service}" % (name, sname)], stdout=subprocess.PIPE)
    except:
        return False
    else:
        if res.returncode == 0:
            return True

特记录之。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zljun8210

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值