Como faço para que qualquer aplicativo use minha interface eth0: 0?

1

Como em curL, temos uma opção de endereço de vinculação, podemos fazer o download usando uma determinada interface ..

Por exemplo, para fazer o download de eth0: 0, usamos o link $ curl --interface eth0: 0

Desta forma, meu objetivo é fazer o download de arquivos, mas como o curL não suporta downloads segmentados, eu não quero usá-lo. Temos uma restrição de velocidade em cada IP. Para superar essa restrição, posso iniciar muitas interfaces como essa e fazer o download de uma parte do arquivo de cada interface.

Como faço com que qualquer outro gerenciador de download, como o AXEL, se vincule a um determinado endereço? Eu estou pedindo alguma idéia como alterar variáveis no shell BASH, de modo que todo o shell se liga a uma interface específica, digamos eth0: 1 ...

    
por Abhijeet Rastogi 14.09.2009 / 19:32

3 respostas

3

Parece que o que você realmente quer é um aplicativo que possa baixar um arquivo em partes de diferentes interfaces e juntá-las no final. Por exemplo, se você soubesse que seu arquivo tinha 100 MB e quisesse pegar pedaços de aproximadamente 10 MB, você gostaria de fazer:

1. start a download of bytes 0..10000000 on eth0, saving to filename.part1
2. start a download of bytes 10000001..20000000 on eth0:0, saving to 'filename.part2
3. start a download of bytes 20000001..30000000 on eth0:1, saving to filename.part3
...
N-1. wait for all downloads to complete
N. join all filename.part* together to get filename.complete

Eu sei que wget pode retomar um arquivo baixado parcialmente. Tenho certeza que funciona lendo para o final do arquivo existente e, em seguida, solicitando o arquivo, a partir do próximo byte, do servidor.

Parece que curl suporta downloads parciais como este, usando a opção --range <byterange> . Então você pode roteirizar os passos acima assim:

1. curl --interface eth0 --range 0,10000000 http://some.server.com/bigfile -o bigfile.part1
2. curl --interface eth0:0 --range 10000001,20000000 http://some.server.com/bigfile -o bigfile.part2
... 
N. cat bigfile.part* > bigfile

Advertências: isso nem sempre funciona; se o servidor HTTP / 1.1 não tiver o recurso de download parcial ativado, você obterá o arquivo inteiro em cada chamada. Consulte man curl para detalhes sobre a opção --range .

Editar: intervalos de bytes fixos nos exemplos

    
por 14.10.2009 / 16:38
1

Aqui é uma postagem no blog sobre como dividir um download com o curl. Eu tentei no Windows, mas não consegui fazê-lo funcionar, mas você pode ter sucesso com o Linux.

    
por 14.10.2009 / 15:19
-1

Torne eth0: 0 a rota padrão em vez de eth0. O comando:

netstat -rn

mostrará qual é a sua interface padrão atual. Se não for eth0: 0, apague-o com

route delete 0.0.0.0

adicione-o com algo como

route add default eth0:0
    
por 16.09.2009 / 14:32