Добрый день! Есть кусок кода - телеграм бота. По задумке команда должна открывать SSH туннель для соединения с cisco устройством. Вот код:
Почему то при выполнении команды телеграм бот выдает ошибку:
Код:
'/циска' { # открываем консоль для работы с циско
$ConsoleClose = $false
BotSay -text "для выхода в обычный режим введите 'закрыть'"
$PPassword = "PASSWORD"
$SPassword = $PPassword | ConvertTo-SecureString -AsPlainText -Force
$UserName = "root"
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $UserName, $SPassword
$SwitchIP = '192.168.20.1'
Import-Module Posh-SSH
$SSHSession = New-SSHSession -ComputerName $SwitchIP -Credential $Cred -Verbose
if ($($sshSession.Connected) -eq $true) {
BotSay -text "SSH session $SwitchIP opened"
$ssh = $sshSession | New-SSHShellStream
$ssh.read()
while ($ConsoleClose -eq $False) {
Write-Host "циска: новый цикл обработки сообщений" -ForegroundColor Yellow
$ConsoleMsg = Bot-Listen -ChatTimeOut $ChatTimeOutSeconds -UpdateId $botUpdateId
if ($ConsoleMsg.UpdateId -gt 1) {
log "пришло сообщение: $($ConsoleMsg.text) от $($ConsoleMsg.first_name) $($ConsoleMsg.last_name) из чата №$($ConsoleMsg.chat_id)"
Write-Host " пришло сообщение: $($ConsoleMsg.text) от $($ConsoleMsg.first_name) $($ConsoleMsg.last_name) из чата №$($ConsoleMsg.chat_id)" -ForegroundColor Magenta
$botUpdateId = $ConsoleMsg.UpdateId + 1
$text = $ConsoleMsg.text
if ( $text -eq 'закрыть' ) {
$ConsoleClose = $true
}
if ( $text.length -gt 0 ) {
Start-Sleep -Seconds 1
$ssh.WriteLine( $text )
$response = $ssh.read()
BotSay -text $response
}
}
Start-Sleep -Seconds 1
}
}
else {
BotSay -text "SSH session cannot be established"
}
if ( $($sshSession | Remove-SSHSession) -eq $true) {
BotSay -text "SSH session closed"
}
else{
BotSay -text "SSH session NOT closed"
}
BotSay -text "переходим в обычный режим"
Chat-Alive -ChatID $Msg.chat_id
break
}
Почему то при выполнении команды телеграм бот выдает ошибку:
logic start. text is /циска
ПОДРОБНО: Using SSH Username and Password authentication for connection.
ПОДРОБНО: Fingerprint for 192.168.20.1: f4:9b:d5:85:4e:5d:bd:1c:d8:2d:52:48:e4:3a:bf:21
ПОДРОБНО: Fingerprint matched trusted fingerprint for host 192.168.20.1
Исключение при вызове "CreateShellStream" с "6" аргументами: "Client not connected."
C:\Program Files\WindowsPowerShell\Modules\Posh-SSH\2.0.2\Posh-SSH.psm1:664 знак:9
+ $stream = $ToProcess.Session.CreateShellStream($TerminalName, ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ) [], MethodInvocationException
+ FullyQualifiedErrorId : SshConnectionException
Add-Member : Не удается привязать аргумент к параметру "InputObject", так как он имеет значение NULL.
C:\Program Files\WindowsPowerShell\Modules\Posh-SSH\2.0.2\Posh-SSH.psm1:665 знак:33
+ Add-Member -InputObject $stream -MemberType NoteProperty -Nam ...
+ ~~~~~~~
+ CategoryInfo : InvalidData: ) [Add-Member], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.AddMemberCommand
Add-Member : Не удается привязать аргумент к параметру "InputObject", так как он имеет значение NULL.
C:\Program Files\WindowsPowerShell\Modules\Posh-SSH\2.0.2\Posh-SSH.psm1:666 знак:33
+ Add-Member -InputObject $stream -MemberType NoteProperty -Nam ...
+ ~~~~~~~
+ CategoryInfo : InvalidData: ) [Add-Member], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.AddMemberCommand
Невозможно вызвать метод для выражения со значением NULL.
C:\scripts\energorobot.ps1:652 знак:25
+ $ssh.read()
+ ~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: ) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull