Posh-SSH 和 Cisco Gear
Posh-SSH and Cisco Gear
我一直致力于使用 Powershell 和 Posh-SSH 模块编写一些脚本。我主要连接到 Cisco 设备,但也有一些其他网络设备。我的问题似乎是我可以很好地连接到设备,但我的命令似乎没有 运行。我尝试了 Invoke-SSHCommand 以及创建 New-SSHShellStream。奇怪的是,如果我打开 Powershell 并手动执行每个命令,它似乎工作得很好,但出于某种原因 运行ning 在脚本中不会产生我正在寻找的结果。
我发现 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>
所以在评论中与您合作后,看起来有两个问题,第一个是 SSH.NET 库支持的 SSH shell 似乎不支持部分命令,交换"Show Ver" 到 "Show Version" 更正了这一点。此外,命令 运行 比脚本在流上调用其 read() 之前等待的时间要长一些,这可以通过在 write() 和 read 之间添加 start-sleep -seconds 5
来解决().如果您计划将此与可能需要更长时间的命令一起使用,或者您不确定它们将花费多长时间,您可能需要研究一些额外的处理,通过检查可用数据来检查命令是否已完成 属性 或为 DataReceived 事件创建侦听器,但如果您保持简单,基本计时器将非常适合您。
我一直致力于使用 Powershell 和 Posh-SSH 模块编写一些脚本。我主要连接到 Cisco 设备,但也有一些其他网络设备。我的问题似乎是我可以很好地连接到设备,但我的命令似乎没有 运行。我尝试了 Invoke-SSHCommand 以及创建 New-SSHShellStream。奇怪的是,如果我打开 Powershell 并手动执行每个命令,它似乎工作得很好,但出于某种原因 运行ning 在脚本中不会产生我正在寻找的结果。
我发现 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>
所以在评论中与您合作后,看起来有两个问题,第一个是 SSH.NET 库支持的 SSH shell 似乎不支持部分命令,交换"Show Ver" 到 "Show Version" 更正了这一点。此外,命令 运行 比脚本在流上调用其 read() 之前等待的时间要长一些,这可以通过在 write() 和 read 之间添加 start-sleep -seconds 5
来解决().如果您计划将此与可能需要更长时间的命令一起使用,或者您不确定它们将花费多长时间,您可能需要研究一些额外的处理,通过检查可用数据来检查命令是否已完成 属性 或为 DataReceived 事件创建侦听器,但如果您保持简单,基本计时器将非常适合您。