Linux Shell 实现一键部署vmtools

news2024/11/16 20:34:23

VMware Tools 简介

VMware Tools 中包含一系列服务和模块,可在 VMware 产品中实现多种功能,从而使用户能够更好地管理客户机操作系统,以及与客户机操作系统进行无缝交互。

VMware Tools 具备以下功能:

  • 将消息从主机操作系统传递到客户机操作系统。
  • 将客户机操作系统作为 vCenter Server 及其他 VMware 产品的组成部分进行自定义。
  • 运行有助于实现客户机操作系统自动化运行的脚本。这些脚本在虚拟机的电源状态改变时运行。
  • 在客户机操作系统与主机操作系统之间同步时间。

一键安装vmtools 

  • 兼容Centos/Redhat 及复刻系列,ubuntu ,suse 
vi /vmtools_install.sh
#!/bin/bash
# -*- coding: utf-8 -*-
# Author: CIASM
# update 2023/10/11
# increase indent:Tab
# decrease indent:Shift+Tab
# install source vm-tools

<<!
# ubuntu To execute this script 
ln -sf bash /bin/sh
!

install_basics() {

# Check if the script is being run as root
if [ "$(id -u)" != "0" ]; then
  echo "This script must be run as root."
  exit 1
fi

  # Check the CentOS/Red Hat version
if [[ -f /etc/redhat-release ]]; then
    OS=$(cat /etc/*release* | grep "^NAME=" | cut -d'=' -f2- | tr -d '"')
    VERSION=$(cat /etc/*release* | grep -oE '[0-9]+\.[0-9]+' | head -n1)

  # Check the oralce Linux version
elif [[ -f /etc/oracle-release ]]; then
    OS=$(cat /etc/*release* | grep "^NAME=" | cut -d'=' -f2- | tr -d '"')
    VERSION=$(cat /etc/*release* | grep -oE '[0-9]+\.[0-9]+' | head -n1)

  # Check the Rock Linux version
elif [[ -f /etc/rocky-release ]]; then
  OS=$(cat /etc/*release* | grep "^NAME=" | cut -d'=' -f2- | tr -d '"')
  VERSION=$(cat /etc/*release* | grep -oE '[0-9]+\.[0-9]+' | head -n1)
  
  # Check the AlmaLinux version 
elif [[ -f /etc/almalinux-release ]]; then
  OS=$(cat /etc/*release* | grep "^NAME=" | cut -d'=' -f2- | tr -d '"')
  VERSION=$(cat /etc/*release* | grep -oE '[0-9]+\.[0-9]+' | head -n1)

  # Check the ubuntu version
elif [[ -f /etc/os-release ]]; then
	OS=$(cat /etc/*release* | grep "^NAME=" | cut -d'=' -f2- | tr -d '"')
    VERSION=$(cat /etc/*release* | grep -oE '[0-9]+\.[0-9]+' | head -n1)

  # Check the suse version
elif [[ -f /etc/SuSE-release ]]; then
    OS=$( cat /etc/*release* | grep "^PRETTY_NAME=" | cut -d'=' -f2- | tr -d '"')
    VERSION=$(cat /etc/*release* | grep -oE '[0-9]+\.[0-9]+' | head -n1)
	
  # Check the Debian version
elif [[ -f /etc/os-release ]]; then
  OS=$(cat /etc/*release* | grep "^NAME=" | cut -d'=' -f2- | tr -d '"')
  VERSION=$(cat /etc/*release* | grep -oE '[0-9]+' | head -n1)
	
  # Check the Fedora version
elif [[ -f /etc/fedora-release ]]; then
  OS=$(cat /etc/*release* | grep "^NAME=" | cut -d'=' -f2- | tr -d '"')
  VERSION=$(cat /etc/*release* | grep -oE '[0-9]+' | head -n1)

else
  echo -e "\033[31m This script only supports $OS $VERSION...\033[0m"
  exit 1
fi

# Check the vmtools version
if ! command -v vmtoolsd &> /dev/null; then
  echo -e "\033[32m Installing vmtools for $OS $VERSION...\033[0m"
  case $VERSION in
 
# CentOS/RedHat/oracle 7 install
    7.?)
	echo Installing basics...
	yum install -y http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
	yum install -y open-vm-tools
	install_all_vmtools
   ;;

# CentOS/RedHat/oracle/RockLinux/AlmaLinux 8 install 
    8.?)
	echo Installing basics...
	yum install -y http://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
	yum install -y open-vm-tools
	install_all_vmtools
   ;;

# CentOS/RedHat/oracle/RockLinux/AlmaLinux 9 install
   9.?) 
	echo Installing basics...
	yum install -y http://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
	yum install -y open-vm-tools
	install_all_vmtools
   ;;
   
  # ubuntu 20.04 Linux install
   20.04)
	echo Installing basics...
	sudo apt install -y open-vm-tools
	install_all_vmtools
   ;;

 # ubuntu 21 Linux install
   21.04|21.10)
	echo Installing basics...
	sudo apt install -y open-vm-tools
	install_all_vmtools
   ;;

 # ubuntu 22 Linux install
   22.04)
	echo Installing basics...
	sudo apt install -y open-vm-tools
	install_all_vmtools
   ;;
  
  # Debian 10, 11 , 12
  10)
	echo Installing basics...
	sudo apt install -y open-vm-tools
	install_all_vmtools
   ;;
   
   11)
	echo Installing basics...
	sudo apt install -y open-vm-tools
	install_all_vmtools
   ;;
   
  12)
	echo Installing basics...
	sudo apt install -y open-vm-tools
	install_all_vmtools
   ;;
   
   
  # Fedora 31,32,33
  36|37|38)
   	echo Installing basics...
	yum install -y open-vm-tools
	install_all_vmtools
   ;;

  # SUSE 12 install
  12.?)
	echo Installing  basics...
	sudo SUSEConnect -p sle-sdk/12.4/x86_64
	zypper in -y open-vm-tools
	install_all_vmtools
   ;;

  # SUSE 15 install
  15.?)
	echo Installing  basics...
	sudo SUSEConnect -p sle-sdk/15.3/x86_64
	zypper in -y open-vm-tools
	install_all_vmtools
   ;;
    *)
	
    echo -e "\033[31m Unsupported $OS $VERSION...\033[0m" 
    exit 1
    ;;
esac
	
    echo -e "\033[32m vmtools for $OS $VERSION successfully installed...\033[0m"
else
    echo -e "\033[33m vmtools for $OS $VERSION already installed...\033[0m"
fi

}

install_all_vmtools() {
echo "install vm-tools"
systemctl enable --now vmtoolsd.service

# start vmtools
systemctl start vmtoolsd

#check vmtools version
vmtoolsd -v | awk '{print $5}'

# check vmtoolsd service state
systemctl status vmtoolsd  | grep "Active" | awk '{print $3}' | tr -d "()"
}

main (){
	install_basics
}

main

执行安装

sh /vmtools_install.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1084270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年中国家用照明市场发展趋势分析:家用照明市场中智能产品提升显著[图]

2016-2019年我国家用照明行业迎来初步快速发展&#xff0c;2020-2021年受疫情影响增速稍微放缓&#xff0c;2022年&#xff0c;我国家用照明行业规模为362.8亿元&#xff0c;同比增长0.58%&#xff1b;预计2023年家用照明行业表现将有明显反弹&#xff0c;市场规模将达413亿元&…

DW网页作业成品下载后导入Dreamweaver如何新建站点及导出站点

很多学生下载了HTMLhttps://blog.csdn.net/qq_41101110?spm1011.2415.3001.5343后&#xff0c;想自己进行修改图文或者文字内容&#xff0c;或者修改网页文件名称。对于基础较差的同学&#xff0c;使用Dreamweaver新建站点导入作品后再修改&#xff0c;就更简单些了。 新建站…

【深度学习】MNIST手写数字数据集的分类识别

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

使用docker安装db2

使用docker安装db2 1. 前言1.1 关于docker的安装1.2 安装db2版本选择参考 2. 拉取镜像3. 启动镜像4. 进入容器&#xff0c;切换用户4.1 进入容器4.2 切换用户4.3 其他命令 5. 可视化工具DBeaver连接db25.1 连接5.2 简单使用 1. 前言 1.1 关于docker的安装 关于Linux上docker的…

一些常用的兼容性测试方法和技巧

兼容性测试是软件开发过程中的重要环节&#xff0c;但如何进行有效的兼容性测试是一个需要关注的问题。下面将介绍一些常用的兼容性测试方法和技巧。 首先&#xff0c;要确定兼容性测试的范围。根据软件的特点和用户的需求&#xff0c;确定需要测试的操作系统、浏览器、分辨率…

【vue3】实现数据响应式(ref、shallowRef、trigger、reactive、shallowReactive、toRef、toRefs)

一、ref、shallowRef、trigger ref支持所有类型 可以粗略理解为 ref shallowRef triggerRef 1、通过ref获取dom元素 <p ref"_ref">这是ref获取dom元素</p>import {ref,shallowRef, triggerRef} from vueconst _ref ref()console.log(_ref.value?.i…

【Linux】提权问题

目录 一、设置白名单 一、设置白名单 当我们在使用sodo的时候&#xff0c;会发现我们的普通用户是无法用这个指令的&#xff0c;这个是因为这个普通用户还没有在root下是白名单里的用户 接下来我们来看一下怎样设置白名单用户 在root下打开配置文件vim /etc/sudoers 找到第100…

[硬件基础]-555定时器-非稳态多谐振荡器配置

555定时器-非稳态多谐振荡器配置 文章目录 555定时器-非稳态多谐振荡器配置1、概述2、非稳态多谐振荡器的内部工作原理 我们已经在之前的文章中介绍了 555 定时器的单稳态和双稳态操作。 在本文中&#xff0c;我们将讨论第三种配置 - 555 定时器的非稳定模式。 我们将了解如何在…

Apache atlas 元数据管理治理平台使用和架构

1、前言 Apache Atlas 是托管于 Apache 旗下的一款元数据管理和治理的产品&#xff0c;目前在大数据领域应用颇为广泛&#xff0c;可以很好的帮助企业管理数据资产&#xff0c;并对这些资产进行分类和治理&#xff0c;为数据分析&#xff0c;数据治理提供高质量的元数据信息。…

远控项目02:项目的创建以及git的配置

&#x1f482; 个人主页:pp不会算法v &#x1f91f; 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 &#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 c/MFC远程控制项目系列文章 1、在github创建仓库 2、在本地创建一个空文…

Vue-2.3v-model原理

原理&#xff1a;v-model本质上是一个语法糖&#xff0c;例如应用在输入框上&#xff0c;就是value属性和input事件的合写。 作用&#xff1a;提供数据的双向绑定 1&#xff09;数据变&#xff0c;视图跟着变:value 2&#xff09;视图变&#xff0c;数据跟着变input 注意&a…

PostMan环境变量、全局变量、动态参数使用

一、环境准备 postmanmoco [{"description": "登录认证","request": {"uri": "/login","method": "post","forms": {"user": "admin","password": "a123…

CentOS 7下JumpServer安装及配置(超详细版)

前言 Jumpserver是一种用于访问和管理远程设备的Web应用程序&#xff0c;通常用于对服务器进行安全访问。它基于SSH协议&#xff0c;提供了一个安全和可管理的环境来管理SSH访问。Jumpserver是基于Python开发的一款开源工具&#xff0c;其提供了强大的访问控制功能&#xff0c;…

Qt应用开发(基础篇)——表格视图 QTableView

一、前言 QTableView类继承于QAbstractItemView类&#xff0c;提供了一个表格视图的模型。 视图基类 QAbstractItemView QTableView默认为Model/View实现。 //绑定view和model QStandardItemModel *model new QStandardItemModel(); ui->tableView->setModel(model);//…

手把手教你写一个JSON在线解析的前端网站1

前言 作为一名Android开发&#xff0c;经常要跟后端同事联调接口&#xff0c;那么总避免不了要格式化接口返回值&#xff0c;将其转换为清晰直观高亮的UI样式以及折叠部分内容&#xff0c;方便我们查看定位关键的信息。 一直以来都是打开Google 搜索json格式化关键字&#xf…

【无标题】期权交易的实际操作流程是什么?

期权可以进行双向交易&#xff0c;即投资者认为期权后期会上涨&#xff0c;则可以通过交易软件进行做多买入认购操作&#xff0c;如果认为它后期会下跌&#xff0c;则可以通过交易软件件进行做空买入认沽操作&#xff0c;下文介绍期权交易的实际操作流程是什么&#xff1f; 期权…

2023年中国手机回收量、手机回收价值及行业细分现状分析[图]

手机回收的主要去向包括再销售及环保降解两类。其中进行再交易的二手手机多为9成新及以上手机。二手手机最终去向主要为再销售及环保降解。 2016年以来&#xff0c;我国手机总体出货量持续下滑&#xff0c;2022年全年&#xff0c;国内市场手机总体出货量累计2.72亿部&#xff0…

【代码随想录】算法训练营 第一天 第一章 数组 Part 1

数组基础知识补充 1. 在leecode中&#xff0c;数组一般是以vector容器的形式出现的&#xff0c;虽然vector的底层实现是array&#xff0c;但严格来讲vector是容器&#xff0c;不是数组&#xff1b; 2. 数组元素的删除和增添都需要移动后续元素&#xff0c;而且在实现的角度上…

C++初阶 入门

目录 1.用C的方式写一个Hello World 2.命名空间 2.1什么是命名空间&#xff1f; 2.2使用命名空间 3.C的输入输出 前言&#xff1a;C初阶系列&#xff0c;每一期博主都会使用简单朴素的语言将对应的知识分享给大家&#xff0c;争取让所有人都可以听懂&#xff0c;C初阶系列…

跨境电商迎来全球5日达革命?菜鸟全球化再提速!

近年来&#xff0c;随着全球化进程的加速和跨境电商的蓬勃发展&#xff0c;物流速度成为了电商行业的竞争制高点之一。消费者不再满足于等待数周&#xff0c;甚至数月的国际快递&#xff0c;他们期望能够像本地购物一样迅速收到国际包裹。 在这一背景下&#xff0c;跨境电商物…