温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-02 00:35:29 来源:网络 阅读:2299 作者:面包屑 栏目:开发技术

最近因为要重搭容灾环境,之前部署了将近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()

实验脚本,很粗糙,随后会优化,效果如下,脚本输出:
vmware 批量自动删除虚拟机脚本,可以设置白名单 
VC任务显示:
vmware 批量自动删除虚拟机脚本,可以设置白名单 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI