@@ -57,10 +57,7 @@ def execute_command_with_sudo_retry(host, command_kwargs, execute_command):
5757 if return_code != 0 and combined_output :
5858 last_line = combined_output [- 1 ][1 ]
5959 if last_line == 'sudo: a password is required' :
60- command_kwargs ['use_sudo_password' ] = get_sudo_password (
61- host ,
62- use_sudo_password = True , # ask for the password
63- )
60+ command_kwargs ['use_sudo_password' ] = True # ask for the password
6461 return_code , combined_output = execute_command ()
6562
6663 return return_code , combined_output
@@ -166,7 +163,7 @@ def write_stdin(stdin, buffer):
166163 buffer .close ()
167164
168165
169- def get_sudo_password (host , use_sudo_password ):
166+ def _get_sudo_password (host , use_sudo_password ):
170167 sudo_askpass_uploaded = host .connector_data .get ('sudo_askpass_uploaded' , False )
171168 if not sudo_askpass_uploaded :
172169 host .put_file (get_sudo_askpass_exe (), SUDO_ASKPASS_EXE_FILENAME )
@@ -182,7 +179,7 @@ def get_sudo_password(host, use_sudo_password):
182179 else :
183180 sudo_password = use_sudo_password
184181
185- return ( SUDO_ASKPASS_EXE_FILENAME , shlex_quote (sudo_password ) )
182+ return shlex_quote (sudo_password )
186183
187184
188185def remove_any_sudo_askpass_file (host ):
@@ -230,6 +227,10 @@ def make_unix_command_for_host(state, host, *command_args, **command_kwargs):
230227 ('use_su_login' , 'preserve_su_env' , 'su_shell' ),
231228 )
232229
230+ use_sudo_password = command_kwargs .pop ('use_sudo_password' , None )
231+ if use_sudo_password :
232+ command_kwargs ['sudo_password' ] = _get_sudo_password (host , use_sudo_password )
233+
233234 return make_unix_command (* command_args , ** command_kwargs )
234235
235236
@@ -247,7 +248,7 @@ def make_unix_command(
247248 sudo = False ,
248249 sudo_user = None ,
249250 use_sudo_login = False ,
250- use_sudo_password = False ,
251+ sudo_password = False ,
251252 preserve_sudo_env = False ,
252253 # Doas config
253254 doas = False ,
@@ -284,18 +285,17 @@ def make_unix_command(
284285 if doas_user :
285286 command_bits .extend (['-u' , doas_user ])
286287
287- if use_sudo_password :
288- askpass_filename , sudo_password = use_sudo_password
288+ if sudo_password :
289289 command_bits .extend ([
290290 'env' ,
291- 'SUDO_ASKPASS={0}' .format (askpass_filename ),
291+ 'SUDO_ASKPASS={0}' .format (SUDO_ASKPASS_EXE_FILENAME ),
292292 MaskString ('{0}={1}' .format (SUDO_ASKPASS_ENV_VAR , sudo_password )),
293293 ])
294294
295295 if sudo :
296296 command_bits .extend (['sudo' , '-H' ])
297297
298- if use_sudo_password :
298+ if sudo_password :
299299 command_bits .extend (['-A' , '-k' ]) # use askpass, disable cache
300300 else :
301301 command_bits .append ('-n' ) # disable prompt/interactivity
0 commit comments