我们有一个脚本,通过 curl 在 check_mk 中插入新主机
#!/bin/bash
cat file.conf | while read line
do
HOSTNAME=$(echo $line | cut -d '|' -f1)
IP=$(echo $line | cut -d '|' -f2)
curl "http://myserver/mysite/check_mk/webapi.py?action=add_host&_username=automation&_secret=myautomationsecret" -d 'request={"hostname":"'"$HOSTNAME"'","folder":"ansible","attributes":{"ipaddress":"'"$IP"'","site":"mysite","tag_agent":"cmk-agent"}}'
done
文件“file.conf”是使用 xmlstarlet 进行 nmap 扫描的已处理文件,该文件并不总是具有主机名,因此使用 IP 地址作为主机名
file.conf 看起来像这样
192.168.30.1|192.168.30.1|os
_gateway|192.168.30.2|Linux 2.6.18 - 2.6.22
...
因此对于某些主机,IP 地址作为主机名传递一次,逻辑上作为 ip 传递。现在是这样一个员工输入正确的主机名并从字段主机名中删除 ip
如果再次执行上述脚本,它将再次使用 ip 作为主机名创建主机(因为没有指定主机名),所以现在我们在 check_mk 1x 中使用手动添加的主机名和一次使用 ip 作为主机名的主机 2x
主机名从一开始就被 nmap 正确识别的所有其他主机都没有像应该的那样被接管
我们现在需要一个函数,在脚本执行之前询问主机名的 IP 地址,如果它已经存在,则不应再次创建主机
使用 curl 你只能得到主机
curl "http://myserver/mysite/check_mk/webapi.py?action=get_all_hosts&_username=automation&_secret=myautomationsecret"