python - 我可以在 netmiko/paramiko 中获取 ssh 连接的源端口吗?
问题描述
我有一个应用程序,我通过控制台服务器在 LAB 环境中配置 Cisco 路由器。
可以通过 SSH 访问路由器。有时在程序退出/崩溃后,ssh 连接不会终止。
重新启动后,当控制台服务器上的端口被阻止时,我无法登录到该特定路由器。
要取消阻止它,我需要终止该 ssh 会话。
如果我有更多正在使用的会话,我不知道我需要终止其中的哪些会话,所以我想在 paramiko/netmiko 建立连接时获取源端口。
以前有人这样做过吗,或者也许有人有想法。
解决方案
要获取 Paramiko SSH 连接的底层套接字,请使用ssh.get_transport().sock
. 然后,请参阅如何打印已连接套接字的本地和远程地址和端口?
所以通常,这会起作用:
port = ssh.get_transport().sock.getsockname()[1]
但这有几个假设。由于您不需要以编程方式使用端口号,因此更安全的是只打印 的完整结果getsockname()
,而不是假设结果是一个端口位于索引 1 的元组。
推荐阅读
- c++ - 为什么这个宏没有得到扩展?
- java - 在java中加载bert模型
- django - 我如何将 django 组用于特定模型?
- python - 如何将 datetime 对象的时间转换为整数?
- python - 使用 subprocess.run() 执行 .EXE 文件
- java - Android Studio TextView 值不会更新
- android - 谷歌地图不显示使用颤振的 Android
- c# - 预编译:目录不存在 '~\projectName\obj\Release\AspnetCompileMerge\Source\Config' C#
- php - PHP Laravel 5.6.39 - 尝试在应用程序上查看发票时“尝试获取非对象的属性”
- c# - 删除属性并改为继承它们 - 代码优先方法