相當於 .ssh/config 的 scp -l Bandwidth_cap?

相當於 .ssh/config 的 scp -l Bandwidth_cap?

簡寫:

scp您可以限制交換器使用的頻寬-l,您可以傳遞一個以千位元/秒為單位的數字。

我寧願在我的.ssh/config文件中為某些名稱的機器設定它。

的等效命名設定是什麼-l?我一直沒能找到它。

後續問題:

一般來說,不知道如何在 ssh 命令列選項和配置名稱之間來回映射,缺乏進行 Google 搜尋或根據具體情況手動比較手冊頁。有沒有一個表格可以直接把兩者等同起來?

第一個問題的較長形式,帶有上下文:

我已經開始大量使用 ssh 配置,尤其是現在我需要透過代理並進行大量連接埠映射。我什至根據我需要的隧道類型多次定義同一台機器。

然而,當上傳大文件時,在我的機器上很難做任何其他事情。儘管我的下載頻寬比上行頻寬多,但我認為這scp會使連結飽和,因此即使我的小請求也無法到達互聯網。

有一個解決方案,使用-l頻寬命令列開關scp

scp -l 1000 bigfile.zip titan:

我想在我的配置中使用它,所以我會建立一個名為“titan-upload”的附加命名條目,並且每當我上傳時我都會使用它作為目標。

所以而不是:

scp bigfile.zip titan:

我會說:

scp bigfile.zip titan-upload:

或甚至根據我所在的位置設定不同的上限:

scp bigfile.zip titan-upload-from-work:
  vs.
scp bigfile.zip titan-upload-from-home:

我一般用的是 Mac 和 Linux。

答案1

唉,正如前面提到的,似乎沒有限制頻寬的配置選項。 (我檢查了原始碼!)

一些可能的解決方案是使用 scp 的別名,或者可能是一個函數。 Bash 通常是 mac 和 linux 上的預設 shell,所以這可以工作:

alias scp='scp -l 1000 '
     -or-
alias scp-throttle='scp -l 1000 '

(注意引號內的尾隨空格!1)這會導致每一個scp 指令用於限制頻寬。考慮到您的情況,也許總體上是最好的解決方案。

第二個可能是不錯的選擇,因為您可以使用 scp 進行「正常」傳輸,並使用 scp-throttle 進行較慢的傳輸。

或者是一個函數,需要更多的大腦:

function scp { if [ "$*" =~ "-upload" ]; then command scp -l 1000 "$@"; else command scp  "$@"; fi; }

基本上,如果我們發現'-上傳' 在參數中的任何位置,我們都會以 bw 限制執行傳輸,否則會發生正常傳輸。

這將允許您繼續使用多個名稱/別名來表示操作。

  • scp aaa titan:- 可以正常上傳
  • scp aaa titan-upload:- 會節流
  • scp titan:aaa .- 普通的
  • scp titan-upload-from-home:aaa .- 節流
  • scp a-file-to-upload titan:- 哎呀,被節流了,不是故意的!

編輯:

1 - 別名內部的尾隨空格允許在別名指令之後進一步擴展別名。非常有幫助/有用。Bash Man Page, __ALIASES__ section

相關內容