利用Paramiko 函式庫建立SSH 連線並從遠端電腦的命令列檢索輸出時,使用者經常會遇到伴隨預期輸出的無關字符,例如神秘的[2Jx1b[1;1H 和u.這些看似不必要的數據可能會導致混亂,並且在提取關鍵信息時可能是有害的。
垃圾的來源
令人困惑的字元不是垃圾,而是垃圾終端客戶端使用ANSI 轉義碼以用戶友好的方式格式化和顯示輸出。當使用 SSHClient.invoke_shell 方法時,Paramiko 會自動使用這些程式碼,因為它假定建立了互動式終端。
執行命令的更好方法
如果您的任務涉及自動執行遠端命令,更合適的方法是 SSHClient.exec_command。此方法預設繞過偽終端的分配,消除了額外的字元。
或:轉義程式碼
作為解決方法,可以刪除使用特定技術從字串中轉義 ANSI 序列。然而,這種方法可能還不夠,並且可能會帶來額外的複雜性。
Unicode 編碼
最後,字串值前面的u 前綴不是實際值的一部分string 而是表示Unicode 編碼,這是準確表示字元的重要方面,尤其是那些屬於非英語語言的字符。
以上是使用 Paramiko 取得遠端 CLI 資料時如何消除不需要的輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!