• 迁移VMWARE虚拟机到PROXMOX脚本(转)


    原文:

    https://r00t.dk/post/2022/06/19/convert_esxi_to_proxmox_ve_7_script/

    参考PROXMOX说明:

    https://pve.proxmox.com/wiki/Migration_of_servers_to_Proxmox_VE#VMware

    先准备原材料,下载OVF工具:

    https://developer.vmware.com/web/tool/4.4.0/ovf

    执行脚本 import_esxi.sh 如下:

    #!/bin/bash
    
    EXE=/tank/tools/ovftool/ovftool
    RED='\033[0;31m'
    NC='\033[0m' # No Color
    
    TYPE=""
    TEMP="/tmp"
    HOSTNAME=""
    USERNAME="root"
    VMNAME=""
    DESTINATION=""
    VMX=""
    VMID=""
    CONFIRM=""
    CLEAN=""
    LOG=""
    
    CheckArguments()
    {
      while [[ $# -gt 0 ]]; do
      case $1 in
        --online)
          TYPE="ONLINE"
          shift
          ;;
        --offline)
          TYPE="OFFLINE"
          shift # past argument
          ;;
        --temp)
          TEMP="$2"
          shift # past argument
          shift # past value
          ;;
        --vmx)
          VMX="$2"
          shift # past argument
          shift # past value
          ;;
       --hostname)
          HOSTNAME="$2"
          shift # past argument
          shift # past value
          ;;
       --vmid)
          VMID="$2"
          shift # past argument
          shift # past value
          ;;
    
       --username)
          USERNAME="$2"
          shift # past argument
          shift # past value
          ;;
       --destination)
          DESTINATION="$2"
          shift # past argument
          shift # past value
          ;;
       --yes)
          CONFIRM="YES"
          shift # past argument
          ;;
       --log)
          LOG="$2"
          shift # past argument
          shift 
          ;;
       --clean)
          CLEAN="YES"
          shift # past argument
          ;;
    
        --*)
          echo "Unknown option $1"
          exit 1
          ;;
      esac
    done  
    }
    
    Write()
    {
      echo -e "$1"
    }
    
    Usage()
    {
    echo -e "${NC}"
    cat << EOT
    ESXi -> Proxmox helper script
    Simplifies import/export into a single command
    
    Usage: $1 <arguments>
    
    Arguments:
    --online                    : For direct online import from ESXi
    --offline                   : For import of vmdk from filesystem
    --temp <path>               : Where to store temporary files before
                                  import into proxmox - defaults to /tmp if not provided
    --vmx <vmx>                 : Full path to vmx file
    --hostname <hostname>       : hostname for esxi server
    --username <username>       : username for esxi - defaults to root if not provided
    --vmname  <vmname>          : Name of VM as its presented in ESXi
                                  - if name contains spaces enclose it in quotes
    --destination <storage id>  : ID of destination storage inside proxmox
    --vmid <vmid>               : Destination ID of vm when its imported. Must be unique
    --yes                       : Assume yes to all questions
    --log <path>                : Full path to log file - if none is provided, no logging is done
    --clean                     : Delete ovf file after import into proxmox
    
    Examples:
    
    $0 --offline --temp /tmp --vmx '/mnt/data/esxi/my\ vm/my\ vm.vmx' --destination vms --vmid 300
    
    $0 --online --temp /tmp --hostname vms.root.dom --username john --vmname 'my vm' --destination vms --vmid 300
    
    EOT
    }
    
    if [ ! -f $EXE ]
    then
      Write "$EXE does not exist"
      exit 2
    fi
    
    if [ "$#" -eq "0" ]
    then
      Write "${RED}Missing arguments"
      Usage $0
      exit 1
    fi
    
    CheckArguments $@
    
    MISSINGARGS=""
    
    if [ "$TYPE" == "" ]
    then
      MISSINGARGS="\n--offline or --online"
    fi
    
    if [ "$DESTINATION" == "" ]
    then
      MISSINGARGS+="\n--destination"
    fi
    
    if [ "$VMID" == "" ]
    then
      MISSINGARGS+="\n--vmid"
    fi
    
    if [ "$MISSINGARGS" != "" ]
    then
      Write "Missing required arguments:"
      Write "$MISSINGARGS"
      exit 3
    fi
    
    
    if [ "$TYPE" == "OFFLINE" ]
    then
      Write ""
      Write "Ready to import"
      Write "-------------------------------------------------------------"
      Write "Temporary storage   : '$TEMP'"
      Write "VM Storage          : '$DESTINATION'"
      Write "VMX Path            : '$VMX'"
      Write "Destination VM ID   : '$VMID'"
      Write "-------------------------------------------------------------"
       
    VMXFILE=$(basename $VMX)
    VMNAME=$(basename -s .vmx $VMX)
    #  echo "Source vmx:$VMXFILE"
    #  echo "Source name:$VMNAME"
    
      if [ "$CONFIRM" == "" ]
      then
        Write ""
        read -p "Export vm to ovf format? (y/n)" -n 1 -r REPLY
        Write ""
        if [ "$REPLY" != "y"  -a "$REPLY" != "Y" ]
        then
          exit 10
        fi
      fi
      Write "Exporting $VMNAME to $TEMP"
      Write "Eecuting '$EXE $VMX $TEMP'" 
      ARGS=""
      if [ "$LOG" != "" ]
      then
        ARGS="--X:logLevel=verbose --X:logFile=$LOG"
      fi
      $EXE $ARGS --noNvramFile --lax $VMX $TEMP 
    
      Write ""
      Write "Export complete"
      Write "OVF file should be located in folder $TEMP/$VMNAME/"
      Write ""
      if [ "$CONFIRM" == "" ]
      then
        Write "VM $VMID is ready to be imported from ($TEMP/$VMNAME/$VMNAME.ovf)"
        Write ""
        read -p "Import VM $VMID to proxmox? (y/n)" -n 1 -r REPLY
        Write ""
        if [ "$REPLY" != "y"  -a "$REPLY" != "Y" ]
        then
          exit 10
        fi
      fi
    
      Write "Importing VM '$VMID' ($TEMP/$VMNAME/$VMNAME.ovf) to storage '$DESTINATION'"
      Write ""
      qm importovf $VMID $TEMP/$VMNAME/$VMNAME.ovf $DESTINATION
    
      if [ "$CLEAN" == "YES" ]
      then
        rm -rf $TEMP/$VMNAME
      fi
    fi
    
    exit 0

    使用方法:

    ./import_esxi.sh --offline --temp /tmp --vmx '/mnt/data/esxi/my\ vm/my\ vm.vmx' --destination vms --vmid 300
    
    ./import_esxi.sh --online --temp /tmp --hostname vms.root.dom --username john --vmname 'my vm' --destination vms --vmid 300
  • 相关阅读:
    vmware centos 共赏目录不显示
    小程序上拉刷新
    chrome json接口数据 插件
    滚动条滚动事件
    smarty循环item命名规范
    css实现梯形样式(含有border)
    设置行高并不能垂直居中
    图片翻转交互效果
    smarty文章字符截取
    css动画 transition
  • 原文地址:https://www.cnblogs.com/d9394/p/16683145.html
Copyright © 2020-2023  润新知