查询KVM虚拟主机信息

脚本目的:脚本主要用查询KVM虚拟机主机名对应的IP地址及MAC地址,并且统计虚拟主机数量。

#!/bin/bash
#Creation Date : 2018-8-23
#Script Purpose : Query  KVM virtual host IP, hostname, MAC and Supports virtual host statistics.
#ARP Function : Arp is mainly used for address resolution, which makes it easy to query more complete IP information

CONFDIR=/etc/libvirt/qemu
ARPDIR=/usr/bin/virsh
LISTNAME=`$ARPDIR list --all |awk -F" " ‘{print $2}‘|sed 1d |grep -v "^$"`
HOSTNUM=`$ARPDIR list --all |awk -F" " ‘{print $2}‘|sed 1d |grep -v "^$"|wc -l`
RUNNUM=`$ARPDIR list --all |sed 1,2d |grep running |wc -l`
NORUNNUM=`$ARPDIR list --all |sed 1,2d |grep  "shut off" |wc -l`

arp(){
echo "ARP parsing is underway. Please wait for about 5-10 minutes."
for i in 192.168.122.{1..253}
do
ping -c2 $i > /dev/null 2>&1 &
done
}

all_query(){
for list in $LISTNAME
do
 MAC=`less $CONFDIR/$list.xml |grep "mac address"|awk -F"‘" ‘{print $2}‘`
 IP=`/sbin/arp -ne |grep virbr|grep ether|grep "$MAC" |awk -F" " ‘{print $1}‘`
 if [ "$IP" = "" ]
 then
  echo "HostName:$list IP:Empty Mac:$MAC"
 else
  echo "HostName:$list IP:$IP Mac:$MAC"
 fi
done
}

ip_query(){
MAC=`less $CONFDIR/$1.xml |grep "mac address"|awk -F"‘" ‘{print $2}‘`
IP=`/sbin/arp -ne |grep virbr|grep ether|grep "$MAC" |awk -F" " ‘{print $1}‘`
 if [ "$IP" = "" ]
 then
  echo "HostName:$1 IP:Empty Mac:$MAC"
 else
  echo "HostName:$1 IP:$IP Mac:$MAC"
 fi
}

name_query(){
MAC=`/sbin/arp -en |grep "$1" |awk -F" " ‘{print $3}‘`
CONFFILE=`grep  -rn "$MAC" $CONFDIR |awk -F":" ‘{print $1}‘`
NAME=`cat $CONFFILE |grep "<name>" |awk -F ">" ‘{print $2}‘|awk -F"<" ‘{print $1}‘`
echo "HostName:$NAME IP:$1 Mac:$MAC"
}

all_count(){
echo "The host number:$HOSTNUM"
echo "Number of running hosts:$RUNNUM"
echo "Number of hosts not running:$NORUNNUM"
}

case "$1" in
 query)
  all_query
 ;;
 count)
  all_count
 ;;
 arp)
  arp
 ;;
 name)
 ip_query $2
 ;;
 ip)
 name_query $2
 ;;
*)
    echo "Usage : {query|arp|count|name|ip}" >&2
    echo "name : Reverse check the IP and MAC through name."
    echo "ip : Reverse check the host name and MAC through IP."
    exit 3
;;
esac
exit 0

欢迎大家指点迷津,如有更好的方式请于下方留言。谢谢!

原文地址:http://blog.51cto.com/scorpions/2163280

时间: 2024-10-11 12:06:28

查询KVM虚拟主机信息的相关文章

nginx基于端口的虚拟主机配置

基于端口的虚拟主机在生产环境中的应用也不多见,仅偶尔会用到,一搬是为公司内部人员提供访问的,如页面的后台.CMS发布.phpmyadmin等. 1.  配置监听的端口 [[email protected]]# vi nginx_vhosts.conf server { listen       8060; server_name  www.etiantian.org; location / { root   /data0/www/www; index  index.html index.htm;

windows下Apache的虚拟主机配置

1.Apache虚拟主机: 在Apache上有关于虚拟主机的具体说明,具体可以参考Apache手册,这里简单的说一下虚拟主机主要分为两种: 1.基于主机名的虚拟主机(一个IP地址,多个网站) 2.基于IP地址的虚拟主机(每个站点拥有一个的独立IP地址) 虽然是两种,但其实仔细比对,就能发现:基于主机名的其实非常像一个特殊的基于IP地址的方式,如何实现虚拟主机,思路是这样的: 2.windows下:  基于主机名  设置DNS(windows上的 / hosts文件),好让我们的域名被解析到特定的

Appserv配置虚拟主机设置教程

第一步:安装Appserv 虽然这个软件从2008年6月份已经停止了更新,但是这依然是一个非常不错的Php开发集成环境.它不仅简洁而且易用. 官方下载地址:http://www.appservnetwork.com/ PS:在Windows7上安装Appserv后,使用程序自带的重启Apache工具如果不管用,可以打开系统的服务进行重启或关闭Apache服务. 第二步:修改本机的hosts文件(作用是域名重定向) hosts文件地址:C:\WINDOWS\system32\drivers\etc

httpd2.2(centos6)配置认证登陆页面,基于文档认证(basic)、虚拟主机专用配置及内置STATUS页面配置

一.basic认证: (1) 定义安全域 <Directory ""> Options None AllowOverride None AuthType Basic AuthName "STRING" AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE" Require user username1 username2 ... </Directory> 允许账号文件中的所有用户登录访

apache虚拟主机配置及解析

Apache虚拟主机配置及解析 1.修改httpd-vhosts.conf 打开apache(Apache24)/conf/extra/httpd-vhosts.conf文件,添加虚拟主机信息,可以这只不同的域名指向不同的文件目录 <VirtualHost *:80> ServerAdmin [email protected]163.com # 服务管理员邮箱地址,出问题时发送邮件到这个邮箱 DocumentRoot "D:/AppServ/www/wx" # apache

Ngingx常用配置(二)虚拟主机,访问控制,认证和状态信息

环境概况: IP地址 服务器状态 简述 192.168.180.4 Nginx服务器 192.168.180.23 client 192.168.171.231 client 具体测试步骤如下: (一)基于虚拟主机的配置.是通过不同的域名来区分提供的web服务器的主机,server_name指令主要用于配置基于域名的虚拟主机 1,首先在192.168.180.23修改/etc/hosts文件 [[email protected] haproxy]# vim /etc/hosts 192.168.

python 调用zabbix api实现查询主机信息,输出所有主机ip

之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python #coding:utf8 import requests import json headers = {'Content-Type': 'application/json-rpc'} server_ip = '10.37.149.109' url = 'http://%s/zabbix/api_j

kvm限制虚拟主机流量带宽

使用场景: 在工作中需要对某一个主机进行网络限制.合理使用网络流量 操作方式: kvm限制主机流量需要修改xml文件.最好关机后操作 kvm的限制流量的计算方式为 限制带宽数(kb)/8 = xml所需要的数字 实例: <interface type='bridge'> <mac address='52:54:00:b6:ff:ba'/> <source bridge='br0'/> <bandwidth> <inbound average='625'

kvm批量创建虚拟主机

1.首先你的提前创建一个kvm虚拟机主机,才能批量复制创建 1 批量复制已经安装好的系统盘 2 for i in `seq 144 145`;do cp centos7-1.img centos7-$i.img && echo $i ;done 3 4 批量复制已经安装好的配置文件 5 for i in `seq 144 145`;do 6 cp /etc/libvirt/qemu/centos7-1.xml /etc/libvirt/qemu/centos7-$i.xml 7 uuid=