[Mac/Linux] 使用 curl + ssh tunnel,下載不同網段電腦的 SMB 共享檔案
之前曾經 利用 ssh tunnel 經由跳板連到別的網段的電腦,
我很常使用這個技巧,因為公司的 Wi-fi 網路與 Lab 網段是切開的~
今天我想要從 Lab 網段的一個 SMB 共享目錄,下載東西回來 Mac 上。
找了半天,發現 curl 自己可以支援 smb:// 這樣子的網址,
舉例來說:
curl smb://user:pass@hostname/path/file -O
於是可以把 ssh tunnel 和 curl 結合起來~
假設我的 Mac 電腦可以連上一個跳板 10.1.2.3,
而經由此跳板可以連上 172.22.4.5,
我想做的是藉由此跳板連上 172.22.4.5 的 SMB port (445)。
先建立一個藉由跳板 10.1.2.3 連通 172.22.4.5 的 ssh tunnel,
這邊我選擇在 Mac 上映射到 30559 這個 port (可以自己選):
ssh -NfL *:30559:172.22.4.5:445 10.1.2.3
接著,就可以用 curl 下載 172.22.4.5 上的 SMB 共享檔案。
假設共享檔案的路徑是 \\172.22.4.5\share\file,
帳號密碼分別是 user 和 pass 的話,那就執行下面的指令:
curl smb://user:pass@localhost:30559/share/file -O --retry 9999999 --retry-delay 0 --retry-max-time 0 -C -
就能成功把不同網段的 SMB 共享檔案下載回來囉~
在上面的 curl 指令,我還多加了 -C – 來回復 (resume) 上次未完成的下載,
並且加了重試 (retry) 的功能,在網路不穩的情況下很有用喔~
參考資料:
Persistent retrying resuming downloads with curl
(本頁面已被瀏覽過 1,056 次)