zoukankan      html  css  js  c++  java
  • 068_不登陆虚拟机,修改虚拟机网卡 IP 地址

    #!/bin/bash

    #该脚本使用 guestmount 工具,Centos7.2 中安装 libguestfs-tools-c 可以获得 guestmount 工具
    #脚本在不登陆虚拟机的情况下,修改虚拟机的 IP 地址信息
    #在某些环境下,虚拟机没有 IP 或 IP 地址与真实主机不在一个网段
    #真实主机在没有 virt-manger 图形的情况下,远程连接虚拟机很麻烦
    #该脚本可以解决类似的问题

    read -p "请输入虚拟机名称:" name
    if virsh domstate $name |grep -q running ;then
        echo "修改虚拟机网卡数据,需要关闭虚拟机"
        virsh destroy $name
    fi

    mountpoint="/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

    # "/IPADDR/s/=.*/=$addr/"
    # 以/IPADDR/开头的行
    # s/=.*/=$addr/ s替换 "=.*" 替换为 "=$addr
    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

    #Shell中的变量在AWK程序中无法使用,因为在执行AWK时,是一个新的进程去处理的,因此就需要-v 来向AWK程序中传参数了,你比如在shell程序中有一个变量a=15,你在awk程序中直接使用变量a是不行的,而你用awk -v b=a, 这样在AWK程序中就可以使用变量b了!也就相当于使用a了!

  • 相关阅读:
    java实现倒计时
    javaweb启动时启动socket服务端
    二进制数与十六进制数之间如何互相转换
    分组查询最新时间的数据
    javaweb利用钉钉机器人向钉钉群推送消息(解决中文乱码)
    java利用钉钉机器人向钉钉群推送消息
    Java原生操作数据库(不使用框架)
    Mybatis 插入与批量插入以及多参数批量删除
    在spring中直接在类中注入dao
    web自动化测试实战之批量执行测试用例
  • 原文地址:https://www.cnblogs.com/luwei0915/p/10518484.html
Copyright © 2011-2022 走看看