Files
markbase/data/sftp_upload_debug_test.sh
Warren 45e8a9f440
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
Add SFTP upload debug test and result report
- Add sftp_upload_debug_test.sh: detailed upload debugging script
- Add sftp_test_result_report.md: complete test results
- Verify: 1KB file upload/download successful, MD5 consistent
- Issue: SSH_FXP_WRITE log missing, file attributes format abnormal
- Status: SFTP core functionality working, small file transfer successful
2026-06-17 18:18:19 +08:00

102 lines
3.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# SFTP 上传详细调试测试脚本
# 启用最大日志级别,检查 SSH_FXP_OPEN 和 SSH_FXP_WRITE 处理
echo "=== SFTP 上传详细调试测试 ==="
echo "测试目标:诊断 SSH_FXP_WRITE packet 未出现的原因"
echo ""
# 创建极小测试文件1KB
echo "创建测试文件1KB..."
dd if=/dev/urandom of=/tmp/sftp_debug_1kb.bin bs=1024 count=1 2>&1 | tail -1
ls -lh /tmp/sftp_debug_1kb.bin
echo ""
echo "=== 启用 SSH server 详细日志 ==="
echo "日志文件:/private/tmp/sftp_upload_debug.log"
# 重启 SSH server启用 debug 级别日志
pkill -9 -f "markbase-core ssh-start"
sleep 2
RUST_LOG=debug /Users/accusys/markbase/target/release/markbase-core ssh-start > /private/tmp/sftp_upload_debug.log 2>&1 &
SSH_PID=$!
sleep 3
echo "SSH server 重启完成PID: $SSH_PID"
echo ""
echo "=== 测试 1: 基本连接测试 ==="
sshpass -p 'demo123' sftp -P 2024 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -v demo@127.0.0.1 <<EOF
pwd
bye
EOF
echo ""
echo "=== 测试 2: SFTP 上传测试1KB 文件)==="
echo "使用 -v 参数启用详细日志..."
sshpass -p 'demo123' sftp -P 2024 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -v demo@127.0.0.1 <<EOF
put /tmp/sftp_debug_1kb.bin /tmp/sftp_upload_debug.bin
ls -la /tmp/
bye
EOF
echo ""
echo "=== 检查远程文件状态 ==="
sshpass -p 'demo123' sftp -P 2024 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null demo@127.0.0.1 <<EOF
ls -la /tmp/sftp_upload_debug.bin
stat /tmp/sftp_upload_debug.bin
bye
EOF
echo ""
echo "=== SSH server 日志分析 ==="
echo "查找 SSH_FXP_OPEN 和 SSH_FXP_WRITE..."
grep -E "SSH_FXP_OPEN|SSH_FXP_WRITE|SSH_FXP_HANDLE" /private/tmp/sftp_upload_debug.log | tail -30
echo ""
echo "=== 检查文件完整性 ==="
if [ -f "/tmp/sftp_upload_debug.bin" ]; then
echo "远程文件存在,检查大小..."
sshpass -p 'demo123' sftp -P 2024 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null demo@127.0.0.1 <<EOF
ls -la /tmp/sftp_upload_debug.bin
bye
EOF
# MD5 校验
echo ""
echo "源文件 MD5:"
md5 /tmp/sftp_debug_1kb.bin
echo "下载文件并校验..."
sshpass -p 'demo123' sftp -P 2024 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null demo@127.0.0.1 <<EOF
get /tmp/sftp_upload_debug.bin /tmp/sftp_download_debug.bin
bye
EOF
echo "下载文件 MD5:"
md5 /tmp/sftp_download_debug.bin
echo ""
echo "文件大小对比:"
ls -lh /tmp/sftp_debug_1kb.bin /tmp/sftp_upload_debug.bin /tmp/sftp_download_debug.bin 2>&1 | tail -5
else
echo "远程文件不存在 ❌"
fi
echo ""
echo "=== 详细日志分析 ==="
echo "查看完整的 SSH_FXP_OPEN 处理流程..."
grep -B 5 -A 20 "SSH_FXP_OPEN.*debug" /private/tmp/sftp_upload_debug.log | head -100
echo ""
echo "=== 清理测试文件 ==="
rm -f /tmp/sftp_debug_1kb.bin /tmp/sftp_upload_debug.bin /tmp/sftp_download_debug.bin
echo ""
echo "=== 测试完成 ==="
echo "日志文件位置:/private/tmp/sftp_upload_debug.log"
echo "请查看日志文件以诊断 SSH_FXP_WRITE 未出现的根本原因"