Equivalente de scp -l bandwidth_cap para .ssh / config?

4

Forma abreviada:

Você pode limitar a largura de banda que o scp usa com a opção -l , você passa um número que está em kbits / s.

Prefiro definir isso no meu arquivo .ssh/config para determinadas máquinas de nomes.

Qual é a configuração nomeada equivalente para -l ? Eu não consegui encontrá-lo.

Pergunta de acompanhamento:

Geralmente, não tenho certeza de como mapear as opções de linha de comando e nomes de configuração do ssh, além de fazer pesquisas no Google ou comparar manualmente as páginas de manual caso a caso. Existe uma tabela que equaciona diretamente os dois?

Forma mais longa da primeira pergunta, com contexto:

Eu comecei a usar o ssh config um pouco, especialmente agora que preciso passar por um proxy e fazer muitos mapeamentos de porta. Eu mesmo defino a mesma máquina mais de uma vez dependendo do tipo de tunelamento que eu preciso.

No entanto, ao fazer o upload de um arquivo grande, é difícil fazer qualquer outra coisa na minha máquina. Mesmo que eu tenha mais banda de download que eu, acho que scp satura o link, então até minhas pequenas solicitações não podem alcançar a Internet.

Há uma correção para isso, usando a opção de linha de comando -l bandwidth para scp .

scp -l 1000 bigfile.zip titan:

Gostaria de usar isso na minha configuração, então criaria uma entrada com nome adicional chamada "titan-upload" e usaria isso como o destino sempre que eu fizer o upload.

Então, em vez de:

scp bigfile.zip titan:

Eu diria:

scp bigfile.zip titan-upload:

Ou até mesmo definir limites diferentes dependendo de onde eu estou:

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

Geralmente estou no Mac e no Linux.

    
por Mark Bennett 12.06.2014 / 22:32

1 resposta

3

Infelizmente, como foi mencionado, não parece ser uma opção de configuração para limitar a largura de banda. (Eu verifiquei o código fonte!)

Algumas soluções possíveis são usar um alias para scp, ou talvez uma função. O Bash é tipicamente o shell padrão tanto no mac & linux, então isso poderia funcionar:

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

(observe o espaço entre aspas! 1 ) Isso faria com que o EVERY comando scp que você usa para limitar a largura de banda. Considerando sua situação, talvez a melhor solução geral.

O segundo pode ser uma boa escolha, já que você pode usar scp para transferências 'normais' e scp-throttle para transferências mais lentas.

Ou uma função, com um pouco mais de inteligência:

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

Basicamente, se encontrarmos ' -upload ' em qualquer lugar nos argumentos, realizamos a transferência com o limite bw, caso contrário, ocorre uma transferência normal.

Isso permitiria que você continuasse usando seus vários nomes / aliases para denotar ações.

  • scp aaa titan: - enviaria normalmente
  • scp aaa titan-upload: - reduziria
  • scp titan:aaa . - normal
  • scp titan-upload-from-home:aaa . - limitado
  • scp a-file-to-upload titan: - oops, estrangulado, não intencional!

EDITAR:

1 - O espaço à direita DENTRO do alias permite mais expansões de alias após o comando de alias. Muito útil / útil. Bash Man Page, __ALIASES__ section

    
por 13.06.2014 / 11:20