通过 for 循环插入主机检查

insert hosts in check via for loop

以下问题:

我们有一个名为 "file.conf"

的文件
192.168.30.1|192.168.30.1|os
_网关|192.168.30.2|Linux 2.6.18 - 2.6.22
...

第一个是hostname 第二个是ipv4

现在我们有一个脚本,他应该通过来自 checkMK

的自动用户自动插入 hosts 和 ip
#!/bin/bash

FILE=filename
source $FILE

for i in ${FILE}
do

HOSTNAME=$(cat $i | cut -d '|' -f1)
IP=$(cat $i | cut -d '|' -f2)

curl "http://checkmkadress/check_mk/host&user" -d 'request={"hostname":"'"$HOSTNAME"'","folder":"ansible","attributes":{"ipaddress":"'"$IP"'","site":"sitename","tag_agent":"cmk-agent"}}'


done


但是如果我们这样做,我们会得到以下错误,因为他尝试将每个 host 放入 host 中,将每个 ip 放入 ip 中,而无需遍历所有行

{"result": "Check_MK exception: Failed to parse JSON request: '{\"hostname\":\"allhostnames":{\"ipaddress\":all_ips\",\"site\":\"sitename\",\"tag_agent\":\"cmk-agent\"}}': Invalid control character at: line 1 column 26 (char 25)", "result_code": 1}

我们如何让 curl 脚本遍历每一行以分别获取 host 和 ip

利用你已经做过的,按这种方式尝试。

FILE="filename"
source $FILE

while read line
do

    HOSTNAME=$(echo $line | cut -d '|' -f1)
    IP=$(echo $line | cut -d '|' -f2)

    #your curl command here

done <$FILE 

或者,我更喜欢

while IFS='|' read -r host ip description
do 
   #your curl command here
   echo "$host : $ip : $description"
done <$FILE