Files
kindle-calendar/scripts/kindle/ssh-collect.sh
2026-03-15 14:54:51 +08:00

88 lines
2.1 KiB
Bash

#!/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}"