@@ -105,14 +105,24 @@ def add_eval_args(args, cmd):
105
105
106
106
107
107
def pre_scan_fix (args ):
108
- with tempfile .NamedTemporaryFile (delete = False ) as remediation_script :
108
+ with tempfile .NamedTemporaryFile () as remediation_script :
109
109
gen_fix_cmd = [
110
110
"oscap" , "xccdf" , "generate" , "fix" , "--fix-type" , "bootc" ,
111
111
"--output" , remediation_script .name ]
112
112
add_common_args (args , gen_fix_cmd )
113
113
gen_fix_cmd .append (args .data_stream )
114
- subprocess .run (gen_fix_cmd , check = True )
115
- subprocess .run (["bash" , remediation_script .name ], check = True )
114
+ try :
115
+ subprocess .run (gen_fix_cmd , check = True , capture_output = True )
116
+ except subprocess .CalledProcessError as e :
117
+ raise RuntimeError (
118
+ f"OpenSCAP generate fix failed with return code "
119
+ f"{ e .returncode } .\n Output: { e .stderr .decode ()} " )
120
+ try :
121
+ subprocess .run (["bash" , remediation_script .name ], check = True )
122
+ except subprocess .CalledProcessError as e :
123
+ raise RuntimeError (
124
+ f"Remediation script failed with return code "
125
+ f"{ e .returncode } ." )
116
126
117
127
118
128
def scan_and_remediate (args ):
@@ -125,15 +135,20 @@ def scan_and_remediate(args):
125
135
subprocess .run (oscap_cmd , env = env , check = True )
126
136
except subprocess .CalledProcessError as e :
127
137
if e .returncode not in [0 , 2 ]:
128
- print (e , file = sys .stderr )
138
+ raise RuntimeError (
139
+ f"OpenSCAP scan failed with return code { e .returncode } .\n " )
129
140
130
141
131
142
def main ():
132
143
args = parse_args ()
133
144
verify_bootc_build_env ()
134
145
install_sce_dependencies ()
135
- pre_scan_fix (args )
136
- scan_and_remediate (args )
146
+ try :
147
+ pre_scan_fix (args )
148
+ scan_and_remediate (args )
149
+ except RuntimeError as e :
150
+ print (e , file = sys .stderr )
151
+ sys .exit (1 )
137
152
138
153
139
154
if __name__ == "__main__" :
0 commit comments