我想我可以在 PowerShell 上运行如下命令。
$output = & echo quit | telnet localhost 22
echo $output
但是, $output里面什么都没有。我正在尝试验证 ssh 或 telnet 连接。
你能告诉我如何从上面的命令中获取输出吗?
我想我可以在 PowerShell 上运行如下命令。
$output = & echo quit | telnet localhost 22
echo $output
但是, $output里面什么都没有。我正在尝试验证 ssh 或 telnet 连接。
你能告诉我如何从上面的命令中获取输出吗?
这不可能。MS telnet 不使用标准输入/输出。请参见此处:C# + telnet 进程 w/ 重定向标准流立即退出
要重定向 telnet 会话的输出,您可以使用-f logfile
参数,然后在完成后将其导入变量:$output = get-contents logfile
要将 keycommands 发送到 telnet,您可以使用$wshell = new-object -com wscript.shell
,然后:
start-process telnet -argumentlist "-f w:\tmp\log.txt";
sleep 1;
$wshell.SendKeys("quit{ENTER}")
是的,我知道...不是您所期望的,但这是使用 MS 内置 telnet 控制台的唯一方法。如果您知道任何更好的方法,我会很高兴听到它。
如果您只想检查打开的端口,那么为什么不直接查询它们而不是远程登录呢?见这里。
试图调整它以从 APC PDU 收集 Telnet 输出(读取当前负载)。成功输入指定的键并在 telnet 会话窗口中生成输出,但是一旦 telnet 会话结束,该窗口不会关闭。它保持打开状态,并显示“与主机的连接丢失”。
我可以按任意键关闭窗口,但 PS 脚本执行不会继续,因此 SendKeys 语句后面的代码不会被执行。
我错过了一些简单的东西吗?代码如下。
$wshell = new-object -com wscript.shell
start-process telnet -argumentlist "pdu1-a6.domain.local -f c:\temptelnet.log"
sleep 1
$wshell.SendKeys("username{ENTER}password{ENTER}current{ENTER}quit{ENTER}")
$telnetoutput = get-content c:\temptelnet.log
$telnetoutput
尝试此脚本并将其添加到命令的开头和结尾以捕获每个日志
$ipV4 = (Test-Connection -ComputerName (hostname) -Count 1).IPV4Address.IPAddressToString -- this
Start-Transcript -Path .\TraceLogs_$ipV4.txt
<**Add your code here**>
Stop-Transcript
此处 $ipV4 将捕获源主机,并以文件名 .\TraceLogs_$ipV4.txt 的形式生成日志