与设备的ARP表相比,试图根据一个范围内的所有可用IP获取可用IP地址的列表。
我对comm所做的工作是基于以下讨论:巴什中两个数组的相交
创建IP的范围以与-e.g 192.168.20.0/23进行比较
RANGE1=(192.168.20.{2..255})
RANGE2=(192.168.21.{0..254})
RANGE=("${RANGE1[@]}" "${RANGE2[@]}")
printf '%s\n' "${RANGE[@]}" | LC_ALL=C sort > "${IPSETS_DIR}/_set.txt"$1是网络设备的IP。OID基本上是设备的ARP表。GREP_SEARCH示例:“192.168.20 x 192.168.30 x 192.168.55”
$(which snmpbulkwalk) -v2c -c "${1}" .1.3.6.1.2.1.4.35.1.4 > "${RESULTS_FILE}"
STRIPPED_RESULTS=( $(cut -d\" -f2 "${RESULTS_FILE}" | egrep -w "(^|\s)${GREP_SEARCH}") )
printf "%s\n" "${STRIPPED_RESULTS[@]}" | LC_ALL=C sort > "${STRIPPED_FILE}"遍历返回的结果如下:IP-MIB::ipNetToPhysicalPhysAddress.118161416.ipv4."X.X.X.X" = STRING: XX:XX:XX:XX:XX:XX
然后,我使用下面的方法进行比较。一美元是城市化名。
$(which comm) -13 "${STRIPPED_FILE}" "${IPSETS_DIR}/${1}_set.txt" > "${DIR}/${1}_stored_results.txt"这主要是可行的,但我仍然得到了正在使用的in。不知道我错过了什么。
发布于 2022-06-15 19:54:21
Stéphane的链接给了我答案。
设置补码$comm-23<(排序set1) <(排序set2) #在set1中输出不在set2中的元素
https://unix.stackexchange.com/questions/706322
复制相似问题