#!/bin/sh # net_collect.sh - collect NIC and driver diagnostics in busybox/initramfs OUT="${1:-/tmp/netdiag-$(date +%Y%m%d-%H%M%S).log}" echo "==== NET DIAGNOSTIC DUMP $(date) ====" > "$OUT" echo >> "$OUT" echo "== uname -a ==" >> "$OUT" uname -a >> "$OUT" 2>&1 echo >> "$OUT" echo "== /proc/cmdline ==" >> "$OUT" cat /proc/cmdline >> "$OUT" 2>&1 echo >> "$OUT" echo "== Loaded modules ==" >> "$OUT" # busybox lsmod is fine lsmod >> "$OUT" 2>&1 echo >> "$OUT" echo "== PCI info for Intel NICs (if any) ==" >> "$OUT" if [ -d /sys/bus/pci/devices ]; then for p in /sys/bus/pci/devices/*; do [ -e "$p/vendor" ] || continue vend=$(cat "$p/vendor" 2>/dev/null) dev=$(cat "$p/device" 2>/dev/null) # 0x8086 is Intel if [ "$vend" = "0x8086" ]; then echo "--- $p ---" >> "$OUT" echo "vendor=$vend device=$dev" >> "$OUT" [ -e "$p/class" ] && echo "class=$(cat "$p/class")" >> "$OUT" [ -e "$p/subsystem_vendor" ] && echo "subsystem_vendor=$(cat "$p/subsystem_vendor")" >> "$OUT" [ -e "$p/subsystem_device" ] && echo "subsystem_device=$(cat "$p/subsystem_device")" >> "$OUT" fi done fi echo >> "$OUT" echo "== Network interfaces ==" >> "$OUT" for n in /sys/class/net/*; do IF=$(basename "$n") echo "--- $IF ---" >> "$OUT" if [ -e "$n/device/driver" ]; then drv=$(readlink -f "$n/device/driver" 2>/dev/null | sed 's#.*/##') echo "driver=$drv" >> "$OUT" else echo "driver=(none)" >> "$OUT" fi echo "ip link show $IF:" >> "$OUT" ip link show "$IF" >> "$OUT" 2>&1 echo "ethtool $IF:" >> "$OUT" ethtool "$IF" >> "$OUT" 2>&1 echo "ethtool -k $IF:" >> "$OUT" ethtool -k "$IF" >> "$OUT" 2>&1 echo "ethtool -g $IF:" >> "$OUT" ethtool -g "$IF" >> "$OUT" 2>&1 echo "ethtool -S $IF:" >> "$OUT" ethtool -S "$IF" >> "$OUT" 2>&1 done echo >> "$OUT" echo "== e1000e module parameters (if present) ==" >> "$OUT" if [ -d /sys/module/e1000e ]; then for p in /sys/module/e1000e/parameters/*; do name=$(basename "$p") val=$(cat "$p" 2>/dev/null) echo "$name=$val" >> "$OUT" done else echo "e1000e module not loaded" >> "$OUT" fi echo >> "$OUT" echo "== dmesg (last 200 lines) ==" >> "$OUT" dmesg | tail -n 200 >> "$OUT" 2>&1 echo >> "$OUT" echo "==== END ====" >> "$OUT" echo "Written diagnostics to: $OUT"