日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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腳本中, #后面的就是注釋,所以下面的代碼中,所有#開頭的,就是注釋了。

?

?
  • #!/bin/sh while ping -c 1 192.168.0.4 > /dev/null #這個ip地址是你運行xp的那臺虛擬機的ip地址,需要改成你自己的 [ $? -eq 0 ]; # $? 是最后一個命令執行狀態的返回標記,0代表成功,1代表失敗,這一行的作用是判斷上面的ping命令是否成功執行了 doecho ' 通電正常 ! ' >> /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后面的代碼 thenecho ' 再次檢查,交流電源正常!' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log# elserm -rf /vmfs/volumes/datastore1/ups/ups.logecho ' 交流電源已經關閉,現在關閉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是否正在執行中,如果沒有執行,就執行它。

    ?

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

  • echo ${NUM}

  • #

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

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

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

  • fi

  • 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

    ?

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

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

  • /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.shexit 0

    然后保存退出

    驗證一下 apc.sh是否在執行。使用下面這行,如果結果是“1”,就說明正在運行中

    ?

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

    ?

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

    ?

    cat ups.log

    ?

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的Exsi主机判断UPS状态自动进行关机的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。