文章目录
说明
-
需求
- 1、获取所有表的ip和其uuid【以底层为准】
- 2、获取所有IP的所在宿主机【以底层为准】
-
实现方式有2种
- 1、dashboard里面可以查看,然后一台一台的复制【使用少量虚拟机】
- 2、底层跑脚本获取【适合多虚拟机】
dashboard
ip名称对应宿主机
登录dashboard进入到admin域,里面就可以看到虚拟机的宿主机。
虚拟机uuid
点击名称,进入到详细,里面的id就是虚拟机的uuid
底层命令获取
之前的脚本
我最开始获取这个的时候,用的是下面的脚本,获取这些本来是简简单单的,我也不知道我为啥写这么难理解的一个脚本。。。。下面感兴趣的可以自行研究一下,我这不用这个脚本了,用更简单的方法。。。
[root@node-1 ccx]# cat uuid.sh
#!/bin/bash
if [ $# -eq 0 ] ;then
echo "Usage: /root/iplist.txt"
elif [ -f $1 ] ; then
for ip in `cat $1` ; do
name1=`ssh root@$ip virsh list --all | grep ins | awk '{print $2,$3,$4}'`
name2=`ssh root@$ip virsh list --all | grep ins | awk '{print $2}'`
echo "$name2" >> /root/ccx/uuid2.log
name3=`cat /root/ccx/uuid2.log`
ipname=`ssh root@$ip hostname`
echo -e "$ipname\n$name1"
done
array=($name2)
echo ${array[*]}
for leng in ${array[*]} ; do
#echo $leng
uuid=`ssh root@$ip virsh domuuid $leng`
echo "$leng $uuid" >> /root/ccx/uuid.log | awk '$1 ~ /ins/{print $1,$2,$3,$4}'
done
cat /root/ccx/uuid.log
#addip=`cat /root/ccx/uuid.log | awk '{print $2}'`
for uuip in $addip ; do
ywip=`nova show $uuip | grep network | awk '{print $5}'`
echo "$uuip $ywip"
done
> /root/ccx/uuid.log
else
echo "Input file not found"
fi
[root@node-1 ccx]#
获取ip和其uuid
- 登录控制节点,执行环境变量以后
执行:nova list --all
就会列出所有的虚拟机和其uuid【如果不加–all,shutdown状态的不会被列出】
- uuid和ip都有了,就直接拷贝出来呗!
再excel中全部信息在一行,我们可以用分列-分割符号来分割
然后自己要哪些就留哪些嘛,不要的删了就是了
获取IP所在宿主机
定位宿主机命令
-
登录控制节点,执行环境变量以后
执行:nova show uuid
就会列出该虚拟机的详细信息,宿主机信息如下
-
其实我们提取宿主机一般要和ip一起提【严谨的态度】,免得出错,方法1
要速度的话我们可以直接用下面方法来一起获取2个值了,然后导出到excel就好【使用不多的情况】,这种就是多条件筛选嘛
-
然后分别通过awk来提取嘛【一定要先测试好单条命令,能正确获取且只获取到一个值(通过修改下面grep后面的值实现,每个版本的openstack过滤条件一般都不会一样)】
注:下面ip有修改。
#提取ip
[root@node-2 ccx]# nova show 591f918c-0df1-46cf-8081-f66ab76ddd | grep network|awk '{print $5}'
1.23.16.39
[root@node-2 ccx]#
# 提取宿主机
[root@node-2 ccx]# nova show 591f918c-0df1-46-8081-f66a80b76ddd | grep hostname | awk '{print $4}'
node-20.domain.tld
[root@node-2 ccx]#
脚本代码准备测试
- sh脚本
之前脚本那么多行实现的功能和我下面是一样的,所以,这就是进步!
[root@node-2 ccx]# cat uuid.sh
#!/bin/bash
cat uuid.txt | while read line ; do
echo -e "`nova show $line | grep network|awk '{print $5}'`:`nova show $line | grep hostname | awk '{print $4}'`"
done
[root@node-2 ccx]#
- uuid脚本准备
我先准备个2台跑脚本看看效果
[root@node-2 ccx]# cat uuid.txt
2360d273-abb4-4f5d-a3b3-f58b40e14b6
09a25ee9-9a98-4c44-8a56-397fe81647f
[root@node-2 ccx]#
- 执行这个脚本试试
嗯。。。很完美
[root@node-2 ccx]# sh uuid.sh
1.2.3.31:node-6.domain.tld
1.2.3.32:node-18.domain.tld
[root@node-2 ccx]#
脚本代码终版
- 其实代码和上面一样,我就是添加了个追加到文件而已
[root@node-2 ccx]# cat uuid.sh
#!/bin/bash
cat uuid.txt | while read line ; do
echo -e "`nova show $line | grep network|awk '{print $5}'`:`nova show $line | grep hostname | awk '{print $4}'`" >> uuidxuniji.txt
done
[root@node-2 ccx]#
- uuid文件,放了所有uuid
其实我就是按表里的uuid复制过来的,这样后面复制过去和表里就对应起来了
- 然后就执行呗,慢慢等执行完就好了
如果你想实时看表里更新也是可以的,新打开一个窗口,然后tail -f 文件名
就可以实时更新数据了
最终信息提取完成展示
-
最后将脚本结果复制到excel嘛,然后通过
:
分列就好了,对应一下ip,ip对上了,宿主机就对上了,如下
-
最后成品如下