generated from pavel.muhortov/template-python
	clean commit
This commit is contained in:
		
							parent
							
								
									b26d21152e
								
							
						
					
					
						commit
						2a576407c1
					
				
							
								
								
									
										43
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								README.md
									
									
									
									
									
								
							|  | @ -1,42 +1,3 @@ | ||||||
| # template-python | # my_route | ||||||
| 
 | 
 | ||||||
| Template repository for projects on python | Route manager by CIDR lists | ||||||
| 
 |  | ||||||
| * [`script.py`](https://git.hmp.today/pavel.muhortov/template-python#script-py) |  | ||||||
| 
 |  | ||||||
| ____ |  | ||||||
| 
 |  | ||||||
| ## `script.py` |  | ||||||
| 
 |  | ||||||
| **Description:**   |  | ||||||
| > returning current username if privileged rights are exist   |  | ||||||
| > or   |  | ||||||
| > returning error, if privileged rights are not exist |  | ||||||
| 
 |  | ||||||
| **Dependencies:**   |  | ||||||
| > |  | ||||||
| > * Python 3 (tested version 3.9.5) |  | ||||||
| 
 |  | ||||||
| |  PARAMETERS | DESCRIPTION | DEFAULT| |  | ||||||
| |-------------|-------------|--------| |  | ||||||
| |**[-s,--show]**|"" - execution with pauses.<br/>"qn" - execution without pauses.|| |  | ||||||
| |**[-c,--conf]**|path to configuration file|`./script.conf`| |  | ||||||
| 
 |  | ||||||
| Example usage in terminal with Python on Linux: |  | ||||||
| 
 |  | ||||||
| ```shell |  | ||||||
| python3 ./script.py |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Example usage in terminal with make the script executable on Linux: |  | ||||||
| 
 |  | ||||||
| ```shell |  | ||||||
| chmod u+x ./script.py |  | ||||||
| script.py -s qn -c ./script.conf |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Example usage in terminal with Python on Windows: |  | ||||||
| 
 |  | ||||||
| ```shell |  | ||||||
| python .\script.py |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
							
								
								
									
										107
									
								
								script.py
									
									
									
									
									
								
							
							
						
						
									
										107
									
								
								script.py
									
									
									
									
									
								
							|  | @ -1,107 +0,0 @@ | ||||||
| #!/usr/bin/env python3 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| import logging |  | ||||||
| from datetime import datetime |  | ||||||
| from getpass import getuser |  | ||||||
| from os import path, sep, chdir, devnull |  | ||||||
| from sys import platform |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def execquite(code: int) -> None: |  | ||||||
|     """Exit procedure. |  | ||||||
| 
 |  | ||||||
|     Args: |  | ||||||
|         code (int): exitcode |  | ||||||
|     """ |  | ||||||
|     if args['show'] != 'qn': |  | ||||||
|         input("Press [ENTER] to continue...") |  | ||||||
|     global time_start |  | ||||||
|     time_execute = datetime.now() - time_start |  | ||||||
|     logging.info(msg='execution time is ' + str(time_execute) + '. Exit.') |  | ||||||
|     exit(code) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def getconfig(config: str) -> dict: |  | ||||||
|     """Simple config reader. |  | ||||||
| 
 |  | ||||||
|     Args: |  | ||||||
|         config (str): custom configuration file path |  | ||||||
| 
 |  | ||||||
|     Returns: |  | ||||||
|         dict: dictionary as "key":"value" |  | ||||||
|     """ |  | ||||||
|     dictionary = {} |  | ||||||
|     dictionary['log_root'] = None |  | ||||||
|     if path.exists(config): |  | ||||||
|         with open(config) as file: |  | ||||||
|             raw = file.read() |  | ||||||
|             for line in raw.splitlines(): |  | ||||||
|                 if not line.lstrip().startswith('#') and "=" in line: |  | ||||||
|                     if "log_root=" in line: |  | ||||||
|                         dictionary['log_root'] = line.split('=')[1].strip() |  | ||||||
|     return dictionary |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def checkroot() -> bool: |  | ||||||
|     """Crossplatform privileged rights checker. |  | ||||||
| 
 |  | ||||||
|     Returns: |  | ||||||
|         bool: True - if privileged rights, False - if not privileged rights |  | ||||||
|     """ |  | ||||||
|     if platform.startswith('linux') or platform.startswith('darwin'): |  | ||||||
|         from os import geteuid |  | ||||||
|         if geteuid() != 0: |  | ||||||
|             return False |  | ||||||
|         else: |  | ||||||
|             return True |  | ||||||
|     elif platform.startswith('win32'): |  | ||||||
|         import ctypes |  | ||||||
|         return ctypes.windll.shell32.IsUserAnAdmin() |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     from argparse import ArgumentParser |  | ||||||
| 
 |  | ||||||
|     global time_start |  | ||||||
|     time_start = datetime.now() |  | ||||||
| 
 |  | ||||||
|     args = ArgumentParser( |  | ||||||
|         prog='script', |  | ||||||
|         description='Checking privileged rights', |  | ||||||
|         epilog='Dependencies: ' |  | ||||||
|                '- Python 3 (tested version 3.9.5)' |  | ||||||
|     ) |  | ||||||
|     args.add_argument('-s', '--show', type=str, default=None, required=False, |  | ||||||
|                       help='qn - execution without pauses') |  | ||||||
|     args.add_argument('-c', '--conf', type=str, default=None, required=False, |  | ||||||
|                       help='path to configuration file') |  | ||||||
|     args = vars(args.parse_args()) |  | ||||||
| 
 |  | ||||||
|     conf = path.abspath(__file__).replace('.py', '.conf') |  | ||||||
|     if args['conf']: |  | ||||||
|         conf = args['conf'] |  | ||||||
|     conf = getconfig(conf) |  | ||||||
|     log_path = devnull |  | ||||||
|     if conf['log_root']: |  | ||||||
|         log_path = conf['log_root'] + sep + path.splitext(path.basename(__file__))[0] + '.log' |  | ||||||
|     logging.basicConfig( |  | ||||||
|         format='%(asctime)s %(levelname)s: %(message)s', |  | ||||||
|         datefmt='%Y-%m-%d_%H.%M.%S', |  | ||||||
|         handlers=[ |  | ||||||
|             logging.FileHandler( |  | ||||||
|                 filename=log_path, |  | ||||||
|                 mode='a' |  | ||||||
|             ), |  | ||||||
|             logging.StreamHandler() |  | ||||||
|         ], |  | ||||||
|         level='INFO' |  | ||||||
|     ) |  | ||||||
| 
 |  | ||||||
|     chdir(path.split(path.abspath(__file__))[0]) |  | ||||||
|     if checkroot(): |  | ||||||
|         print('Running as', getuser()) |  | ||||||
|         execquite(0) |  | ||||||
|     else: |  | ||||||
|         logging.warning(msg='Restart this as root!') |  | ||||||
|         execquite(1) |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user