Exsi主机判断UPS状态自动进行关机

原文地址:https://blog.csdn.net/PhoenixNzd/article/details/79286887?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

小公司很少有能力购买大型的UPS,但是绝大多数的小品牌UPS,都只有自己的监控程序,一般都是运行在xp系统上的,很少有能直接支持exsi的,这就有个问题,如何才能让exsi主机在断电的时候自动的进行判断,然后按照设定的顺序依次关闭虚拟机然后自己关机以保护硬盘数据,这就成了一个问题

解决思路

1. 在exsi上运行一个xp虚拟机,然后将ups的usb连接至exsi主机,并映射此usb设备至这台xp虚拟机

2. 在这台xp虚拟机上安装ups自带的监控软件,并设置如果市电断电超过2分钟,这台虚拟机就自动关机

3. 在exsi上运营一个脚本,每隔3分钟就ping一次这个xp虚拟机,如果发现失败了,就说明这个虚拟机关机了,说明市电断电,那么开始依次的执行其他虚拟机的关闭命令,并且关闭此Exsi主机

 

实际操作流程(参考)

1. 在Exsi上安装xp虚拟机(最小配置即可)和UPS监控程序,这里跳过,每个人购买的UPS品牌不同,按照说明书设置即可。

2. 用vSphere登录Exsi主机,打开SSH功能

 

打开之后,用PuTTY登录, (可以在很多地方找到下载)

使用root账户登录

登录之后,会用到下面的命令

ls   //这个是列出当前目录下的文件

cd 目录名   //进入某一个目录

现在就利用上面两个命令,进入磁盘目录

cd vmfs/volumes

进入这个目录之后,后面的每个人应该就不一样了,这个时候需要使用 ls 命令

我这个机器,可以看到下面这些内容,其中这个比较亮的字,就是存储,再次使用cd命令进入这个目录

cd datastore1/

可以看到进入之后,目录显示的是上面那个字符串,这个不用管他,进来了就行。然后再次使用 ls 命令,看看这个目录下面都有啥

可以看到,这个存储下面,是我们在这台Exsi主机上运行的一些虚拟机,(忽略其他的几个,关注ups目录)

这个“ups”目录是我们目前需要建立的,我这个是因为已经弄好了,所以会有这个目录,一般情况下是没有的。

使用  

mkdir ups

”这个命令来建立一个ups文件夹,然后用  cd ups 进入此文件夹

进入之后,我们需要建立3个文件,我分别说明一下他们三个都是什么

apc.sh   //这个是一个可以执行的脚本,作用是判断xp虚拟机是否可以ping通,如果不行,就按照这个脚本里面的内容执行exsi的关机操作

ups.log  //这个是日志文件,记录apc.sh这个脚本的执行的情况,方便日后查看到底是什么时间断电的

ups_shouhu.sh  //这是一个守护,目的是判断apc.sh是否在运行,如果没有,就执行它

在建立这些文件之前,我们需要先获取一些信息,需要知道当前主机都运行了哪些虚拟机,以及他们的编号都是多少

 

vim-cmd vmsvc/getallvms  //列出当前主机所有的虚拟机


看到类似于上面这个结果,这里面是你当前所有这个主机上的虚拟机,前面的Vmid就是他们的编号,记下来这个编号,后面会用到

 

好了,下面开始依次建立这三个文件

在exsi下建立文件,需要用到 vi 这个命令(这是个linux下的文本编辑器,不展开说了,想要详细了解的话自己去百度即可,这里仅仅介绍用得到的功能)

用vi建立文件,命令是下面这个

 

vi apc.sh

 

输入上面这个之后,就会启动一个vi编辑器,这个时候千万别蒙,因为从现在开始,你的键盘的反馈和之前是完全不一样了,所以别随便按任何键。

我下面这个文件已经编辑完了,看上去有内容,如果是第一次建立这个文件,实际上应该是空的,会在屏幕一侧看到全是那个“~”符号

这个时候你需要首先按键盘上的“Insert”按键一次,注意看这里,现在是“-”,当你按了“Insert”他就变成“I”了。当变成“I”的时候,意思就是可以开始编辑了。这个时候鼠标是不管用的,需要完全使用键盘的上下左右来操作

