Zabbix批量导入XML文件生成小脚本(by Powershell)

2022/5/1 7:13:50

本文主要是介绍Zabbix批量导入XML文件生成小脚本(by Powershell),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

最近升级6.0后发现手动批量导入Zabbix主机群组需要一个新的uuid参数,于是用powershell写了一个脚本。

 

 

 

 

代码如下:

<#
    TIME:2022/04/30
    DESCRIPTION:生成zabbix批量导入的XML文件
    AUTHOR:Monbro
#>
#
# $zbxiface设置为161为生成SNMP的XML文件,设置10050为ZabbixAgent的XML文件
$zbxiface = 10050
$ppath = Split-Path -Parent $PSCommandPath
$xlsxfile = $ppath+"\"+(Get-ChildItem -Path "$ppath\*.xlsx").Name
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$wb=$excel.Workbooks.Open($xlsxfile)
$ws=$wb.Sheets.Item("Sheet1")
$slist=$iplist=$dplist=$cnlist=@()
for ($n = 1; $n -le $ws.UsedRange.Rows.Count; $n++) {
    #01_Names
    $slist+=$ws.Cells.Item($n,1).Text
    #02_IPv4Address
    $iplist+=$ws.Cells.Item($n,2).Text
    #03_Description
    $dplist+=$ws.Cells.Item($n,3).Text
    #04_CanonicalName
    $cnlist+=$ws.Cells.Item($n,4).Text
}
$excel.Quit()
$excel = $null
[GC]::Collect()
$cretedate =  Get-Date -Format "yyyy-MM-ddThh:mm:ssZ"
$groupname=$cretedate
$groupuuid=[System.Guid]::NewGuid().toString('N')
$filename = $ppath+"\"+$cretedate.Replace(":", "")+".xml"
function ZBXhosts_imxml{

$xmlhead="<?xml version=`"1.0`" encoding=`"UTF-8`"?>
<zabbix_export>
    <version>6.0</version>
    <date>$cretedate</date>
    <groups>
        <group>
            <uuid>$groupuuid</uuid>
            <name>$groupname</name>
        </group>
    </groups>
    <hosts>"
    $xmltail="    </hosts>
</zabbix_export>"
$xmlhead | Out-File -Encoding utf8 $filename

if ($zbxiface.Equals(10050)) {
    $i=0
    foreach($ServerName in $slist ){
        $ip=$iplist[$i]
        $desp=$dplist[$i]
        $cnname=$cnlist[$i]
        $xmlmid10050="        <host>
            <host>$ServerName</host>
            <name>$ServerName</name>
            <description>$desp</description>
            <groups>
                <group>
                    <name>$groupname</name>
                </group>
            </groups>
            <interfaces>
                <interface>
                    <ip>$ip</ip>
                    <dns>$ServerName</dns>
                    <interface_ref>if1</interface_ref>
                </interface>
            </interfaces>
            <inventory>
                <name>$cnname</name>
            </inventory>
        </host>"
        $xmlmid10050 | Out-File -Encoding utf8 -Append $filename
        $i++
    }
}

if ($zbxiface.Equals(161)) {
    $i=0
    foreach($ServerName in $slist ){
        $ip=$iplist[$i]
        $desp=$dplist[$i]
        $cnname=$cnlist[$i]
        $xmlmid161="        <host>
            <host>$ServerName</host>
            <name>$ServerName</name>
            <description>$desp</description>
            <groups>
                <group>
                    <name>$groupname</name>
                </group>
            </groups>
            <interfaces>
                <interface>
                    <type>SNMP</type>
                    <ip>$ip</ip>
                    <dns>$ServerName</dns>
                    <port>161</port>
                    <details>
                        <community>{`$SNMP_COMMUNITY}</community>
                    </details>
                    <interface_ref>if1</interface_ref>
                </interface>
            </interfaces>
            <inventory>
                <name>$cnname</name>
            </inventory>
        </host>"
        $xmlmid161 | Out-File -Encoding utf8 -Append $filename
        $i++
    }
}

$xmltail | Out-File -Encoding utf8 -Append $filename
}

ZBXhosts_imxml

  



这篇关于Zabbix批量导入XML文件生成小脚本(by Powershell)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程