![](/img/trans.png)
[英]Mercurial “hg clone” on Windows via ssh with plink issue
[英]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.