69 lines
2.2 KiB
Bash
Executable File
69 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Mac: найти Fedora в сети хотспота.
|
||
# bash docs/old_mac/scripts/discover-fedora.sh
|
||
set -euo pipefail
|
||
|
||
SUBNET=""
|
||
IFACE="en0"
|
||
|
||
wifi_ip() {
|
||
ifconfig "$IFACE" 2>/dev/null | awk '/inet / {print $2; exit}'
|
||
}
|
||
|
||
IP="$(wifi_ip || true)"
|
||
[ -n "$IP" ] || { printf 'Wi-Fi IP не найден на %s\n' "$IFACE"; exit 1; }
|
||
|
||
SUBNET="$(printf '%s\n' "$IP" | awk -F. '{print $1"."$2"."$3}')"
|
||
printf 'Mac Wi-Fi: %s (подсеть %s.0/24)\n\n' "$IP" "$SUBNET"
|
||
|
||
# mDNS
|
||
printf '%s\n' '--- mDNS ---'
|
||
for name in fedora.local fedora; do
|
||
FIP=""
|
||
if command -v dscacheutil >/dev/null 2>&1; then
|
||
FIP="$(dscacheutil -q host -a name "$name" 2>/dev/null | awk '/ip_address:/ {print $2; exit}')"
|
||
fi
|
||
[ -n "$FIP" ] || FIP="$(ping -c 1 -t 1 "$name" 2>/dev/null | sed -n 's/.*(\([0-9.]*\)).*/\1/p' | head -1)"
|
||
if [ -n "$FIP" ]; then
|
||
printf '%s → %s\n' "$name" "$FIP"
|
||
if ping -c 1 -W 1000 "$FIP" >/dev/null 2>&1; then
|
||
printf ' ping: ok\n'
|
||
else
|
||
printf ' ping: FAIL (вероятна изоляция клиентов хотспота)\n'
|
||
fi
|
||
if nc -z -w 2 "$FIP" 22 2>/dev/null; then
|
||
printf ' ssh:22: open\n'
|
||
else
|
||
printf ' ssh:22: closed/unreachable\n'
|
||
fi
|
||
if nc -z -w 2 "$FIP" 3389 2>/dev/null; then
|
||
printf ' rdp:3389: open\n'
|
||
else
|
||
printf ' rdp:3389: closed/unreachable\n'
|
||
fi
|
||
fi
|
||
done
|
||
|
||
printf '%s\n' '--- ARP ---'
|
||
arp -a 2>/dev/null | grep "$SUBNET" | grep -v 'incomplete' || true
|
||
|
||
printf '%s\n' '--- Быстрый sweep (ssh:22) ---'
|
||
FOUND=0
|
||
for i in $(seq 1 254); do
|
||
T="$SUBNET.$i"
|
||
[ "$T" = "$IP" ] && continue
|
||
nc -z -G 1 -w 1 "$T" 22 2>/dev/null && printf 'ssh open: %s\n' "$T" && FOUND=1
|
||
done
|
||
[ "$FOUND" -eq 0 ] && printf '(ни одного ssh:22 не найдено)\n'
|
||
|
||
printf '%s\n' '--- BT PAN fallback ---'
|
||
printf 'Проверка 172.20.99.1 (Fedora BT PAN)…\n'
|
||
if ping -c 1 -W 1000 172.20.99.1 >/dev/null 2>&1; then
|
||
printf ' ping 172.20.99.1: ok\n'
|
||
else
|
||
printf ' ping 172.20.99.1: нет (запустите setup-bt-pan-fedora.sh на Fedora)\n'
|
||
fi
|
||
|
||
printf '\nПодсказка: если ping FAIL но mDNS есть — отключите AP isolation на телефоне\n'
|
||
printf 'или используйте Bluetooth PAN: REMOTE_ACCESS.md §4\n'
|