python 自动创建Hype-V虚拟机脚本
安装模块
pip install pywinrm
脚本如下
#!/usr/bin/env python3
# coding=utf-8
# author:LJX
# describe:一键创建hype-v虚拟机
# createdate:2021.5.26
import winrm
class VM(object):
'''
# 1、查看winrm服务状态。默认没有启动 winrm enumerate winrm/config/listener
# 2、启动服务器(网络类型改为专有网络) winrm quickconfig
# 3、开启防火墙 netsh advfirewall firewall set rule group="Windows 远程管理" new enable=yes
# 4、启动 winrm quickconfig
# 5、查看 winrm enumerate winrm/config/listener
# 5、为winrm service 配置auth winrm set winrm/config/service/auth @{Basic="true"}
# 7、为winrm service 配置加密方式为允许非加密 winrm set winrm/config/service @{AllowUnencrypted="true"}
'''
def __init__(self):
self.host = "xxxx"
self.port = "xxxx"
self.user = "xxxxx"
self.passwd = 'xxxx'
self.linuxfile = r"xxxxxxx"
self.winfile = r"xxxxxx"
self.linuxPath = '''D:\{0}'''.format(self.linuxfile)
self.winPath = '''D:\{0}'''.format(self.winfile)
self.network = "wan"
self.wintest = winrm.Session('http://{0}:{1}/wsman'.format(self.host, self.port), auth=(self.user, self.passwd))
def exec_ps(self, commond,msg):
ret = self.wintest.run_ps(commond)
if ret.status_code == 0:
print(msg + "成功")
elif ret.status_code == 1:
print(msg + "失败")
print(str(ret.std_out, "utf-8"))
def add_vm(self, params):
hostname = params["ip"] +"-"+ params["projectName"]
path = "{0}:\{1}".format(params["diskPath"], hostname)
self.exec_ps(r"new-item -path {0} -type directory".format(path),"创建虚拟机目录")
# 2、
if params["sysType"] == "linux":
self.exec_ps(r'''copy-item {0} {1}'''.format(self.linuxPath, path),"复制系统")
self.exec_ps(
r"New-VM -VHDPath {0}\{1} -MemoryStartupBytes {2}GB -Name {3} -SwitchName {4}".format(path,
self.linuxfile,
params["mem"],
hostname,
self.network),
"创建虚拟机"
)
elif params["sysType"] == "windows":
self.exec_ps(r'''copy-item {0} {1}'''.format(self.winPath, path),"复制系统")
self.exec_ps(
r"New-VM -VHDPath {0}\{1} -MemoryStartupBytes {2}GB -Name {3} -SwitchName {4}".format(path,
self.winfile,
params["mem"],
hostname,
self.network),
"创建虚拟机"
)
self.exec_ps("Set-VMProcessor -VMName {0} -Count {1}".format(hostname, params["core"]),"设置核心数")
if params["otherDisk"]["enable"]:
otherDiskPath = "{0}\{1}".format(path,params["otherDisk"]["name"])
self.exec_ps("New-VHD -Path {0} -SizeBytes {1}GB".format(otherDiskPath,params["otherDisk"]["size"]),"创建磁盘")
self.exec_ps("Add-VMHardDiskDrive -VMName {0} -Path {1}".format(hostname,otherDiskPath),"虚拟机挂载磁盘")
if __name__ == "__main__":
vm_params = {
"projectName": "vmtest",
"ip": "xxxxxx",
"mem": 4,
"core": 4,
"disk": 100,
"diskPath": "F",
"sysType": "linux",
"otherDisk":{
"name": "disk1.vhdx",
"enable": True,
"size": 10,
}
}
vm = VM()
vm.add_vm(vm_params)
python 自动创建Hype-V虚拟机脚本的更多相关文章
- VMware 自动开多台虚拟机脚本
d:cd "D:\WinInstall\VMware\VMware Workstation"ECHO "start vm1"vmrun -T ws start ...
- 运维常用shell脚本一(系统指标巡检、自动创建用户、跳板机)
一.系统指标巡检脚本 #!/bin/bash menu(){ cat <<EOF +---------------------------------------------+ | 日常巡 ...
- 自动创建新序列号的Cookies脚本
已知一个网站在被访问的时候会读取电脑上存储的cookies 如果已经有cookie变量存在 则在存在的变量后按顺序增加新的序列 如电脑上有vst1变量的cookie了 那么新用户则自动创建为 vst2 ...
- 使用Vagrant创建多节点虚拟机集群
摘要: 在前一篇博客中,我介绍了使用Vagrant快速创建虚拟机,但是所创建的只是单个虚拟机.这篇博客将介绍使用Vagrant创建多节点虚拟机集群,可以作为Hadoop,Spark以及Storm等分布 ...
- python自动开发之(ajax)第二十天
1.Django请求的生命周期 路由系统 -> 试图函数(获取模板+数据=>渲染) -> 字符串返回给用户 2.路由系统 /index/ -> 函数或类.as_view() / ...
- python自动安装mysql5.7
python自动安装mysql5.7 python版本:python2.6 centos版本:centos6.9 mysql版本:mysql5.7.19 安装目录路径和数据目录路径都是固定,当然也可以 ...
- python自动安装mysql5.7【转】
#!/usr/bin/env python import os import sys import re base_dir = '/opt/software/mysql-5.7.17-linux-gl ...
- Python自动发布Image service的实现
使用Python自动发布地图服务已经在上一篇博客中讲到,使用Python创建.sd服务定义文件,实现脚本自动发布ArcGIS服务,下面是利用Python自动发布Image service的实现. -- ...
- 自动化工具 Python 调 Jmeter 执行参数化 jmx 脚本
烦透了jmeter输入如下鬼命令: Jmeter -n -t {tmpjmxfile} -l {csvfilename} -e -o {htmlreportpath} 尤其是{htmlreportpa ...
- 利用python自动生成verilog模块例化模板
一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...
随机推荐
- Stable Diffusion生成图片的参数查看与抹除方法
前几天分享了几张Stable Diffusion生成的艺术二维码,有同学反映不知道怎么查看图片的参数信息,还有的同学问怎么保护自己的图片生成参数不会泄露,这篇文章就来专门分享如何查看和抹除图片的参数. ...
- 报错 no currentsessioncontext configured!
no currentsessioncontext configured! 使用hibernate框架报错 配置了session工厂类,使用getCurrentSession();时候引起的,原因是cu ...
- Redis的设计与实现-总结
个人真的很喜欢这本书, 从对C语言一窍不通, 到发现C语言竟然如此简洁, 以至于我喜欢上了C! 对此前面的底层数据结构也读了几次, 大致整理了书里的内容, 后面的就粗略看了一下, 不再细细整理了. R ...
- Maven配置私有仓库
前言 当公司或个人具有自己独有的jar时,不想公开,一般就会放在自己的私有Maven仓库中,在项目中需要引用,此时就需要将公司私有仓库配置到maven当中,一般我们的maven配置的都是aliyu ...
- 好用的windows工具分享(20个)
1.截图.画图全屏截图快捷键:printSreen窗口截图快捷键:alt+printSreen自定义截图工具:win+shift+s画图快捷键:cmd - mspaint可配合画图工具实现图片的编辑, ...
- React-Chat移动端聊天实例|react18 hooks仿微信App聊天界面
基于react18+react-vant+zustand仿微信手机端聊天室ReactChat. react18-chat 一款使用最新react18.x hooks.zustand搭配react-va ...
- Java安全之Webshell免杀
Java安全之Webshell免杀 当遇到文件上传时,如果网站存在查杀软件,我们上传的一句话木马会被直接秒杀,这时候就需要做一下免杀,绕过查杀软件的检测. 思路 我的想法是先拆分,然后分别检验那些语句 ...
- Mybatis-Plus+Nacos+Dubbo进行远程RPC调用保姆级教程
默认你已经看过我之前的教程了,并且拥有上个教程完成的项目, 之前的教程 https://www.cnblogs.com/leafstar/p/17638782.html 1.在bank1的pom文件中 ...
- Linux ALSA 核心简单分析
Linux 内核 ALSA 框架通过向用户空间导出多个设备文件,以使用户空间程序可以与内核的音频子系统交互,可以访问音频硬件设备. Linux 内核 ALSA 音频框架初始化 Linux 内核 ALS ...
- android webview调用js(vue)问题记录
这几天和别人对接移动端,安卓平台,我们这边输出vue界面,安卓方反馈轮询的时候调用不到,具体原因也定位不到,只能确定前端这边没几句代码,应该没有问题,因此决定自己下载个android studio写个 ...