forked from root/threadr.lostcave.ddnss.de
				
			added support for command execution
							parent
							
								
									723d082116
								
							
						
					
					
						commit
						e2d684fff3
					
				|  | @ -1,14 +1,32 @@ | |||
| #!/usr/bin/python2 | ||||
| 
 | ||||
| print """ | ||||
| Variable Grabbler - version 3.3 | ||||
| Variable Grabbler - version 3.4 | ||||
| -------------------------------""" | ||||
| ################################################################ | ||||
| # Changes in this version: | ||||
| #=============================================================== | ||||
| # * added support for command execution | ||||
| # * some internal technicalities that should not impact features | ||||
| # * Yes. | ||||
| # | ||||
| 
 | ||||
| ################################################################ | ||||
| # Exit codes: | ||||
| #=============================================================== | ||||
| # 0 => normal exit | ||||
| # 1 => argument error | ||||
| # 2 => error while processing | ||||
| # | ||||
| 
 | ||||
| # definitions | ||||
| import os, json, sys | ||||
| import os, json, sys, subprocess | ||||
| 
 | ||||
| def print_err(text): | ||||
|   print >> sys.stderr, text | ||||
| 
 | ||||
| if not len(sys.argv)==3: | ||||
|   print >> sys.stderr, "Error: Exactly two arguments required: \"python variable_grabbler.py <file to be rewritten> <config file>\"" | ||||
|   print_err("Error: Exactly two arguments required: \"python variable_grabbler.py <file to be rewritten> <config file>\"") | ||||
|   sys.exit(1) | ||||
| 
 | ||||
| print "Reading config file...", | ||||
|  | @ -30,9 +48,21 @@ for variable in config_values: | |||
|     file_replacement.close() | ||||
|   elif config_values[variable][0] == "exec": | ||||
|     print "Found array. Executing command instead: " + config_values[variable][1] | ||||
|     #Add code to replace variable with command output here | ||||
|     print >> sys.stderr, "Error: This option is not yet supported." | ||||
|     replacement = "" | ||||
|     process = subprocess.Popen(config_values[variable][1], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | ||||
|     stdout, stderr = process.communicate() | ||||
|     if process.returncode == 0: | ||||
|       print "Process exited normally. Replacing variable with the output from STDOUT..." | ||||
|       print_err("Subprocess exited normally.\nThe following error messages were produced:") | ||||
|       print_err(stderr) | ||||
|       replacement = stdout | ||||
|     else: | ||||
|       print "Process exited abnormally. Exiting. No changes will be made." | ||||
|       print_err("Subprocess exited abnormally. Exiting.\nThe following output was produced:") | ||||
|       print_err(stdout) | ||||
|       print_err("The following error messages were produced:") | ||||
|       print_err(stderr) | ||||
|       print "Exiting now." | ||||
|       sys.exit(2) | ||||
|   else: | ||||
|     replacement = config_values[variable] | ||||
|     print repr(replacement) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 BodgeMaster
						BodgeMaster