()
| 241 | MasterPrompt = "\033[1;4;37mMaster\033[0m > " |
| 242 | ConsolePrompt = "\033[1;4;37mMaster\033[0m > " |
| 243 | async def MasterConsole(): |
| 244 | while True: |
| 245 | #Python 3.7 3.8 |
| 246 | #print(ConsolePrompt, end="") |
| 247 | #console_cmd = await asyncio.get_running_loop().run_in_executor(None, input) |
| 248 | |
| 249 | #Python 3.9 3.10 3.11 ...... |
| 250 | if Puppet_Master.current_session: |
| 251 | ConsolePrompt = f"(\033[1;4;34m{Puppet_Master.current_session['hash'][:8]}\033[0m) > " |
| 252 | else: |
| 253 | ConsolePrompt = MasterPrompt |
| 254 | console_cmd = await asyncio.to_thread(input, ConsolePrompt) |
| 255 | console_cmd = console_cmd.strip() |
| 256 | |
| 257 | if console_cmd == "exit": |
| 258 | for handler in Puppet_Master.handlers: |
| 259 | handler.close() |
| 260 | break |
| 261 | |
| 262 | elif console_cmd.split() and console_cmd.split()[0] == "sessions" : |
| 263 | print( |
| 264 | "Sessions {}".format(len(Puppet_Master.sessions)).ljust(32," ") + " " + |
| 265 | "Hostname".ljust(20," ") + " " + |
| 266 | "Username".ljust(8," ") + " " + |
| 267 | "CPU " |
| 268 | ) |
| 269 | print( |
| 270 | "="*32 + " " + |
| 271 | "="*20 + " " + |
| 272 | "="*8 + " " + |
| 273 | "="*3 + " " |
| 274 | ) |
| 275 | for session in Puppet_Master.sessions: |
| 276 | print(f"\033[1;37m{session['hash']}\033[0m {session['hostname'].ljust(20,' ')} {session['username'].ljust(8,' ')} {session['core'].ljust(3,' ')} {session['sockname']} -> {session['peername'].ljust(21,' ')} {session['inittime']} {session['org']} ") |
| 277 | |
| 278 | elif console_cmd.split() and console_cmd.split()[0] == "listerner": |
| 279 | print() |
| 280 | |
| 281 | elif console_cmd.split() and console_cmd.split()[0] == "execute" : |
| 282 | if Puppet_Master.current_session or "-i" in console_cmd.split(): |
| 283 | #备注:需要优先处理-i后的会话,暂未实现 |
| 284 | if "-c" in console_cmd.split(): |
| 285 | execute_cmd = console_cmd.split()[console_cmd.split().index("-c") +1] |
| 286 | |
| 287 | elif len(console_cmd.split()) > 1 : |
| 288 | execute_cmd = " ".join( console_cmd.split()[console_cmd.split().index("execute")+1:] ) |
| 289 | |
| 290 | execute_result = await Puppet_Master.execute_cmd( execute_cmd ) |
| 291 | |
| 292 | elif console_cmd.split() and console_cmd.split()[0] == "BATCH-EXECUTE" : |
| 293 | if len(console_cmd.split()) > 1 : |
| 294 | execute_cmd = " ".join( console_cmd.split()[console_cmd.split().index("BATCH-EXECUTE")+1:] ) |
| 295 | |
| 296 | for session in Puppet_Master.sessions: |
| 297 | Puppet_Master.current_session = Puppet_Master.sessions[Puppet_Master.sessions.index(session)] |
| 298 | execute_result = await Puppet_Master.execute_cmd( execute_cmd ) |
| 299 | PrintInfo( f"{Puppet_Master.current_session['hash']} {Puppet_Master.current_session['peername']} {Puppet_Master.current_session['org']} Executed." ) |
| 300 |
no test coverage detected