#!/bin/sh set -eu # 采集 Kindle 当前 SSH、网络、进程、配置等诊断信息。 # 输出目录会落在 /mnt/us/ssh-debug/<时间戳>/collect.log。 TS="$(date +%Y%m%d-%H%M%S 2>/dev/null || echo now)" OUT_DIR="/mnt/us/ssh-debug/${TS}" LOG_FILE="${OUT_DIR}/collect.log" mkdir -p "${OUT_DIR}" exec >"${LOG_FILE}" 2>&1 echo "=== BASIC ===" date 2>/dev/null || true id 2>/dev/null || true uname -a 2>/dev/null || true echo "HOME=${HOME:-}" echo echo "=== ROOT PASSWD ENTRY ===" grep '^root:' /etc/passwd 2>/dev/null || true echo echo "=== SSH BINARIES ===" ls -l /usr/sbin/sshd /mnt/us/usbnet/sbin/sshd /usr/bin/dropbear /mnt/us/usbnet/bin/dropbearmulti 2>/dev/null || true echo echo "=== PROCESS LIST ===" ps -ef 2>/dev/null || ps 2>/dev/null || true echo echo "=== LSOF TCP:22 ===" if [ -x /mnt/us/usbnet/bin/lsof ]; then /mnt/us/usbnet/bin/lsof -n -P -iTCP:22 2>/dev/null || true fi echo echo "=== LSOF ALL TCP LISTENERS ===" if [ -x /mnt/us/usbnet/bin/lsof ]; then /mnt/us/usbnet/bin/lsof -n -P -iTCP -sTCP:LISTEN 2>/dev/null || true fi echo echo "=== /PROC/NET/TCP ===" cat /proc/net/tcp 2>/dev/null || true cat /proc/net/tcp6 2>/dev/null || true echo echo "=== NETWORK ===" ifconfig -a 2>/dev/null || ifconfig 2>/dev/null || true route -n 2>/dev/null || netstat -rn 2>/dev/null || true echo echo "=== IPTABLES ===" iptables -S 2>/dev/null || true echo echo "=== USBNET RUN DIR ===" ls -la /mnt/us/usbnet/run 2>/dev/null || true echo echo "=== USBNET CONFIG FILES ===" for f in /mnt/us/usbnet/etc/config /mnt/us/usbnet/etc/sshd_config /mnt/us/usbnet/etc/authorized_keys; do echo "--- ${f} ---" sed -n '1,200p' "${f}" 2>/dev/null || true done echo echo "=== SYSTEM SSHD -T ===" /usr/sbin/sshd -T 2>&1 || true echo echo "=== USBNET SSHD -T ===" /mnt/us/usbnet/sbin/sshd -T -f /mnt/us/usbnet/etc/sshd_config 2>&1 || true echo echo "=== COMMON SSH DIRS ===" for d in /root/.ssh /var/local/root/.ssh "${HOME:-/root}/.ssh" /mnt/us/usbnet/etc/dot.ssh; do echo "--- ${d} ---" ls -la "${d}" 2>/dev/null || true done echo echo "=== DONE ===" echo "${OUT_DIR}"