Serial-Port

在沒有 kermit 和 lrzsz 的情況下通過串列檢索文件

  • April 26, 2019

我在定制板上有一個嵌入式 Linux,我想通過其串列埠發送和接收文件。

與此設備通信的唯一方法是通過串列埠,並且該設備在此串列埠上提供了一個控制台。

這塊板kermit既沒有busybox rx也沒有lrzsz

- 發送文件到遠端

我能夠按照這個執行緒將文件發送到董事會。

Host side                              Remote side

cat file | base64 > file_b64
                                      cat > file_b64
minicom's ctrlA-S => send 'file_b64'
                                      cat file_b64 | base64 --decode > file

- 從遠端獲取文件

現在我想從遠端系統中檢索一個文件。

Minicom 有一個接收文件的工具,但由於我只有串列埠的控制台,使用 minicom 在遠端端發出命令,我找不到如何去做。

我曾嘗試在主機端使用 kermit,但似乎我還需要在遠端端使用 kermit。


編輯:

我也嘗試反轉發送方法,但沒有成功,因為我沒有從主機端的串列埠收到任何東西。

Host side                              Remote side

                                      cat file | base64 > file_b64
                                      (sleep 10; cat file_b64 > /dev/ttyS0) &
                                      minicom's ctrlA-X => exit minicom
cat /dev/ttyUSB0 > file_b64

不能使用 minicom 的接收工具,因為它只支持xmodem, ymodem,zmodemkermit傳輸,不支持 ascii。


有沒有辦法從遠端檢索文件而無需在其控制台中鍵入命令?

最後發現我在接收方發出了錯誤的命令。

接收命令應為:cat < /dev/ttyUSB0 > file_b64

概括

從遠端接收:

         Host side                |             Remote side
                                  |
                                  |    #Encode to base64
                                  |    cat file | base64 > file_b64
                                  |
                                  |    #Send after timeout
                                  |    (sleep 10; cat file_b64 > /dev/ttyS0) &
                                  |
      #############################################################
      ### Exit minicom but keep configuration (ctrlA-Z, then Q) ###
      #############################################################
                                  |
#Receive file                      |
cat < /dev/ttyUSB0 > file_b64      |
                                  |
#Decode file                       |
cat file_b64 | base64 -di > file   |

引用自:https://unix.stackexchange.com/questions/460342