请教下脚本大佬 只看楼主

本帖最后由 mushan099 于 2020-5-26 10:10 编辑

家里整了台母鸡,在服务器上搭了kvm,装了一台模板机,用virsh define 命令来批量创建
xml文件要手动一个个去改uuid name mac 磁盘路径,求个sh脚本可以自动替换的 ,送gcp香港台湾机器

  1. test1.xml
  2. <name>test1</name>
  3. <uuid>9da1d06d-cc17-4a40-b36b-31dac8aac7c3</uuid>
  4. <source file='/var/lib/libvirt/images/test1.qcow2'/>
  5. <source dev='/dev/sdb1'/>
  6. <mac address='52:54:00:0d:90:d2'/>


上面是一个文件,有类似这样的test2 test3 test410来个
例如
  1. test2.xml
  2. <name>test2</name>
  3. <uuid>9da1d06d-cc17-4a40-b36b-31dac8aac7c3</uuid>  # 格式固定字符随机
  4. <source file='/var/lib/libvirt/images/test2.qcow2'/>
  5. <source dev='/dev/sdb2'/>
  6. <mac address='52:54:00:0d:90:d2'/>  #格式固定字符随机
  • 2# van
  • 2020-5-26 10:13:15
这些uuid name mac ,你都可以提供吗?
  • 3# h20
  • 2020-5-26 10:14:10
提示: 作者被禁止或删除 内容自动屏蔽
引用: van 发表于 2020-5-26 10:13
这些uuid name mac ,你都可以提供吗?


uuid 其实我研究出来了,随便填只要格式对就可以的
  1. sed -i "s/<uuid>.*</<uuid>$(uuidgen)</g" /root/bak/test6.xml
主要是mac那个搞不定
想着大佬可能有更牛逼的方法,我就全抛上来了嘿嘿
mac也是随机生成就行,其他的那些按顺序 嘿嘿嘿
引用: h20 发表于 2020-5-26 10:14
这个用sed就搞定了,什么uuid的linux都有现成的

大佬是的,就是用sed,只是初学linux脚本写的一塌糊涂
  • 6# marile
  • 2020-5-26 10:19:43
本帖最后由 marile 于 2020-5-26 10:27 编辑

https://help.ubuntu.com/community/KVM/Managing
里面提到了:
To get a new mac address to paste into your xml file, use this command:

MACADDR="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/')"; echo $MACADDR

To get a new uuid for your xml file, use: uuidgen

https://superuser.com/questions/218340/how-to-generate-a-valid-random-mac-address-with-bash-shell
这里有一些别的办法
  • 7# h20
  • 2020-5-26 10:21:20
提示: 作者被禁止或删除 内容自动屏蔽
引用: h20 发表于 2020-5-26 10:21
你这就是思维江化

你为什么不用个占位符先写好一个模板文件,然后替换这个占位符就好了,还去整什么正则 ...

哎好像是这个道理。。重点不是匹配啊大佬,重点是替换
  • 9# h20
  • 2020-5-26 10:26:18
提示: 作者被禁止或删除 内容自动屏蔽
用grep去查所在行,得到整行,然后替换这一行就可以了。

请参考:https://www.myzhenai.com.cn/post/3066.html