【发布时间】:2016-10-26 13:11:24
【问题描述】:
我一直致力于使用 Powershell 和 Posh-SSH 模块编写一些脚本。我主要连接到思科设备,但也有一些其他网络设备。我的问题似乎是我可以很好地连接到设备,但我的命令似乎没有运行。我尝试过 Invoke-SSHCommand 以及创建 New-SSHShellStream。奇怪的是,如果我打开 Powershell 并手动单步执行每个命令,它似乎工作得很好,但由于某种原因,在脚本中运行不会产生我正在寻找的结果。
我发现 plink.exe 工作得很好,但如果可能的话,我真的宁愿从 Powershell 编写所有这些代码。这些网络设备可能与 Linux 服务器不同吗?
代码:New-SSHSession -ComputerName $fw-ip -Credential (Get-Credential) -Verbose<br/>
$session = Get-SSHSession -Index 0<br/>
$stream = $session.Session.CreateShellStream("dumb", 0, 0, 0, 0, 1000)<br/>
$stream.Write("show ver")<br/>
$stream.Read()
我得到了什么:Type help or '?' for a list of available commands.<br/>
FW/Admin>
【问题讨论】:
-
您是否收到任何错误消息或脚本似乎成功完成但没有任何反应?你也可以发布你的代码示例吗?
-
抱歉,试图回答您的问题,但我无法确定要在此处发布的代码的格式。请稍等。
-
好的,看起来命令正在发送但设备无法识别它,会话识别不完整的“show ver”命令的方式可能有些奇怪,可以您尝试运行完整的“显示版本”,然后告诉我进展如何?
-
当我运行完整版时,我什么也得不到。你是对的,看起来这些命令根本没有运行。谢谢您的帮助。我很感激。
-
所以在运行“show version”而不是“show ver”时什么也得不到,这似乎意味着命令正在运行,或者至少没有失败,因为流是交互式的,也许当你调用 read() 时命令还没有输出数据?也许尝试在 write() 和 read() 之间加入一两秒的开始睡眠?
标签: powershell ssh cisco posh-ssh