拷贝下面的这段代码,到记事本,然后需要根据你自己的实际情况进行一些编辑,我尽量在每一行代码下面都做了详细的说明, 在exsi的shell脚本中, #后面的就是注释,所以下面的代码中,所有#开头的,就是注释了。

 

 
  1. #!/bin/sh
    while
    ping -c 1 192.168.0.4 > /dev/null #这个ip地址是你运行xp的那台虚拟机的ip地址,需要改成你自己的
    [ $? -eq 0 ]; 
    # $? 是最后一个命令执行状态的返回标记,0代表成功,1代表失败,这一行的作用是判断上面的ping命令是否成功执行了
    do
     
    	echo ' 通电正常 ! ' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log
    	#意思是向后面这个文件中写入一句log,并且记录当前时间,echo 的意思是向指定的io输出一系列的字符等,
    	#上面这行代码里面的datastore1是我的机器路径,需要改成你自己的,后面所有的路径都同理
     
    	sleep 180 #暂停180秒,这个数字是可以根据自己的实际修改
     
    done
    #上面这一段的作用是每隔180秒,就ping一次xp虚拟机的ip如果成功了,那么就向log里面写入一条记录然后一直循环下去
    #如果上面这一段执行失败了,也就是说ping命令没有成功执行,那么就停止循环,开始执行下面的代码
     
    echo ' 交流电源可能关闭,1分钟后再次检查 ' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log
    #向log文件中写入这次异常并记录时间
     
    sleep 60
    #等待60秒,可以根据你自己的需要修改
     
    ping -c 1 192.168.0.4 > /dev/null
    #ping那个运行xp的虚拟机
     
    if [ $? -eq 0 ] 
    #判断上面这个ping语句是否执行成功了,如果成功了则执行then后面这句代码并结束此脚本
    #如果上面这次ping失败了,那就说明在前面那个循环失败之后60秒再次尝试,又失败了,说明应该是关机了开始执行else后面的代码
    then
    	echo ' 再次检查,交流电源正常!' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log
    	#
    else
    
    	rm -rf /vmfs/volumes/datastore1/ups/ups.log
     
    	echo ' 交流电源已经关闭,现在关闭Esxi! ' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log
    	#向log文件中写入,市电已经断掉了,现在开始执行关机
    	
    	vim-cmd vmsvc/power.shutdown 12
    	#这是一个关键的命令,这个exsi用来关闭虚拟机的命令行,后面的数字,就是刚刚我们前面说的Vmid
    	#也就是说,想要关闭哪台虚拟机,就写哪个数字
    	
    	Sleep 300
    	#暂停300秒,主要是关闭虚拟机需要时间,所以在这里要停一停等一下再关闭exsi主机,可以根据你的经验和UPS的容量自行调整时间
    		
    	/bin/shutdown.sh #关闭exsi主机
    	halt
    fi #是和上面的if对应的,语法需要,不用在意

     

将上面这些代码,拷贝到记事本,根据自己的实际需求进行编辑修改之后,再拷贝,然后到刚刚的PuTTY窗口,那个窗口现在应该是vi编辑器,这个时候在窗口中按鼠标的右键,就应该直接将代码黏贴上了。黏贴之后,应该是类似于下面这样的

这个时候需要保存这个文件,首先按一下esc, 然后按一下“:”这个时候光标会跑到最下面,等待你输入,输入“w”然后回车,是保存这个文件, 然后再按“:”输入“q”回车,退出vi编辑器

这个时候你再用“ls”命令,应该可以看到一个apc.sh文件,但是你的这个文件可能和我的不太一样,不是绿色的,因为他现在还不是可执行文件,没有权限,需要用下面的这个命令来给它一个执行权限,

 

chmod 777 apc.sh

 

执行完上面的命令之后,再用“ls”命令看,应该就是绿色的了。

然后用相同的方法,建立ups.log文件,只不过这是一个空文件,不容写内容

下面一步是建立一个守护,来判断apc.sh是否正在执行中,如果没有执行,就执行它。

 

 
  1. NUM=`ps -c | grep apc.sh | grep -v grep |wc -l`

  2. echo ${NUM}

  3. #

  4. if [ "${NUM}" -lt "1" ];then

  5. /vmfs/volumes/datastore1/ups/apc.sh &

  6. echo ' UPS shouhu start' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log

  7. fi

  8. exit 0

 

同样的原理,将这段代码中, 路径的 “datastore1”换成你自己的路径,其他不用变

下面我们建立一个计划任务,每3分钟执行这个守护程序一次,这个时候需要用到exsi下面的计划任务程序,叫“cron”(别问这是啥,如果你不知道没关系,只要按照下面的步骤做就可以了,这个就是一个类似于win的计划任务的东西)

首先用下面的命令打开这个计划任务的列表文件

 

vi /var/spool/cron/crontabs/root

 

这个时候vi编辑器就打开了一个文件

你看到的和我看到的应该差不多,但是没有最下面这一行,用上面说的编辑方法,将这一行内容添加进去,注意“datastore1”要改成你自己的路径,然后保存、退出

这个时候已经完成了99%了,唯一的问题是,当exsi重启之后,它会重置这个计划任务,这个文件里面的内容又擦除掉了,所以我们需要让它每次启动的时候,都将这句话自动的写在这个文件里面,下面介绍

首先用下面的命令进入 ect目录

 

cd /etc

 

因为rc.local 是只读文件,现要修改一下权限

 

chmod 777 rc.local

 

然后用vi编辑器打开rc.local文件

 

vi rc.local

在打开的文件的最下面加上下面三行代码(将datastore1路径改为你自己的)

如果 你是 6.7.0 版本的 用 

/etc/rc.local.d/local.sh

 

 
  1. /bin/kill $(cat /var/run/crond.pid)

  2. /bin/echo '*/3 * * * * /vmfs/volumes/datastore1/ups/ups_shouhu.sh' > /var/spool/cron/crontabs/root

  3. /bin/busybox crond

