作者: Herman Ye @Auromix
版本: V1.0
测试环境: Ubuntu20.04
更新日期: 2023/09/13
注1: @Auromix 是一个机器人爱好者开源组织。
注2: 本文在更新日期经过测试,确认有效。
同一机器人不同硬件设备通过局域网有线通信,但存在通信异常,通过命令或脚本来查找各设备。
提示: HWaddress
值为incomplete
是不正常的设备
arp -n
#!/bin/bash
#
# Copyright 2023 Herman Ye @Auromix
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Description: This script finds your device in the specified network segment, such as robot arm, lidar.
# Version: 1.0
# Date: 2023-09-13
# Author: Herman Ye @Auromix
#
# set -x
# Prompt the user to enter a network segment
read -p "Please enter a network segment (press Enter for default value 192.168.1): " network
# Set a default value if the user presses Enter
network="${network:-192.168.1}"
echo "Finding devices from $network.1 to $network.254"
# Initialize an array to store reachable devices
reachable_devices=()
# Iterate through all IP addresses in the specified network segment
for ip in ${network}.{1..254}; do
# Use the ping command to check if the device is reachable
# -c 1 means send only one ICMP request, -W 1 means wait for 1 second
if ping -c 1 -W 1 $ip >/dev/null; then
echo "Device at $ip is reachable"
# Add reachable devices to the array
reachable_devices+=("$ip")
else
echo "Device at $ip is not reachable"
fi
done
# Print information about all reachable devices
echo "All reachable devices:"
for device in "${reachable_devices[@]}"; do
echo "$device"
done