vmware 批量自动删除虚拟机脚本,可以设置白名单

最近因为要重搭容灾环境,之前部署了将近380台的虚拟机其中85%靠上需要回收掉,部分虚拟机需要保留(很烦哎.....),业务部门提供了需要保留的虚拟机的IP,然后保留的大概有60台左右吧(好烦呀),手动回收.....,这可不是俺的风格,来吧,脚本躁动起来吧(https://mianbao.cn.com/thread-358-1-1.html):

import os
import time
import pprint
from pysphere import VIProperty 
from pysphere.vi_task import VITask
from connect import vcenter_connection as con
from pysphere.resources import VimService_services as VI
from pysphere.vi_virtual_machine import VIVirtualMachine

s = con()

class VM_Del():
    
    def __init__(self,s):
        self.__s = s
        self.__vm = None
        self.__ip_path = os.path.join(os.path.dirname(__file__),‘ip.txt‘)
    
    
    def GetVmInfo(self):
        prope = [‘guest.ipAddress‘,‘name‘,‘summary.runtime.powerState‘,]
        dict_key = {‘guest.ipAddress‘:‘ip‘,‘name‘:‘name‘,‘summary.runtime.powerState‘:‘power‘}
        props = s._retrieve_properties_traversal(property_names=prope, obj_type=‘VirtualMachine‘)
        
        vm = {}
        one_vm = dict()
        
        for item in props:
            for p in item.PropSet:
                one_vm[dict_key.get(p.Name)] = p.Val
            vm[one_vm.get(‘name‘)] = {‘ip‘:one_vm.get(‘ip‘),‘power‘:one_vm.get(‘power‘)}
        print vm
        return vm
    
    
    def GetIpWhiteList(self):
        ip_list = list()
        with open(self.__ip_path) as file:
            all_ip_white_list = file.readlines()
            [ip_list.append(x.strip()) for x in all_ip_white_list]
            return ip_list
    
    def PowerDownVm(self,vm):
        self.__vm = self.__s.get_vm_by_name(vm)
        self.__vm.power_off()
        
    def Done(self):
        white_list = self.GetIpWhiteList()
        all_vm = self.GetVmInfo()
        for x,y in all_vm.items():
            if y.get(‘ip‘,None) in white_list:
                pass
            elif ‘WG_‘ in x:
                print x
                if y.get(‘power‘) == ‘poweredOn‘:
                    self.PowerDownVm(x)
                    print ‘ |--->Poeroff.....OK‘
                    time.sleep(5)
                    print ‘ |---->del.....start‘
                    self.DelVm()
                    print ‘ |----->del.........OK‘
                    time.sleep(10)
                else:
                    print ‘%s power status is %s‘ % (x, y.get(‘power‘))
        print white_list
    
    
    def DelVm(self):
        request = VI.Destroy_TaskRequestMsg() 
        _this = request.new__this(self.__vm._mor) 
        _this.set_attribute_type(self.__vm._mor.get_attribute_type()) 
        request.set_element__this(_this)
        ret = s._proxy.Destroy_Task(request)._returnval
        
        
        #Wait for the task to finish
        task = VITask(ret, s) 
        
        status = task.wait_for_state([task.STATE_SUCCESS, task.STATE_ERROR]) 
        if status == task.STATE_SUCCESS:
            print " |------>VM successfully deleted from disk" 
        elif status == task.STATE_ERROR: 
            print "Error removing vm:", task.get_error_message() 

            
if __name__ == "__main__":
    vm_del = VM_Del(s)
    vm_del.Done()

实验脚本,很粗糙,随后会优化,效果如下,脚本输出:
 
VC任务显示:

时间: 2024-10-09 08:08:41

vmware 批量自动删除虚拟机脚本,可以设置白名单的相关文章

Powercli批量创建删除虚拟机快照

注意事项: 1.客户端需要安装vmware powercli client 2.连接vcenter或esxi主机的用户需要具有连接和创建删除快照权限 1.创建虚拟机快照 #添加vmware module command Add-PSSnapin -Name *vmware* #填写连接相关信息,按要求输入vcenter/esxi 服务器ip 用户名 密码 $vcenterip = Read-Host "请输入vcenter/esxi服务器ip......" $domainname = 

如何设置白名单

要添加或删除白名单,请按以下步骤操作: 1.单击页面上方的"设置"链接,再点击右侧的 "反垃圾设置": 2.在白名单中,输入邮箱地址或域名(地址必须以[email protected]或者domain.com的格式.),点击"添加"按钮,然后点击"保存生效"按钮. 3.如果不需要收到"白名单"中邮箱地址发来的邮件,选中该邮箱地址,并点击"删除选中" 按钮,再选中"保存生效&qu

angularjs中关于跨域设置白名单

在config中注入$sceDelegateProvider服务使用resourceUrlWhitelist([])方法添加白名单 跨域时将method的属性设置为"jsonp"就可以访问了 app.config(["$sceDelegateProvider",function($sceDelegateProvider){ $sceDelegateProvider.resourceUrlWhitelist([ <span style="white-s

gitlab的rack-attack机制和如何设置白名单的记录

目标gitlab是使用源码安装的10.5中文版 大纲: gitlab rack-attack 机制的作用 如何启用和禁用gitlab的rack-attack机制,以及如何配置白名单 如果一个ip被错误地拦截,导致了不能访问,如何快速地恢复 如果gitlab工作在一个反向代理(或者是负载均衡器)的后边,会导致的问题和解决的方法 如何写出一个可以触发拦截机制的测试用例 正文: 1.gitlab rack-attack 机制的作用 gitlab的rack-attack机制是为了限制某个ip对gitla

KVM脚本批量添加删除虚拟机版本2

在原有的基础上,做些功能上的添加. 修改虚拟机的主机名 修改虚拟机的MAC 修改虚拟机的IP 虚拟机采用qcow2格式,使用qemu-img的backing_file技术,快速生成虚拟机 这样,虚拟机创建好后,便可以远程管理了. 第1版,请参考: http://5ydycm.blog.51cto.com/115934/1211630 第2版,create_delete_vm.py代码: #!/usr/bin/env python #coding:utf-8 ###################

VMware导入和删除虚拟机文件

原文地址:https://www.cnblogs.com/buffzqh/p/12299802.html

MySQL设置白名单教程

1 登录mysql mysql -h host -u username -p password 2 切换至mysql库 use mysql; 3 查看当前允许登录IP及用户 select Host,User from user; 4 删除不必要而表中存在的IP和用户 DELETE FROM user WHERE User='username' and Host='host'; (host值为"%"或空表示所有IP都可登录,一般来说此类行需要删掉) 5 增加需要而表中没有的IP和用户 G

Windows7,程序兼容助手:这个程序可能安装不正确(做注册表里设置白名单,软件自身的名字不能带setup)

Windows上有一个很奇怪的一个现象,一个exe只要名字里面带了setup\install之类的,打开exe后立即退出就会弹出下面的窗口. 解决方法: 方法一.更改exe的名字,去掉setup\install,即使是资源文件rc中的setup\install也要去掉. 方法二.在main函数入口处调用下面的函数,将当前exe写入Windows的“注册表白名单”中去,关闭时Windows就不会弹出兼容助手了. [cpp] view plain copy bool RegWritePca() {

SqlServer自动备份、自动压缩、自动删除旧备份

准备工具: SqlServer2008 WinRar 1.给SqlServer设置维护计划定时备份 这个操作比较简单,按向导新增维护计划即可. 2.自动压缩脚本 c:\Progra~2\WinRar\winRar.exe a D:\bak\database_buckup_%date:~0,4%_%date:~5,2%_%date:~8,2% d:\bak\database_*%date:~0,4%_%date:~5,2%_%date:~8,2%_*.bak 备份文件的格式是:database_b