我正在使用名爲「paramiko」的python SSH庫。 它使用這樣的:爲什麼paramiko將 r n換成換行符而不是 n?
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=user_name, password=password)
chan = ssh_pool[host].get_transport().open_session()
chan.exec_command(SOME_COMMAND)
因爲我需要在須藤執行一些命令,我需要調用chan.get_pty()exec_command,以確保此之前還有一個TTY avaliable。
我在調用get_pty()之後發現,stdout從遠程服務器返回時使用\ r \ n作爲換行符而不是\ n。
例如:
>>> chan = ssh.get_transport().open_session()
>>> chan.exec_command("echo hello world")
>>> chan.recv(1000)
b'hello world\n'
,並呼籲get_pty()後:
>>> chan = ssh.get_transport().open_session()
>>> chan.get_pty()
>>> chan.exec_command("echo hello world")
>>> chan.recv(1000)
b'hello world\r\n'
我有做一些網絡搜索,但找不到任何連接到PTY/TTY /換行/ \ r \ n
我很擔心什麼可能會導致此更改。
爲什麼paramiko將\ r \ n作爲換行符返回而不是\ n?
你爲什麼這麼擔心?這只是您正在運行的命令的返回值字符串的換行符。當然,你需要以某種方式進行處理,但是要麼將其拆分成'\ n'列表並替換'\ r'或替換'\ r'和'\ n':http:// stackoverflow。com/questions/16566268 /從一長串文本中刪除所有行中斷 –
@JensHöpken因爲我正在處理一堆具有完全不同環境的服務器。我想到的只是處理\ r \ n和\ n。但是我仍然擔心,如果我無法弄清楚可能會導致這種情況,有一天會出現某種未知的問題。 –