@@ -63,30 +63,35 @@ def run_command(self, cmd, suppress_message=False, return_output=False):
63
63
"""
64
64
Run a shell command and show the output as it runs
65
65
"""
66
- proc = subprocess .Popen (
67
- cmd , shell = True , stdout = subprocess .PIPE , stderr = subprocess .PIPE
68
- )
69
- full_output = ""
70
- while True :
71
- output = proc .stdout .readline ()
72
- if len (output ) == 0 and proc .poll () is not None :
73
- break
74
- if output :
75
- decoded_output = output .decode ("utf-8" , errors = "ignore" ).strip ()
76
- if not suppress_message :
77
- self .info (decoded_output )
78
- full_output += decoded_output
66
+ original_stdout = sys .stdout
67
+ original_stderr = sys .stderr
68
+ try :
69
+ proc = subprocess .Popen (
70
+ cmd , shell = True , stdout = subprocess .PIPE , stderr = subprocess .PIPE
71
+ )
72
+ full_output = ""
73
+ while True :
74
+ output = proc .stdout .readline ()
75
+ err = proc .stderr .read ()
76
+ if err and not suppress_message :
77
+ self .error (err .decode ("utf-8" , errors = "ignore" ))
78
+ if len (output ) == 0 and proc .poll () is not None :
79
+ break
80
+ if output :
81
+ decoded_output = output .decode ("utf-8" , errors = "ignore" ).strip ()
82
+ if not suppress_message :
83
+ self .info (decoded_output )
84
+ full_output += decoded_output
85
+ except Exception as err : # pylint: disable=broad-except
86
+ pass
87
+ finally :
88
+ sys .stdout = original_stdout
89
+ sys .stderr = original_stderr
90
+ if return_output :
91
+ return full_output
79
92
r = proc .poll ()
80
93
if r == 0 :
81
- if return_output :
82
- return full_output
83
94
return True
84
-
85
- err = proc .stderr .read ()
86
- if not suppress_message :
87
- self .error (err .decode ("utf-8" , errors = "ignore" ))
88
- if return_output :
89
- return full_output
90
95
return False
91
96
92
97
def info (self , message ):
@@ -453,7 +458,7 @@ def get_os(self):
453
458
if os .path .exists ("/etc/os-release" ):
454
459
with open ("/etc/os-release" ) as f :
455
460
if "Raspbian" in f .read ():
456
- release = "Raspian "
461
+ release = "Raspbian "
457
462
if self .run_command ("command -v apt-get" , suppress_message = True ):
458
463
with open ("/etc/os-release" ) as f :
459
464
release_file = f .read ()
0 commit comments