Как перенаправить или получить выходные данные процесса telnet, запускаемого сценарием Powershell? - PullRequest
0 голосов
/ 17 мая 2019

Я запускаю скрипт Powershell, который запускает процесс telnet, который подключается к клиентскому компьютеру и запускает команду. Операционная система клиентского компьютера - это персонализированная версия VxWorks, а команда, которую я использую в telnet, вызывает инструмент, разработанный на компьютере:

mediaGet("gei",1)

Я бы хотел получить вывод кода и записать его в журнал.

Я пытался использовать параметры -NoNewWindow и -RedirectStandardOutput в скрипте Powershell, но он создает только пустой файл, что означает, что он не может получить выходные данные.

Вот скрипт Powershell:

Start-Process -FilePath 'telnet.exe' -ArgumentList '162.100.10.10'
[system.reflection.assembly]::loadwithpartialname("System.Windows.Forms")
$SendKeys = [System.Windows.Forms.SendKeys]
$sendkeys::SendWait('mediaGet{(}"gei"{)},1')
Start-Sleep -Seconds .5
$sendkeys::SendWait("{ENTER}")
Start-Sleep -Seconds .5
$sendkeys::SendWait("exit{ENTER}")

(Авторы этого кода переходят к выбранному ответу на этот вопрос Как использовать строковую переменную в качестве команды telnet в VBScript? )

Это вывод кода

mediaGet("gei",1)
> media: 12345
> up: 1000 full duplex

Я хотел бы, чтобы текстовый файл в конце содержал следующие строки:

media: 12345
up: 1000 full duplex

Как мне туда добраться?

1 Ответ

1 голос
/ 18 мая 2019

Komputer.

Yeppers, я пропустил переписку с тобой в другом вопросе и ответах.Приятно видеть, что вы получаете ответ сейчас.

Но даже если это было в текстовом файле, вы можете просто заменить его после.

$TelnetData = @'
mediaGet("gei",1)
> media: 12345
> up: 1000 full duplex
'@ 
Clear-Host
$TelnetData -replace 'mediaGet|\("gei",1\)|> ', ''

# Results

media: 12345
up: 1000 full duplex

Вы можете сделать это, как файлтакже написано, в обычных случаях.

Однако, что касается перенаправления, обычным является то, что

MS telnet не использует stdin / out.

Итак, подходы выглядят следующим образом ...

Для перенаправления вывода сеанса telnet вы можете использовать ...

-f logfile

...argument, а затем импортировать его в переменную после того, как вы закончите с ним:

$ output = get-contents logfile

... часто вызываются.

Итак, может быть, это приведет вас туда, где вы хотите быть ...

Start-Process -FilePath 'telnet.exe' -ArgumentList '162.100.10.10', '-f E:\Temp\log.txt'
[system.reflection.assembly]::loadwithpartialname("System.Windows.Forms")
$SendKeys = [System.Windows.Forms.SendKeys]
$sendkeys::SendWait('mediaGet{(}"gei"{)},1')
Start-Sleep -Seconds .5
$sendkeys::SendWait("{ENTER}")
Start-Sleep -Seconds .5
$sendkeys::SendWait("exit{ENTER}")

Как только вы сделаете вышеупомянутое, вы можете запустить очистку на нем, используя то, что у меня есть выше,с помощью командлетов Get-Content и / или Set-Content.

Конечно, я не могу получить доступ к списку IPA, который вы перечисляете, и при этом у меня нет этого объекта MediaGet, но достаточноk тестирует сайт, поддерживающий telnet, сделает это.

Start-Process -FilePath 'telnet.exe' -ArgumentList 'www.cyberciti.biz 80', '-f E:\Temp\log.txt'
[system.reflection.assembly]::loadwithpartialname("System.Windows.Forms")
$SendKeys = [System.Windows.Forms.SendKeys]
$sendkeys::SendWait("mediaGet'(''gei''',1)'")
Start-Sleep -Seconds .5
$sendkeys::SendWait("{ENTER}")
Start-Sleep -Seconds .5
$sendkeys::SendWait("exit{ENTER}")

# PowerShell Terminal output.

GAC    Version        Location                                                                                                                                 
---    -------        --------                                                                                                                                 
True   v4.0.30319     C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll 


# Telnet Window and text file content
Get-Content -Path 'E:\Temp\log.txt'

           HTTP/1.1 400 Bad Request
 Server: cloudflaree
 Date: Sat, 18 May 2019 08:39:59 GMTi
   Content-Type: text/html'Content-Type: text/html'

 Connection: close
 Connection: close

<html>
<head><title>400 Bad Request</title></head>e
  <body bgcolor="white">i
  <center><h1>400 Bad Request</h1></center>
  <center><h1>400 Bad Request</h1></center>
<hr><center>cloudflare</center>
</body>
</html>
...