gpt4 book ai didi

bash - Bash-循环通过ARP表并将IP存储在变量中

转载 作者:行者123 更新时间:2023-12-02 14:14:28 24 4
gpt4 key购买 nike

因此,如果我想通过SSH连接到网络上的所有设备,并使用ARP表准确地知道要连接的位置,该怎么办?

该代码将是这样的:

#!/bin/bash

for a in $([ARP Table here?])
do
ssh user@$a true
echo "Connected to $a"
done

我不确定如何在变量中存储动态IP。此外,我不确定是否以后可以使用该变量通过ssh进行连接,因为IP不是整数,而是字符串。

编辑:安德鲁让我注意到网络上并非每个设备都可以在我的ARP表中之后,我想知道:

从0开始到当前网络掩码的最大值还是在ARP表中搜索更好?

这是两种情况:
#!/bin/bash

for a in $(seq 255)
do
ssh user@172.18.10.$a true
echo "Connected to 172.18.10.$a"
done

要么
#!/bin/bash

for a in $([ARP Table here?])
do
ssh user@$a true
echo "Connected to $a"
done

最佳答案

与开发自己的扫描工具相比,更好的解决方案是使用已存在的工具。

要查看可以访问哪些IP地址(副作用将填充ARP缓存),可以使用 fping 。它可能适用于您的操作系统或发行版。我的本地网络中的一个示例:

$ fping -g 10.1.1.0/29
10.1.1.1 is alive
10.1.1.2 is alive
10.1.1.5 is alive
10.1.1.3 is unreachable
10.1.1.4 is unreachable
10.1.1.6 is unreachable
fping命令仅用于ICMP -发送ping命令。如果您的目标不仅是确定存在哪些设备,而且还确定它们是否正在SSH端口(22)上应答,则可以使用 tcping 或类似的方法。
for ip in $(seq -f "10.1.1.%g" 1 9); do
if tcping -u 200 -q $ip 22; then
echo "yes: $ip"
fi
done

编写脚本可能比较麻烦的另一种方法是使用实​​际的扫描工具,例如 nmap (如 The Matrix所示)。

如果您使用的是网络监视系统,请检查其是否内置了网络扫描工具。 Cacti例如具有 discovery pluginNagios具有 quite a few of them

关于bash - Bash-循环通过ARP表并将IP存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33260210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com