@@ -303,54 +303,56 @@ func SetUserPassword(ctx context.Context, conn remote.RemoteConn, newPass string
303303}
304304
305305func EnableNetworkMode (ctx context.Context , conn remote.RemoteConn ) error {
306- if err := conn .GetCmd ("sudo" , "dpkg-reconfigure" , "openssh-server" ).Run (ctx ); err != nil {
307- return fmt .Errorf ("failed to reconfigure openssh-server: %w" , err )
306+ cmds := [][]string {
307+ {"sudo" , "dpkg-reconfigure" , "openssh-server" },
308+ {"sudo" , "systemctl" , "enable" , "ssh" },
309+ {"sudo" , "systemctl" , "start" , "ssh" },
310+ {"sudo" , "systemctl" , "enable" , "avahi-daemon" },
311+ {"sudo" , "systemctl" , "start" , "avahi-daemon" },
308312 }
309313
310- if err := conn .GetCmd ("sudo" , "systemctl" , "enable" , "ssh" ).Run (ctx ); err != nil {
311- return fmt .Errorf ("failed to enable ssh service: %w" , err )
312- }
313-
314- if err := conn .GetCmd ("sudo" , "systemctl" , "start" , "ssh" ).Run (ctx ); err != nil {
315- return fmt .Errorf ("failed to start ssh service: %w" , err )
314+ for _ , cmd := range cmds {
315+ if err := conn .GetCmd (cmd [0 ], cmd [1 :]... ).Run (ctx ); err != nil {
316+ return fmt .Errorf ("failed to run cmd %q: %w" , strings .Join (cmd , " " ), err )
317+ }
316318 }
317319
318320 return nil
319321}
320322
321323func NetworkModeStatus (ctx context.Context , conn remote.RemoteConn ) (bool , error ) {
322- err := conn .GetCmd ("systemctl" , "is-enabled" , "ssh" ).Run (ctx )
323- if err != nil {
324- var exitErr * exec.ExitError
325- if errors .As (err , & exitErr ) {
326- if exitErr .ExitCode () != 0 {
327- return false , nil
328- }
329- }
330- return false , fmt .Errorf ("failed to check ssh service status: %w" , err )
324+ cmds := [][]string {
325+ {"systemctl" , "is-enabled" , "ssh" },
326+ {"systemctl" , "is-active" , "ssh" },
327+ {"systemctl" , "is-enabled" , "avahi-daemon" },
328+ {"systemctl" , "is-active" , "avahi-daemon" },
331329 }
332330
333- err = conn .GetCmd ("systemctl" , "is-active" , "ssh" ).Run (ctx )
334- if err != nil {
335- var exitErr * exec.ExitError
336- if errors .As (err , & exitErr ) {
337- if exitErr .ExitCode () != 0 {
331+ for _ , cmd := range cmds {
332+ if err := conn .GetCmd (cmd [0 ], cmd [1 :]... ).Run (ctx ); err != nil {
333+ var exitErr * exec.ExitError
334+ if errors .As (err , & exitErr ) && exitErr .ExitCode () != 0 {
338335 return false , nil
339336 }
337+ return false , fmt .Errorf ("failed to run cmd %q: %w" , strings .Join (cmd , " " ), err )
340338 }
341- return false , fmt .Errorf ("failed to check ssh service status: %w" , err )
342339 }
343340
344341 return true , nil
345342}
346343
347344func DisableNetworkMode (ctx context.Context , conn remote.RemoteConn ) error {
348- if err := conn .GetCmd ("sudo" , "systemctl" , "disable" , "ssh" ).Run (ctx ); err != nil {
349- return fmt .Errorf ("failed to disable ssh service: %w" , err )
345+ cmds := [][]string {
346+ {"sudo" , "systemctl" , "disable" , "ssh" },
347+ {"sudo" , "systemctl" , "stop" , "ssh" },
348+ {"sudo" , "systemctl" , "disable" , "avahi-daemon" },
349+ {"sudo" , "systemctl" , "stop" , "avahi-daemon" },
350350 }
351351
352- if err := conn .GetCmd ("sudo" , "systemctl" , "stop" , "ssh" ).Run (ctx ); err != nil {
353- return fmt .Errorf ("failed to stop ssh service: %w" , err )
352+ for _ , cmd := range cmds {
353+ if err := conn .GetCmd (cmd [0 ], cmd [1 :]... ).Run (ctx ); err != nil {
354+ return fmt .Errorf ("failed to run cmd %q: %w" , strings .Join (cmd , " " ), err )
355+ }
354356 }
355357
356358 return nil
0 commit comments