2010-02-03 66 views
4

目前我需要開發一些程序,通過串行線與cisco設備進行通信。我想在我的開發linux機器上構建測試環境。所以,我發現了dynamips cisco模擬器。該仿真器可以通過串口線提供'-U/dev/ttyS0'選項的接口。那麼,這會導致dynamips打開硬件串行端口並通過它進行通信。我可以通過串口客戶端(如minicom)從另一臺Linux機器連接到此硬件串行端口。Linux上的軟件串行端口環回

但是,由於我在兩臺linux機器上都使用virtualbox,因此我通過virtualbox將串行端口鏈接到命名管道。這個方案似乎正在工作,但非常冗贅。我正在尋找一種方法來在單個Linux機器上運行dynamips和minicom。

我發現僞終端可能對我有用。但我試圖用'-U/dev/ptmx'運行dynamips,然後用minicom連接到/ dev/pts/... port,反之亦然。在這兩種情況下,雙方都有輸入/輸出錯誤。

+0

你要求什麼具體問題或錯誤信息? – 2010-02-03 15:26:10

+0

您是否在這個環回任務中使用了openpty? – lpapp 2013-11-17 06:05:25

回答

6

不幸的是,現代的僞終端並不那麼容易。使用posix_openpt()open("/dev/ptmx")打開主站之後,必須在主站FD及其相應的從站設備可用之前,在主FD上調用grantpt()unlockpt()。 (openpty()等效用函數簡化了這一點。)

作爲一種解決方法,可能有用的方法是socat

 
# terminal 1 
socat pty:link=$PWD/pts unix-l:$PWD/ptm-pipe & 
dynamips -U $PWD/pts 

# terminal 2 
socat unix:$PWD/ptm-pipe - 
+0

或者你可以使用'socat'來打開兩個ptys,然後將主結點連接在一起(然後連接到'dynamips'的一個pty,另一個來自'minicom')。 – caf 2010-02-04 00:05:50

+0

我沒有安裝'minicom',所以我不知道它是否可以這樣做。我現在正在閱讀它的手冊頁,它聲稱也可以在UNIX套接字上工作!這將完全避免第二個「社羣」。 – ephemient 2010-02-04 02:14:05

+0

@caf「並將maste結尾在一起」。你是什​​麼意思,我該怎麼做?一個終端不應該是主人,而是另一個終端? – nass 2013-07-18 13:20:01