68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
# python debug_ssh.py 192.168.11.xxx "3.0.6p5.bin" admin123a
|
|
import sys
|
|
import logging
|
|
import paramiko
|
|
from ssh_flasher import flash_device_ssh
|
|
|
|
def main():
|
|
print("="*50)
|
|
print("🔧 CÔNG CỤ DEBUG SSH FLASH CHO MIRAV3")
|
|
print("="*50)
|
|
|
|
if len(sys.argv) < 3:
|
|
print("\nSử dụng: source venv/bin/activate && python debug_ssh.py <IP_THIET_BI> <DUONG_DAN_FIRMWARE> [MAT_KHAU_SSH] [--update]")
|
|
print("Ví dụ: python debug_ssh.py 192.168.11.102 ./3.0.6p5.bin admin123a --update")
|
|
sys.exit(1)
|
|
|
|
args = sys.argv[1:]
|
|
is_update_mode = "--update" in args
|
|
if is_update_mode:
|
|
args.remove("--update")
|
|
|
|
test_ip = args[0]
|
|
test_fw = args[1]
|
|
test_pass = args[2] if len(args) > 2 else "admin123a"
|
|
|
|
print(f"\n[+] Thông số đầu vào:")
|
|
print(f" - IP Thiết bị : {test_ip}")
|
|
print(f" - Firmware : {test_fw}")
|
|
print(f" - Pass SSH : {test_pass}")
|
|
print(f" - Phân luồng : {'UPDATE FW (set_passwd=False)' if is_update_mode else 'NẠP MỚI FW (set_passwd=True)'}\n")
|
|
|
|
print("[*] BẬT CHẾ ĐỘ LOG CHI TIẾT CỦA PARAMIKO/SSH...")
|
|
# Bật log xuất trực tiếp ra màn hình console để dễ nhìn lỗi
|
|
logging.getLogger("paramiko").setLevel(logging.DEBUG)
|
|
console_handler = logging.StreamHandler(sys.stdout)
|
|
console_handler.setFormatter(logging.Formatter('%(asctime)s [SSH_LOG] %(message)s'))
|
|
logging.getLogger("paramiko").addHandler(console_handler)
|
|
|
|
print("\n" + "-"*50)
|
|
print("BẮT ĐẦU QUÁ TRÌNH THỰC THI...")
|
|
print("-"*50 + "\n")
|
|
|
|
def print_status(msg):
|
|
print(f"\n---> TRẠNG THÁI APP: {msg}")
|
|
|
|
# Gọi hàm flash (có bật tính năng tự đổi passwd về admin123a trước nếu cần)
|
|
try:
|
|
result = flash_device_ssh(
|
|
ip=test_ip,
|
|
firmware_path=test_fw,
|
|
password=test_pass,
|
|
set_passwd=not is_update_mode,
|
|
status_cb=print_status
|
|
)
|
|
|
|
print("\n" + "="*50)
|
|
if result == "DONE":
|
|
print("🟢 KẾT QUẢ: THÀNH CÔNG (DONE)")
|
|
else:
|
|
print(f"🔴 KẾT QUẢ: THẤT BẠI - {result}")
|
|
print("="*50)
|
|
|
|
except Exception as e:
|
|
print(f"\n🔴 ERROR UNHANDLED EXCEPTION: {e}")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|