#!/bin/sh

# local configuration options

# Note: modify at your own risk!  If you do/use anything in this
# script that is not part of a stable API (relying on files to be in
# specific places, specific tools, specific output, etc) there is a
# possibility you will end up with a broken system after patching or
# upgrading.  Changes are not supported unless under direction of
# VMware support.

# Note: This script will not be run when UEFI secure boot is enabled.

echo '已启动程序!!!' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log

/vmfs/volumes/datastore1/ups/ups_shouhu.sh

exit 0

然后保存退出

验证一下 apc.sh是否在执行。使用下面这行,如果结果是“1”,就说明正在运行中

 

ps -c | grep apc.sh | grep -v grep |wc -l

 

看看日志文件是否正常记录了。(先要进入到ups.log所在的目录,方法看前面)

 

cat ups.log

 

 

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ESXi 主机网络图标是 VMware 虚拟化技术中的一个重要组成部分,它代表了在虚拟化环境中运行的 ESXi 主机的网络连接和配置。ESXi 是一种高性能的虚拟化平台,可以将一个物理服务器划分为多个虚拟服务器,每个虚拟服务器都可以运行不同的操作系统和应用程序。 ESXi 主机网络图标通常包括多个主要组件,如网卡、虚拟交换机和虚拟局域网(VLAN)。网卡通常代表物理主机上的网络适配器,可以连接到物理网络。虚拟交换机可以被看作是虚拟网络中的交换机设备,可以帮助虚拟机之间和虚拟机与物理网络之间进行网络通信。而虚拟局域网(VLAN)则用于隔离虚拟机群组,使它们可以在相同的物理网络上独立操作,提高网络安全性和管理灵活性。 通过 ESXi 主机网络图标,管理员可以轻松管理和配置网络连接,为虚拟机提供所需的网络资源。管理员可以为每个虚拟机分配特定的网络带宽和连接性,并对网络流量进行调整和监控。此外,ESXi 主机网络图标也提供了基础网络故障排除工具和网络安全功能,可以帮助管理员快速识别和解决网络问题,确保虚拟机的正常运行。 总而言之,ESXi 主机网络图标是 VMware 虚拟化环境中网络管理的关键工具,它提供了对 ESXi 主机上网络配置和连接的可视化表示,帮助管理员轻松管理虚拟机的网络资源,提高虚拟化环境的可靠性和性能。 ### 回答2: ESXi主机网络图标是一种用于表示VMware ESXi虚拟化主机网络连接的图标。ESXi是一种基于x86架构的虚拟化平台,它允许用户在单个物理服务器上运行多个虚拟机。主机网络图标通常用于ESXi管理界面或虚拟机管理工具中,用于显示ESXi主机的网络连接状态和配置信息。 ESXi主机网络图标通常是一个简单的图标,通常是一个小图标。它可能包含一些基本的元素,如一个网络连接表示网络的存在和连接状态,或者一个主机图标表示它是一个虚拟化主机。通常,它的颜色和形状可能会根据网络连接的状态改变,例如绿色表示正常连接,红色表示断开连接,黄色表示故障或警告。 通过查看ESXi主机网络图标,管理员可以快速了解主机的网络状态和健康状况。这对于监视网络连接是否正常,处理网络故障或进行网络配置更改非常有用。管理员可以通过点击图标或与之交互来打开主机网络设置界面,以查看和修改网络配置,例如IP地址、子网掩码、网关等。这样的图标还可以显示主机上运行的虚拟机的网络连接,让管理员能够了解每个虚拟机的网络连接状态。 综上所述,ESXi主机网络图标是一个用于表示VMware ESXi虚拟化主机网络连接状态和配置信息的图标,在虚拟机管理和网络管理中发挥重要作用。通过这个简单的图标,管理员可以方便地监控和管理主机的网络连接。 ### 回答3: ESXi 主机网络图标是一种用于表示虚拟化主机的图标。ESXi 是一款由 VMware 公司开发的虚拟化操作系统,可用于在服务器上运行多个虚拟机。网络图标通常是一个简化的图形,用来代表 ESXi 主机在网络环境中的位置和连接。 ESXi 主机网络图标通常以物理服务器的形式出现,具有类似于传统服务器的外观,但通常有一些微小的差异。图标上可能会显示主机的名称或标识符以便于识别。此外,图标上还可能会显示一些指示符,如灯泡表示主机是否处于开机状态,或者链表示主机的网络连接状态。 使用 ESXi 主机网络图标可以方便管理员在服务器集群中快速识别并管理特定的主机。通过查看图标,管理员可以迅速确定主机状态和性能,并对其进行相应的操作。这对于在虚拟环境中执行管理任务非常重要,因为管理员可以直观地了解集群中每个主机的位置和网络连接情况。 总之,ESXi 主机网络图标是一种用于表示虚拟化主机的简化图标。它可以帮助管理员在虚拟环境中快速识别和管理主机,并提供有关主机状态和性能的信息。这对于有效管理和维护虚拟化环境非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值