mirror of https://github.com/jumpserver/jumpserver
				
				
				
			fix: 对于网关无法连接的,给出原因并停止此任务的后续步骤,不影响其他任务
							parent
							
								
									9f8900041d
								
							
						
					
					
						commit
						e45eb96f12
					
				| 
						 | 
					@ -9,7 +9,7 @@ import yaml
 | 
				
			||||||
from django.conf import settings
 | 
					from django.conf import settings
 | 
				
			||||||
from django.utils import timezone
 | 
					from django.utils import timezone
 | 
				
			||||||
from django.utils.translation import gettext as _
 | 
					from django.utils.translation import gettext as _
 | 
				
			||||||
from sshtunnel import SSHTunnelForwarder
 | 
					from sshtunnel import SSHTunnelForwarder, BaseSSHTunnelForwarderError
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from assets.automations.methods import platform_automation_methods
 | 
					from assets.automations.methods import platform_automation_methods
 | 
				
			||||||
from common.utils import get_logger, lazyproperty
 | 
					from common.utils import get_logger, lazyproperty
 | 
				
			||||||
| 
						 | 
					@ -229,7 +229,7 @@ class BasePlaybookManager:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def local_gateway_prepare(self, runner):
 | 
					    def local_gateway_prepare(self, runner):
 | 
				
			||||||
        info = self.file_to_json(runner.inventory)
 | 
					        info = self.file_to_json(runner.inventory)
 | 
				
			||||||
        servers = []
 | 
					        servers, not_valid = [], []
 | 
				
			||||||
        for k, host in info['all']['hosts'].items():
 | 
					        for k, host in info['all']['hosts'].items():
 | 
				
			||||||
            jms_asset, jms_gateway = host['jms_asset'], host.get('gateway')
 | 
					            jms_asset, jms_gateway = host['jms_asset'], host.get('gateway')
 | 
				
			||||||
            if not jms_gateway:
 | 
					            if not jms_gateway:
 | 
				
			||||||
| 
						 | 
					@ -240,10 +240,20 @@ class BasePlaybookManager:
 | 
				
			||||||
                ssh_password=jms_gateway['secret'],
 | 
					                ssh_password=jms_gateway['secret'],
 | 
				
			||||||
                remote_bind_address=(jms_asset['address'], jms_asset['port'])
 | 
					                remote_bind_address=(jms_asset['address'], jms_asset['port'])
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            server.start()
 | 
					            try:
 | 
				
			||||||
            jms_asset['address'] = '127.0.0.1'
 | 
					                server.start()
 | 
				
			||||||
            jms_asset['port'] = server.local_bind_port
 | 
					            except BaseSSHTunnelForwarderError:
 | 
				
			||||||
            servers.append(server)
 | 
					                err_msg = 'Gateway is not active: %s' % jms_asset.get('name', '')
 | 
				
			||||||
 | 
					                print('\033[31m %s \033[0m\n' % err_msg)
 | 
				
			||||||
 | 
					                not_valid.append(k)
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                jms_asset['address'] = '127.0.0.1'
 | 
				
			||||||
 | 
					                jms_asset['port'] = server.local_bind_port
 | 
				
			||||||
 | 
					                servers.append(server)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # 网域不可连接的,就不继续执行此资源的后续任务了
 | 
				
			||||||
 | 
					        for a in set(not_valid):
 | 
				
			||||||
 | 
					            info['all']['hosts'].pop(a)
 | 
				
			||||||
        self.json_to_file(runner.inventory, info)
 | 
					        self.json_to_file(runner.inventory, info)
 | 
				
			||||||
        self.gateway_servers[runner.id] = servers
 | 
					        self.gateway_servers[runner.id] = servers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue