从KVM宿主机配置KVM虚拟机IP

这篇具有很好参考价值的文章主要介绍了从KVM宿主机配置KVM虚拟机IP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目的

KVM创建虚机后,想从宿主机去配置IP地址。本文介绍两种方式,能够通过shell脚本配置虚拟机IP地址

方法一

guestmount工具
guestmount 能够将虚拟机的磁盘挂载到宿主机上面,再通过修改磁盘里配置文件的方式达到更改IP目的,宿主机需要安装软件包libguestfs和libguestfs-tools
此方法不需要知道虚机账号密码也可操作,除了改IP还能改其他的,别瞎整哦

#!/bin/bash
#author 对你無語
#传参:虚机名称,网卡接口名称,IP,掩码,网关
#需要安装guestmount工具
#在不登陆虚拟机的情况下,修改虚拟机的IP地址信息

#获取虚机名称,-p是提示符
read -p "please input the Virtual machine name:" name

#如果虚拟机状态为running,则强制关闭虚机,开机不能操作哟
#关机用destroy强制关机,用shutdown会很慢,甚至有时关不掉
if virsh domstate $name|grep -q running ;then
       echo "shutdown the Virtual machine ..."
       virsh destroy $name
fi

#宿主机上创建挂载点mountpoin目录,
mountpoint="/media/v_path"
[ ! -d $mountpoint ] && mkdir $mountpoint
echo "创建mountpoin目录"

#确认没有挂载mountpoin
if mount | grep -q "$mountpoint" ;then
        umount $mountpoint
        echo "已存在挂载点,卸载mountpoint"
fi

#安装guestmount,已存在也不会重复安装
if rpm -q libguestfs|grep -q not ;then
        yum install libguestfs libguestfs-tools -y
        echo "guestmount安装中"
fi

#挂载虚机全部磁盘
guestmount  -d $name -i $mountpoint

#用户输入虚拟机网卡信息,和想要配置的IP地址
read -p "请输入需要修改的网卡名称:" dev
read -p "请输入IP地址:" addr
read -p "请输入掩码地址:" netmask
read -p "请输入网关地址:" gateway

# 判断原本网卡配置文件中是否有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
   sed -i "/NETMASK/s/=.*/=$netmask/"  $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev
   sed -i "/GATEWAY/s/=.*/=$gateway/"  $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev
   sed -i "/BOOTPROTO/s/=.*/=static/"  $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev

else
   sed -i "/BOOTPROTO/s/=.*/=static/"  $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev
   echo "IPADDR=$addr" >>  $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev
   echo "NETMASK=$netmask" >>  $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev
   echo "GATEWAY=$gateway" >>  $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev
fi
# 判断配置文件是否有此IP了
awk -F= -v ip=$addr '$2==ip{print "修改IP成功"}' $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev
# 配置完成后删除挂载点
umount $mountpoint
# 启动虚机
virsh start $name

方法二

expect工具
expect是一个免费的编程工具,能用于shell自动的交互式任务,要用的话需要先手动安装,配置过程百度很多
此方法需要你知道虚机账号密码文章来源地址https://www.toymoban.com/news/detail-613799.html

#!/usr/expect/bin/expect
# 获取虚拟机参数
set virshname  [lindex $argv 0]
set ipaddr [lindex $argv 1]
set NETMASK [lindex $argv 2]
set GATEWAY  [lindex $argv 3]

# 打开虚拟机控制台连接
spawn virsh console $virshname

# 等待一段时间以确保虚拟机启动
sleep 5
set timeout 10
send "\r"

# 匹配登录提示并发送用户名
expect {
    "login:" {
        send "root\r"
        exp_continue
    }
    timeout {
        # 在5秒超时后跳过登录步骤并执行下面的命令
    }
}

# 匹配密码提示并发送密码
expect {
    "Password:" {
        send "ENsafe@2022\r"
        exp_continue
    }
    timeout {
        # 在5秒超时后跳过登录步骤并执行下面的命令
    }
}

# 等待一段时间以确保登录完成
sleep 2

# 判断原本网卡配置文件中是否有IP地址,有,就修改该IP,没有,就添加一个新的IP地址
send "grep -q 'IPADDR' /etc/sysconfig/network-scripts/ifcfg-eth0 && echo '1111' || echo '0000'\r"

expect {
    "1111" {
      send  "echo 1111\r"
      send  "sed -i '/^BOOTPROTO/ s/.*/BOOTPROTO=static/' '/etc/sysconfig/network-scripts/ifcfg-eth0'\r"
      
      send  "sed -i '/^IPADDR/ s/.*/IPADDR=${ipaddr}/' '/etc/sysconfig/network-scripts/ifcfg-eth0'\r"
      
      send  "sed -i '/^NETMASK/ s/.*/NETMASK=${NETMASK}/' '/etc/sysconfig/network-scripts/ifcfg-eth0'\r"
      
      send  "sed -i '/^GATEWAY/ s/.*/GATEWAY=${GATEWAY}/' '/etc/sysconfig/network-scripts/ifcfg-eth0'\r"
     
    }
    "0000" {
        send  "echo 0000\r"
        
        send "echo 'IPADDR=${ipaddr}' >>  /etc/sysconfig/network-scripts/ifcfg-eth0\r"
        
        send  "sed -i '/^BOOTPROTO/ s/.*/BOOTPROTO=static/' '/etc/sysconfig/network-scripts/ifcfg-eth0'\r"

        send  "sed -i '/^NETMASK/ s/.*/NETMASK=${NETMASK}/' '/etc/sysconfig/network-scripts/ifcfg-eth0'\r"
        
        send  "sed -i '/^GATEWAY/ s/.*/GATEWAY=${GATEWAY}/' '/etc/sysconfig/network-scripts/ifcfg-eth0'\r"
    }
}

