使用 SSH 與 Python 的 Paramiko 檢索 CLI 輸出時,可以消除垃圾輸出嗎?
當利用 Python 的 Paramiko 庫透過 SSH 連接到遠端裝置並從遠端裝置檢索輸出時在命令列中,在預期輸出旁邊遇到無關字元是很常見的。這可以包括 ANSI 轉義碼和其他非必要資訊。
雖然這些字元可能看起來像垃圾,但它們實際上有一定的用途。終端用戶端使用 ANSI 轉義碼來增強輸出的表示,例如文字格式設定和遊標定位。因此,它們不是麻煩,而是互動式終端會話的必要組成部分。
當使用 Paramiko 的 SSHClient.invoke_shell 方法(用於互動式終端會話)時,程式庫會自動要求偽終端。此終端用於解釋 ANSI 轉義碼並以人類可讀的格式顯示輸出。
但是,如果您的目的是自動執行遠端命令而不是參與互動式終端會話,則適當的使用的方法是SSHClient.exec_command。此方法預設不指派偽終端,從而消除了無關字元的問題。
或者,如果由於特定伺服器限製而需要使用「shell」通道,則可以手動建立通道沒有偽終端。但是,需要注意的是,Paramiko 的 SSHClient.invoke_shell 不支援此功能,因此您需要自行建立通道。
最後,您可能在輸出中註意到的「u」前綴不是字串值本身的一部分。相反,它表明該字串是用 Unicode 編碼的,這對於處理 ASCII 範圍之外的字元至關重要。
以上是使用 Paramiko 檢索 CLI 輸出時如何消除垃圾輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!