因此,我採取一些調查,看看如何正確解決這個問題,不要濫用軟件,找到正確的工具,或清楚地顯示目前沒有這樣的工具。
首先,我說明了爲什麼我的設置完全按照它的樣子,以及爲什麼它使用(或不使用)標準工具。
我的目標對Linux世界非常普遍和必不可少(正如我之前所想的)。由於Linux是網絡操作系統,因此Linux機器應該可以通過網絡完全配置(因此無人機時可以/應該完全有用,即沒有顯示器)。但是在Lilo/Grub開始的時候,沒有網絡。目前只有串行端口可用(並且Lilo/Grub支持它)。爲什麼此時遠程控制很重要?僅僅因爲你可以爲你的Slackware盒子(遠程)編譯新的自定義內核,並且想要測試它,在Lilo列表中添加第二個選項,並且即使在啓動時遠程機器卡住也要返回到原始內核,所以沒辦法遠程編輯/ agjust Lilo選項。
但是串口控制檯對於Linux機器來說真的是更強大的工具。 它顯示引導消息並關閉無法通過ssh看到的消息,因爲網絡在這些時刻未被初始化。 (請記住,我們沒有顯示)。 它允許您(突然或有意)丟棄所有網絡接口,而無需擔心機器丟失,因爲距離您很遠。
注意:串行控制檯不能立即使用,但可以採用衆所周知的標準方式進行配置,並在許多地方進行了描述。示例是http://docs.slackware.com/howtos:general_admin:serial_console
注意:存在串行端口應該是BIOS識別的問題,即完全在板上。當Lilo/Grub啓動時,USB和PCIE設備將無法正常工作。幸運的是有一個好消息。硬件串行端口現在(緩慢)返回到主板。我爲我的服務器測試了新的現代華碩J1900I-C,它有兩個rs232端口,並且一切正常。
要遠程使用串行控制檯的優點,應該使用某種類型的SNI,串行網絡接口(這是唯一的方法,AFAIK)。 SNI通常包含(最簡單的)TCP偵聽服務器和原始IP到串行雙工轉換器。當Lantronix X-Port發明時,我開始研究和使用SNI。這是在2006年,並與Slackware盒正常工作。 (我不記得XPort是否存在\r\0
問題,但讓我們繼續)。 XPort是也是昂貴,並且在Wiznet W5100發佈時立即被我自己的開源SNI替代。 (真的,還有其他一些基本問題,爲什麼我需要更換Lantronix,它不能按主板上的重置或電源按鈕,而我的設備可以,而且現在服務器在內核恐慌之後絕對處於完全遠程控制之下;但是它在這裏是offtopic)。現在在網上商店也有很多便宜的不叫SNI的;我不測試這些。
所有這些時間我使用telnet
連接到SNI。主要原因是XPort文檔有這樣的例子。而且,大多數時候它工作。我不能說\r\0
問題會阻止我的工作。大多數時候它根本不明顯(比如,mc
指揮官抵制NULL
's)。但mcedit
害怕NULL。最近我開始瞭解這個問題,所以這個問題就因此而出現了。 (現在請從線程開始重新閱讀)。
現在我試着回答我自己的問題。所有這些時間我都在誤用這個軟件。 telnet是而不是爲人類溝通而寫的;相反,Telnet(突然)使用Telnet協議,而不是Raw協議;和\r\0
s可能是協議的一部分。 (可能是因爲RFC在任何地方都沒有提到NULL的要求)。 雖然Telnet和原始協議可能看起來相當接近,但它們不匹配,所以有時應該可以工作,但有時不可以。 使用bruteforce並重新編譯二進制文件,我表明,Telnet可以很容易地轉向原始模式;但之後它是非標準軟件,並且不可能將其推向全球回購。
所以我尋找Raw utilites。 netcat
和ncat
沒有Char模式,只有Line模式,所以只有純控制檯可能,沒有ANSI顏色,mc,密碼等Putty
太複雜並且使用GUI。而且...沒有更多的實用工具,我發現!這是相當奇怪和煩人的... 然後,我嘗試使用最初的基於字符的終端,minicom
和gtkterm
。他們都不允許飼料ip:port
結構是ttyS*
名稱。但有數據翻譯存在,我試着socat
。它連接到SNI服務器並創建虛擬串口;然後字符終端軟件連接到該端口。
而且,最後,工作。哇。 但是這條鏈上有很多缺點;複雜,難以記憶的命令,不能寫入一行;當SNI丟棄TCP連接時,不可能看到/捕獲該連接;在連接時間由socat
發送到虛擬端口的很多垃圾(457 數據包我算!)。這裏是勇敢的人誰可能會發現我的工作有用的命令。
sudo socat pty,link=/dev/ttyMYPORT,raw tcp:10.1.1.11:10001 &
then
sudo chmod a+rw /dev/ttyMYPORT; gtkterm -p /dev/ttyMYPORT
or
sudo chmod a+rw /dev/ttyMYPORT; minicom -o --color=on -D /dev/ttyMYPORT
和結論,我沒有發現任何簡單的軟件現在,可以直接用於人類的原始字符模式下通過網絡橋接串口通信。 (請提出建議)。謝謝。
是的,「toggle crlf」按照您的描述工作,但不是。它對我沒有幫助:正如我之前提到的,linux TTY將'r \ n'解釋爲兩個CR(現在我測試'cat'命令,它的行爲是相同的)。我仍然想知道在哪裏使用'\ r \ 0',並且Telnet應用程序在全球範圍內是否被固定,然後會發生什麼。謝謝你的答案。 – jpka
我確定telnet的人有一個很好的理由發送'\ r \ 0'和'\ r \ n',它可能不應該被固定到'\ r'。我認爲真正的問題可能在telnet之外:爲什麼按Enter鍵時發送'\ r \ n'?如果你只發送了'\ n',那麼你的問題就會被解決,我認爲這是telnet所期望的。也許你可以在一些終端設置或Windows設置中解決這個問題。 –
我使用Telnet(Ubuntu,英語UTF8控制檯)進行的當前設置僅發送給telnet'\ r'代碼。目前由於未知原因,Telnet不能僅僅傳輸'\ r',而是替換爲'\ r \ 0'或'\ r \ n'。所以我不發送'\ r \ n',但是Telnet執行它。 使用'\ n'作爲CR是個不錯的主意,但看起來好像不太容易獲得,因爲我甚至無法想象軟件級別在哪裏搜索,驅動程序,控制檯等(我只使用Linux機箱)。而這對於rs232控制檯來說遠非標準,至少因爲鍵的代碼爲0x0d,而不是0x0a,至少在世界範圍內至少有半個世紀,AFAIK ... –
jpka