跨多个API调用保留SSH会话

2024-03-29 09:26:36 发布

您现在位置:Python中文网/ 问答频道 /正文

这里的情况很有趣。目前,我有一个简单的FlaskAPI,它连接到后端的网络设备并检索命令输出

from netmiko import ConnectHandler

def _execute_cli(self, opt, command):
        """
           Internal method to create netmiko connection and
           execute command.
        """
        try:
            net_connect = ConnectHandler(**opt)
            cli_output = (net_connect.send_command(command))
        except (NetMikoTimeoutException, NetMikoAuthenticationException,) as e:
            reason = e.message
            raise ValueError('Failed to execute cli on %s due to %s', opt['ip'], reason)
        except SSHException as e:
            reason = e.message
            raise ValueError('Failed to execute cli on %s due to %s', opt['ip'], reason)
        except Exception as e:
            reason = e.message
            raise ValueError('Failed to execute cli on %s due to %s', opt['ip'], reason)
        return cli_output


def disconnect(connection):
    connection.disconnect()

每个命令输出都在本地缓存一段时间。问题是,有人可能同时建立多个连接,而一个设备有一个连接限制(比如7)。如果调用过多,则会出现SSH连接问题,因为已达到最大连接数

我要做的是在一段指定的时间内(比如说5分钟),在这些API调用中为一个设备保留一个会话,这样我就不会填满设备上的连接

请告知


Tags: tomessageexecuteclionasconnectioncommand