我试图从命令“显示mac地址”中获取信息,该命令包含两个不同位置的12个检用交换机,所有这些交换机都通过光纤PTP连接。我想将它导入到SQL中,以便按计划报告统计数据、移动、路由等.我已经成功地生成了一些非常有趣和有用的数据,这些数据最终将允许我把我继承的这个怪物变成更少的怪物。
我有这个工作的所有组件--事实上,我必须使用putty手动抓取每个开关的数据,将它们保存在一个目录中,其中调度的任务将转储格式化为csv,清理它们,并使用批量插入导入它们。
现在,我想从交换机中自动检索数据,这样我就可以专注于数据方面,并停止在收集方面花费太多时间。
我尝试过PLINK,但是似乎有某种模拟问题,数据被解释为不正确的格式,而且我得到的文件都是乱七八糟的。
用..。
plink -batch -ssh -l <username> -pw <password> xxx.xxx.xxx.xxx < cmds.txt > out.txt开关在堆栈中,所以我必须通过“非hp管理”消息和“您想要登录到哪个开关”提示,这似乎只适用于文件中的\n\n (就像我登录putty时一样,输入两次),但是在过去,我得到了很长的ASCII序列,这些序列看起来很奇怪,因为到那时为止,所有事情都可以正常工作。
我已经接受了putty中的密钥,而且由于我获得了所有的登录和堆栈指挥官消息,我假设所有这些都是有效的。
有什么线索可以说明如何做到这一点,或者找到一个合理的替代方案来实现同样的目标?
我得到的例子..。
HP J9148A 2910al-48G-PoE Switch
Software revision W.15.13.0005
Copyright (C) 1991-2014 Hewlett-Packard Development Company, L.P.
RESTRICTED RIGHTS LEGEND
Confidential computer software. Valid license from HP required for possession,
use or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer
Software, Computer Software Documentation, and Technical Data for Commercial
Items are licensed to the U.S. Government under vendor's standard commercial
license.
HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
20555 State Highway 249, Houston, TX 77070
Non-HP transceiver detected, which may cause network problems.
Use 'show interface transceiver' command for details.
HP will not support or troubleshoot problems with these transceivers.
[1;15r[1;1H[24;1HPress any key to continue[15;1H[?25h[24;27H[2J[?7l[1;15r[?6l[24;27H[?25h[23;1H Stack Members
SN MAC Address System Name Device Type Status
-- ------------- ------------- -------------------- -------------------------
0 xxxxxx-xxxxxx Switch1 HP 2910al-48G-PoE Commander Up
1 xxxxxx-xxxxxx Switch2 HP 2910al-48G Member Up
2 xxxxxx-xxxxxx Switch3 HP 2910al-24G-PoE Member Up
[23;1HEnter switch number to connect to or <CR>:[23;1H[23;44H[?25h[23;1H[?25h[23;44H[?6l[1;24r[?7l[2J[1;1H[1920;1920H[6n[1;1HYour previous successful login (as manager) was on 2016-01-29 19:31:41
from xx.x.x.xxx
[1;24r[24;1H[24;1H[2K[24;1H[?25h[24;1H[24;1HSwitch1# [24;1H[24;11H[24;1H[?25h[24;11H[24;0HE[24;1H[24;11H[24;1H[2K[24;1H[?25h[24;1H[1;24r[24;1H[1;24r[24;1H[24;1H[2K[24;1H[?25h[24;1H[24;1HSwitch1# [24;1H[24;11H[24;1H[?25h[24;11H[24;0HE[24;1H[24;11H[24;1H[2K[24;1H[?25h[24;1H[1;24r[24;1H[1;24r[24;1H[24;1H[2K[24;1H[?25h[24;1H[24;1HSwitch1#因此,我到了开关控制台上的Switch1#提示符。
我的输入文件现在只是
show mac-address上面有两个空行来执行两个“任意键”和继续“请求”。
任何帮助都非常感谢。
发布于 2019-11-07 01:30:52
我从来没有让它像预期的那样工作,而且我已经很长时间没有回到这个网站了,但是由于这个问题似乎很受欢迎,所以我决定发布我最后做了什么。
我在单元上启用了telnet,并使用以下和NCAT对其使用psudo脚本telnet样式命令。
这允许我向TFTP发出一个copy命令,让开关将数据发回给我,而不是试图从返回的输出中解析它。当然,我不想硬编码密码等,并使其可重用,以满足未来的需要。它让我克服了我遇到的问题。:-)
switches.txt只是IP地址的列表,我不得不使用NCAT 7.40作为过去的版本,有一个错误阻止它正常工作。
@ECHO OFF
IF !%1!==!! GOTO no
IF !%2!==!! GOTO no
FOR /F "delims=" %%s IN (switches.txt) DO (
ECHO admin> CMDS
ECHO %2>> CMDS
ECHO(>>CMDS
ECHO(>> CMDS
ECHO copy command 'show mac-address' tftp %1 %%s.txt>> CMDS
ECHO exit>> CMDS
NCAT -t --send-only %%s 23 < CMDS
)
DEL CMDS 1>nul 2>nul
GOTO ext
:no
ECHO ^</NO!^>
:ext当然,这并不像SSH方法那样安全,事实上,除非您知道流量没有被拦截,否则我不建议使用它,因为它很容易嗅探(包括凭据),但它非常实用。这可以在一定程度上减少专用的VLAN和一个单独的子网专门用于自动化。认为它可以帮助其他人尝试自动完成这样单调乏味的任务。如果没有别的东西,我说明哪里有遗嘱和系统管理员,那么即使它是一个肮脏的解决方案,也有一个解决方案。希望它能帮到别人。
https://serverfault.com/questions/752890
复制相似问题