簡體   English   中英

Windows批處理腳本:帶有Plink的SSH在輸出中顯示奇怪的序列

[英]Windows batch scripting: SSH with Plink showing strange sequences in output

我正在編寫一些命令行操作腳本,以從Palo Alto 5060防火牆收集和解析特定的網絡指標。 我正在使用Plink和Windows批處理腳本。

@echo off
"C:\path\to\plink.exe" -ssh user@1.2.3.4 -pw password < "C:\path\to\commands.txt >> "C:\path\to\output.txt"

現在, commands.txt的內容很簡單。

show interface ethernet1/1

我無法使它正常工作。 我的output.txt具有以下結果:

Last login: Tue Nov 24 15:43:13 2015 from localhost

show interface ethernet1/1Welcome user.
user@pa5060> show 
[Kuser@pa5060> show interface 
[Kuser@pa5060> show interface ethernet1/1

這不是正確的輸出,命令的輸入使我感到困惑。 有人看到過這樣的東西嗎? 如果相關,此設備上會有一個登錄橫幅。

我猜想您會在command.txt的末尾缺少換行符,因此未提交命令。


至於重復的提示和[K順序:
這僅僅是因為遠程端希望在您的終端上使用交互式終端,並發送ANSI轉義序列以漂亮地打印輸出。

每行可能以CR(回車)字符開頭,這將導致交互式終端覆蓋前一行。 但這在將輸出重定向到文件時不起作用。 盡管如果使用type output在終端( cmd.exe )上打印文件,則可能只會得到最后一行。

要使Plink不啟用交互式終端,請使用-T命令行開關

"C:\path\to\plink.exe" -ssh user@1.2.3.4 -pw password -T < "C:\path\to\commands.txt >> "C:\path\to\output.txt"

盡管更好的方法是在PLink命令行上指定命令

"C:\path\to\plink.exe" -ssh user@1.2.3.4 -pw password show interface ethernet1/1 >> "C:\path\to\output.txt"

或使用-m開關

"C:\path\to\plink.exe" -ssh user@1.2.3.4 -pw password -m "C:\path\to\commands.txt >> "C:\path\to\output.txt"

區別在於,以這種方式指定的命令將在非交互式終端中自動執行,並且主要在“ exec”通道中以受控程度更高的方式自動執行,然后在重定向輸入時使用的“ shell”通道中自動執行。 因此,您擺脫了“ Last login:”消息以及命令提示符( user@pa5060> )等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM