海运的博客

XenServer获取所有VM虚拟机IP及对应MAC地址

发布时间:November 20, 2012 // 分类:虚拟化,Shell // 1 Comment

XenServer5.6下编写,用于获取所有VM虚拟机IP和对应MAC地址,Shell脚本如下:

#!/bin/bash
#https://www.haiyun.me
if [[ ! -e mac-ip.txt ]];
then
        touch mac-ip.txt
else
        > mac-ip.txt
fi
for vps in `xe vm-list |awk '/name/ {print $4}'`
do
        case $vps in
                *"Control"* ) continue ;;
        esac
        writeline=`xe vif-list vm-name-label=$vps params=MAC|awk '/MAC/ {print $5}'`
        writeline+=" "
        writeline+=`xe vm-list name-label=$vps params=networks|awk '/network/ {print $5}'`
        echo $writeline >> mac-ip.txt
done

XenServer获取VM虚拟机名称与MAC地址参考:https://www.haiyun.me/archives/xenserver-vmname-mac.html

Linux下多种方法删除重复行/列

发布时间:November 19, 2012 // 分类:Shell // No Comments

Linux下文本处理工具很丰富很强大,去重复行可用以下方法:

cat log 
www.haiyun.me 192.168.1.1
www.haiyun.me 192.168.1.1
www.haiyun.me 192.168.1.2

使用uniq/sort删除重复行,仅能对整行操作。

uniq log 
sort -u log 
uniq log 
www.haiyun.me 192.168.1.1
www.haiyun.me 192.168.1.2

使用awk按列删除重复行,也可按多列或整行操作。

awk '!i[$1]++' log 
www.haiyun.me 192.168.1.1

使用sed删除重复行:

sed '$!N; /^\(.*\)\n\1$/!P; D' log
www.haiyun.me 192.168.1.1
www.haiyun.me 192.168.1.2

XenServer获取所有VM虚拟机名称及对应MAC地址

发布时间:November 19, 2012 // 分类:虚拟化,Shell // No Comments

XenServer5.6测试通过,用于查找所有VM及其对应MAC地址写入output.csv文件,直接下载shell脚本

#!/bin/bash
#https://www.haiyun.me
if [ $(whoami) != 'root' ];
then
    echo "Must be root to run $0"
    exit 1;
fi

if [[ ! -e output.csv ]];
then
    touch output.csv
else
    > output.csv
fi

for vmuuid in `xe vm-list | awk -F ':'  '/^uuid/ {print $2}'` ;
do
    namelabel=`xe vm-param-get uuid=$vmuuid param-name=name-label`
    case $namelabel in
        *"Control domain"* ) continue ;;
    esac
    i=`xe vif-list vm-name-label="$namelabel" | grep device | wc -l`
    writeline="\"$namelabel\""
    writeline+=","
    for ((j=0;j<$i;j++))
    do
        mac=`xe vif-list vm-name-label="$namelabel" params=MAC device=$j | awk -F': ' '/^MAC/ {print $2}'`
        if [ -z "$mac" ]
        then
            i=`expr $i + 1`
            continue
        else
            writeline+=$mac
        fi
        if [ $j -lt `expr $i - 1` ]
        then
            writeline+=","
        fi
    done
    echo "$writeline" >> output.csv
done
echo "VMs and their respective MAC addresses have been written to output.csv in the current directory."
exit 0

Shell重定向> /dev/null 2>&1解释

发布时间:June 25, 2012 // 分类:Shell // No Comments

Shell下重定向输有三种方式:

标准输入:0
标准输出:1
错误输出:2
/dev/null 2>&1 解说:
> /dev/null 即1>表示将标准输出重定向到/dev/null
2>&1表示将标准错误输出重定向到标准输出
/dev/null 2>&1还有一种写法:
&> /dev/null

Awk/Sed中调用shell变量方法

发布时间:May 19, 2012 // 分类:Shell // No Comments

Awk和Sed是Linux下很强大的两个文件处理工具,在编写Shell的时候经常要调用变量,记录调用方法。
1.Awk中调用方法:
1.1.使用"'$var'"方式:

#/bin/bash
num=1
awk -F: '{print $"'$num'"}' /etc/passwd

1.2.通过awk -v参数定义:

#!/bin/bash 
num=1
awk -v a=$num -F: '{print $a}' /etc/passwd

2.Sed中调用方法:

#!/bin/bash
#https://www.haiyun.me
for ((i=1; i<25; i++))
do
        ip=`sed -n "$i"p ip.txt`
        sed -i ''"$i"' s/$/ '"$ip"'/' ip-mac.txt
done
分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...