将plink连接失败的消息捕获到文件中。

3
我正在使用Windows上的plink连接到网络设备并将输出捕获到文件中。这部分工作得很好。
以下是我在批处理程序中输入的命令行示例。
plink.exe -v -l [username] -pw [password] [ip address] -m "c:\empty.txt" < "c:\commands.txt" > "c:\command_output.txt"

command_output.txt仅包含ssh会话的输出。

我想添加一些错误处理,以防无法连接。例如,我无法弄清楚如何将连接消息发送到文件中。它们只会在命令窗口中显示。我尝试从另一个批处理程序使用start /c cmd.exe并将输出重定向到另一个日志文件。我尝试使用2>&1。但是我得不到任何东西。它总是只显示在命令窗口中。

以下是我想要捕获的示例。

Looking up host "xxx.xxx.xxx.xxx"
Connecting to xxx.xxx.xxx.xxx port 22
Failed to connect to xxx.xxx.xxx.xxx: Network error: Connection timed out
Network error: Connection timed out
FATAL ERROR: Network error: Connection timed out

我搞定了。只是需要找到正确的组合。我将plink命令放在一个单独的批处理程序中,并使用“call”从另一个批处理程序启动它,将输出重定向到文件,并且必须使用“2>&1”来包括STDERR。有点混乱但它可以工作。 - Don Thompson
1
你不需要第二个批处理文件。但请注意重定向的顺序很重要。这是正确的:> "c:\command_output.txt" 2>&1,但这样做是行不通的:2>&1 > "c:\command_output.txt"(因为它首先将错误输出重定向到默认标准输出,而此时控制台仍然是默认标准输出)。 - Martin Prikryl
1个回答

1
因此,总结使用以下命令。我正在将@Martin Prikryl的建议纳入答案中,以便显示为已回答。
plink.exe -v -l [username] -pw [password] [ip address] -m "c:\empty.txt" < "c:\commands.txt" > "c:\command_output.txt" 2>&1

@Don,如果您不需要额外的批处理文件,这个是否对您有效?如果是,请考虑将答案标记为“已接受”。这就是为什么值得这样做。 - WinTakeAll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接