AI智能
改变未来

KVM-shell脚本

查看 KVM 虚拟机中的网卡信息(不需要进入启动或进入虚拟机)

#!/bin/bash# 该脚本使用 guestmount 工具,可以将虚拟机的磁盘系统挂载到真实机文件系统中# Centos7 中安装 libguestfs‐tools‐c 可以获得 guestmount 工具# 虚拟机可以启动或者不启动都不影响该脚本的使用# 将虚拟机磁盘文件挂载到文件系统后,就可以直接读取磁盘文件中的网卡配置文件中的数据clearmountpoint=\"/media/virtimage\"[ ! -d $mountpoint ] && mkdir $mountpointread -p \"输入虚拟机名称:\" nameecho \"请稍后...\"# 如果有设备挂载到该挂载点,则先 umount 卸载if mount | grep -q \"$mountpoint\" ;thenumount $mountpointfi# 只读的方式,将虚拟机的磁盘文件挂载到特定的目录下,这里是/media/virtimage 目录guestmount -r -d $name -i $mountpointechoecho \"‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐\"echo -e \"\\033[32m$name 虚拟机中网卡列表如下:\\033[0m\"dev=$(ls /media/virtimage/etc/sysconfig/network‐scripts/ifcfg-* |awk -F\"[/‐]\" \'{print $9}\')echo $devecho \"‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐\"echoechoecho \"+++++++++++++++++++++++++++++++++++++++++++\"echo -e \"\\033[32m 网卡 IP 地址信息如下:\\033[0m\"for i in $devdoecho -n \"$i:\"grep -q \"IPADDR\" /media/virtimage/etc/sysconfig/network‐scripts/ifcfg-$i || echo \"未配置 IP地址\"awk -F= \'/IPADDR/{print $2}\' /media/virtimage/etc/sysconfig/network-scripts/ifcfg-$idoneecho \"+++++++++++++++++++++++++++++++++++++++++++\"
  1. 不登陆虚拟机,修改虚拟机网卡 IP 地址
#!/bin/bash# 脚本在不登陆虚拟机的情况下,修改虚拟机的 IP 地址信息# 在某些环境下,虚拟机没有 IP 或 IP 地址与真实主机不在一个网段# 真实主机在没有 virt‐manger 图形的情况下,远程连接虚拟机很麻烦# 该脚本可以解决类似的问题read -p \"请输入虚拟机名称:\" nameif virsh domstate $name | grep -q running ;thenecho \"修改虚拟机网卡数据,需要关闭虚拟机\"virsh destroy $namefimountpoint=\"/media/virtimage\"[ ! -d $mountpoint ] && mkdir $mountpointecho \"请稍后...\"if mount | grep -q \"$mountpoint\" ;thenumount $mountpointfiguestmount  -d $name -i $mountpointread -p \"请输入需要修改的网卡名称:\" devread -p \"请输入 IP 地址:\" addr# 判断原本网卡配置文件中是否有 IP 地址,有就修改该 IP,没有就添加一个新的 IP 地址if grep -q \"IPADDR\"  $mountpoint/etc/sysconfig/network‐scripts/ifcfg‐$dev ;thensed -i \"/IPADDR/s/=.*/=$addr/\"  $mountpoint/etc/sysconfig/network‐scripts/ifcfg‐$develseecho \"IPADDR=$addr\" >> $mountpoint/etc/sysconfig/network‐scripts/ifcfg‐$devfi# 如果网卡配置文件中有客户配置的 IP 地址,则脚本提示修改 IP 完成awk -F= -v x=$addr \'$2==x{print \"完成...\"}\'  $mountpoint/etc/sysconfig/network‐scripts/ifcfg-$dev

3.破解虚拟机密码,无密码登陆虚拟机系统

read -p \"请输入虚拟机名称:\" nameif virsh domstate $name | grep -q running ;thenecho \"破解,需要关闭虚拟机\"virsh destroy $namefimountpoint=\"/media/virtimage\"[ ! -d $mountpoint ] && mkdir $mountpointecho \"请稍后...\"if mount | grep -q \"$mountpoint\" ;thenumount $mountpointfiguestmount -d $name -i $mountpoint# 将 passwd 中密码占位符号 x 删除,该账户即可实现无密码登陆系统sed -i \"/^root/s/x//\" $mountpoint/etc/passwd

4.使用脚本开启关闭虚拟机

#!/bin/bash# 脚本通过调用virsh命令实现对虚拟机的管理,如果没有该命令,需要安装 libvirt‐client 软件包# $1是脚本的第1个参数,$2是脚本的第2个参数# 第1个参数是你希望对虚拟机进行的操作指令,第2个参数是虚拟机名称case $1 inlist)virsh list --all;;start)virsh start $2;;stop)virsh destroy $2;;enable)virsh autostart $2;;disable)virsh autostart --disable $2;;*)echo \"Usage:$0 list\"echo \"Usage:$0 [start|stop|enable|disable]  VM_name\"cat << EOF#list      显示虚拟机列表#start     启动虚拟机#stop      关闭虚拟机#enable    设置虚拟机为开机自启#disable   关闭虚拟机开机自启功能EOF;;esac
  1. 调整虚拟机内存参数的 shell 脚本
#!/bin/bash# 调整虚拟机内存参数的 shell 脚本cat << EOF1.调整虚拟机最大内存数值2.调整实际分配给虚拟机的内存数值EOFread -p \"请选择[1‐2]:\" selectcase $select in1)read -p \"请输入虚拟机名称\" nameread -p \"请输入最大内存数值(单位:k):\" sizevirsh setmaxmem $name --size $size --config;;2)read -p \"请输入虚拟机名称\" nameread -p \"请输入实际分配内存数值(单位:k):\" sizevirsh setmem $name $size;;*)echo \"Error\";;esac
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » KVM-shell脚本