# 該指令碼使用 guestmount 工具,Centos7.2 中安裝 libguestfs-tools-c 可以獲得 guestmount 工具
# 指令碼在不登陸虛擬機器的情況下,修改虛擬機器的 IP 地址資訊
# 在某些環境下,虛擬機器沒有 IP 或 IP 地址與真實 WordPress 主機不在一個網段
# 真實 WordPress 主機在沒有 virt-mange 圖形的情況下,遠端連線虛擬機器很麻煩
# 該指令碼可以解決類似的問題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

#!/bin/bash
#Author: 丁丁歷險 (Jacob)
#該指令碼使用 guestmount 工具,Centos7.2 中安裝 libguestfs-tools-c 可以獲得 guestmount 工具
#指令碼在不登陸虛擬機器的情況下,修改虛擬機器的 IP 地址資訊
#在某些環境下,虛擬機器沒有 IP 或 IP 地址與真實 WordPress 主機不在一個網段
#真實 WordPress 主機在沒有 virt-mange 圖形的情況下,遠端連線虛擬機器很麻煩
#該指令碼可以解決類似的問題
read -p “ 請輸入虛擬機器名稱:” name
if virsh domstate $name|grep -q running ;then
       echo “ 修改虛擬機器網絡卡資料, 需要關閉虛擬機器”
       virsh destroy $name
fi
mountpoint=”/wp-content/uploads/sites/3/media/virtimage”
[ ! -d $mountpoint]&& mkdir $mountpoint
echo “ 請稍後…”
if mount | grep -q”$mountpoint” ;then
       umount $mountpoint
fi
guestmount  -d $name -i $mountpoint
read -p “ 請輸入需要修改的網絡卡名稱:”dev
read -p “ 請輸入 IP 地址:” addr
#判斷原本網絡卡配置檔案中是否有 IP 地址,有,就修改該 IP,沒有,就新增一個新的 IP 地址
if grep -q”IPADDR”  $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev;then
   sed -i “/IPADDR/s/=.*/=$addr/”  $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev
else
   echo “IPADDR=$addr” >>  $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev
fi
#如果網絡卡配置檔案中有客户配置的 IP 地址,則指令碼提示修改 IP 完成
awk -F= -v x=$addr ‘$2==x{print “ 完成…”}’ $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev