41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
"""
|
|
Script di diagnostica TFTP client.
|
|
Effettua upload di un file di test e logga dettagliatamente la risposta del server.
|
|
"""
|
|
import io
|
|
import logging
|
|
from target_simulator.utils.tftp_client import TFTPClient, TFTPError
|
|
|
|
# Configurazione logging
|
|
logging.basicConfig(level=logging.INFO)
|
|
logger = logging.getLogger("tftp_diag")
|
|
|
|
def tftp_diagnose(ip, port, remote_filename="MON:diag_test.txt"):
|
|
logger.info(f"[DIAG] Step 1: Creazione TFTPClient per {ip}:{port}")
|
|
client = TFTPClient(ip, port)
|
|
test_content = "diagnostic test\n"
|
|
in_memory_file = io.StringIO(test_content)
|
|
logger.info(f"[DIAG] Step 2: Upload di file di test '{remote_filename}'")
|
|
try:
|
|
success = client.upload(remote_filename, in_memory_file, mode="netascii")
|
|
if success:
|
|
logger.info(f"[DIAG] Step 3: Upload riuscito su '{remote_filename}'")
|
|
return True
|
|
else:
|
|
logger.error(f"[DIAG] Step 3: Upload fallito senza eccezione.")
|
|
return False
|
|
except TFTPError as e:
|
|
logger.error(f"[DIAG] Step 3: TFTPError: {e}")
|
|
return False
|
|
except Exception as e:
|
|
logger.error(f"[DIAG] Step 3: Eccezione generica: {e}")
|
|
import traceback
|
|
logger.error(traceback.format_exc())
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
# Sostituisci con IP e porta del tuo server TFTP
|
|
ip = "127.0.0.1"
|
|
port = 50069
|
|
tftp_diagnose(ip, port)
|