@@ -15,16 +15,29 @@ def _run(cmd):
1515 """Run a command, capturing output and raising with details on failure."""
1616 result = subprocess .run (cmd , capture_output = True , text = True )
1717 if result .returncode != 0 :
18- raise RuntimeError (
19- f"Command { cmd !r} failed (rc={ result .returncode } )\n "
20- f"stdout: { result .stdout } \n stderr: { result .stderr } "
21- )
18+ diag = f"Command { cmd !r} failed (rc={ result .returncode } )\n "
19+ diag += f"stdout: { result .stdout } \n stderr: { result .stderr } \n "
20+ # Gather extra diagnostics for service failures
21+ for diag_cmd in [
22+ ["sudo" , "systemctl" , "status" , "urbackupsrv" , "--no-pager" ],
23+ ["sudo" , "journalctl" , "-xeu" , "urbackupsrv" , "--no-pager" , "-n" , "100" ],
24+ ["ls" , "-la" , "/var/urbackup/" ],
25+ ["id" , "urbackup" ],
26+ ]:
27+ try :
28+ d = subprocess .run (diag_cmd , capture_output = True , text = True )
29+ diag += f"\n === { ' ' .join (diag_cmd )} (rc={ d .returncode } ) ===\n "
30+ diag += d .stdout + d .stderr
31+ except Exception as e :
32+ diag += f"\n === { ' ' .join (diag_cmd )} FAILED: { e } ===\n "
33+ raise RuntimeError (diag )
2234 return result
2335
2436
2537def _restart_clean_server ():
2638 """Stop urbackupsrv, wipe /var/urbackup/, start fresh."""
27- _run (["sudo" , "systemctl" , "stop" , "urbackupsrv" ])
39+ subprocess .run (["sudo" , "systemctl" , "stop" , "urbackupsrv" ],
40+ capture_output = True ) # ignore errors on stop
2841 _run (["sudo" , "rm" , "-rf" , "/var/urbackup/" ])
2942 _run (["sudo" , "mkdir" , "-p" , "/var/urbackup/" ])
3043 _run (["sudo" , "chown" , "urbackup:urbackup" , "/var/urbackup/" ])
0 commit comments