# 改了之后重启网络使之生效
send  "systemctl restart network.service\r"
expect "$ "

# 退出登录
send "exit\r"
exit

到了这里,关于从KVM宿主机配置KVM虚拟机IP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安装虚拟机(VMware)保姆级教程及配置虚拟网络编辑器和安装WindowsServer以及宿主机访问虚拟机和配置服务器环境

    目录 一、操作系统 1.1.什么是操作系统 1.2.常见操作系统 1.3.个人版本和服务器版本的区别 1.4.Linux的各个版本 二、VMware Wworkstation Pro虚拟机的安装 1.下载与安装 注意:VMWare虚拟网卡 2.配置虚拟网络编辑器 三、安装配置 WindowsServer 1.创建虚拟机 2.配置windows镜像 3.安装WindowsServ

    2024年02月08日
    浏览(50)
  • 【云计算 | OpenStack】在无法网络访问的情况下,如何在KVM虚机和宿主机之间互传文件

    正常如果打通KVM虚机和宿主机之间的网络,可以通过 scp 的方法或者使用 filezilla 等工具进行文件的传输。但是如果KVM虚机无法通过网络正常访问,又想在虚机和宿主机之间传输文件,这时候应该怎么办呢? 这时候要用到如下命令给KVM虚机添加一个 disk device (其中包含我们想传

    2024年01月21日
    浏览(39)
  • 宿主机使用wifi时虚拟机如何连网

    一、宿主机设置 打开网络连接,选择WLAN的属性-共享,如图。 配置虚拟机网络VMnet8,属性-internet协议版本4,配置如图。             二、虚拟机设置 打开VMware Workstation,选择编辑-虚拟网络编辑器,配置如图。 选择虚拟机-设置-网络适配器-网络连接,勾选NAT模式。​​​​​

    2024年02月06日
    浏览(47)
  • docker 容器无法通过 IP 访问宿主机

    一次部署项目过程中,将Java项目与中间件服务部署在同一远程机器上,出现连接不上中间件服务的问题,而项目在本地运行时是可以连接的,没有问题。 这是因为项目与服务都是通过docker容器运行的,而docker 容器无法通过 IP 访问宿主机(貌似高版本解决了这个问题),所以

    2024年02月09日
    浏览(47)
  • 禁止VMware虚拟机与宿主机的时间同步

    解决方法: 关闭虚拟机,编辑虚拟机的配置文件XXX.vmx,查找 tools.syncTime ,如果存在,且值为TRUE,则将值改为FALSE ,如下所示。如果存在,且值为FALSE,则不必修改。如果不存在,则如下所示添加tools.syncTime。 tools.syncTime = \\\"FALSE\\\" 然后,在tools.syncTime = \\\"FALSE\\\"后,加入以下命令关

    2024年02月11日
    浏览(38)
  • VirtualBox宿主机和虚拟机文件互传设置

     一、如图1、2、3步骤,设置共享粘贴板和拖放为双向 二、 在启动的虚拟机设置的里面,安装增强插件,然后重启虚拟机。 三、在网络位置就可以看到了  

    2024年02月09日
    浏览(43)
  • 配置Docker OpenWrt与宿主机网络互通且作为宿主机网关

    最近需要用Docker版的Openwrt作为旁路由(网关),在配置过程中遇到一些问题,通过查阅资料,最终完美解决。现在将整体方案和具体操作步骤贴到这里分享给大家 这里我使用的环境如下: 宿主机操作系统:Armbian 宿主机ip:192.168.5.2 宿主机新macvlan接口ip:192.168.5.3 Docker镜像:

    2024年02月03日
    浏览(98)
  • 宿主机无法ping通docker容器IP解决

    安装docker后,发现启动容器的端口8082 映射到宿主机的端口80访问主机没有反应,此时进入容器查看日志,发现并没有请求打进来 现象: 正在连接 localhost (localhost)|::1|:80… 已连接。 已发出 HTTP 请求,正在等待回应… 读取文件头错误 (Connection reset by peer)。 重试中。 1:怀疑容

    2024年02月06日
    浏览(46)
  • 解决防火墙导致虚拟机不能ping通宿主机的问题

    今天,无缘无故的,虚拟机突然用不了,网络连上不了,一番折腾翻找,最后才发现,是因为虚拟机ping不同宿主主机了,连网关都ping不通了,但是,宿主主机却可以ping通虚拟机 。 最后才发现,原来是防火墙的问题,直接关掉防火墙自然是可以解决问题的,但是,这样不好

    2024年02月09日
    浏览(51)
  • 虚拟机安装 Ubuntu桌面版,宿主机无法访问虚拟机 & ufw 防火墙简单使用

    本次安装使用的 ubuntu-22.04.2-desktop-amd64 ,网络连接使用的是桥接,查看ubuntu的ip是正常的,与宿主机在同一个网段且防火墙已关闭。 能ping通但是无法连接。 最后发现ubuntu内没有ssh服务 安装ssh服务 ufw防火墙 放行ssh服务 成功连接 ufw 常用命令 查看ufw防火墙 状态 启用防火墙 放

    2024年02月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包