Problema de transferência de arquivos Netcat

1

Eu tenho dois scripts personalizados que acabei de escrever para facilitar a transferência de arquivos entre meu VPS e meu servidor doméstico. Ambos são escritos em bash (short & sweet):

Para enviar:

#!/bin/bash

SENDFILE=$1
PORT=$2
HOST='<my house>'
HOSTIP='host $HOST | grep "has address" | cut --delimiter=" " -f 4'

echo Transferring file \"$SENDFILE\" to $HOST \($HOSTIP\).

tar -c "$SENDFILE" | pv -c -N tar -i 0.5 | lzma -z -c -6 | pv -c -N lzma -i 0.5 | nc -q 1 $HOSTIP $PORT

echo Done.


Para receber:

#!/bin/bash

SERVER='<myserver>'
SERVERIP='host $SERVER | grep "has address" | cut --delimiter=" " -f 4'
PORT=$1

echo Receiving file from $SERVER \($SERVERIP\) on port $PORT.

nc -l $PORT | pv -c -N netcat -i 0.5 | lzma -d -c | pv -c -N lzma -i 0.5 | tar -xf -

echo Done.

O problema é que, por um segundo muito rápido, vejo algo piscar nas linhas de "Connection Refused" (antes de pv sobrescrevê-lo), e nenhum arquivo é transferido. é encaminhado através do meu roteador, e o nmap confirma:

~$ sudo nmap -sU -PN -p55515 -v <my house>

Starting Nmap 5.00 ( http://nmap.org ) at 2010-04-21 18:10 EDT
NSE: Loaded 0 scripts for scanning.
Initiating Parallel DNS resolution of 1 host. at 18:10
Completed Parallel DNS resolution of 1 host. at 18:10, 0.00s elapsed
Initiating UDP Scan at 18:10
Scanning 74.13.25.94 [1 port]
Completed UDP Scan at 18:10, 2.02s elapsed (1 total ports)
Host 74.13.25.94 is up.
Interesting ports on 74.13.25.94:
PORT      STATE         SERVICE
55515/udp open|filtered unknown

Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 2.08 seconds
           Raw packets sent: 2 (56B) | Rcvd: 5 (260B)

Além disso, executar o netcat normalmente não funciona:

squircle@summit:~$ netcat <my house> 55515
<my house> [<my IP>] 55515 (?) : Connection refused

Ambas as caixas são Ubuntu Karmic (9.10). O receptor não tem firewall e o tráfego de saída nessa porta é permitido no remetente. Não tenho ideia do que solucionar em seguida. Alguma idéia?

P.S .: Sinta-se à vontade para mover isso para SO / SF se achar que se encaixaria melhor lá.

    
por squircle 22.04.2010 / 00:18

1 resposta

1
HOSTIP='host $HOST | grep "has address" | cut --delimiter=" " -f 4'
SERVERIP='host $SERVER | grep "has address" | cut --delimiter=" " -f 4'

Eu não tenho idéia do que você acha que isso faz, mas você deve remover essas linhas e usar apenas $ HOST e $ SERVER diretamente.

The problem is that, for a very quick second, I see something flash along the lines of "Connection Refused" (before pv overwrites it), and no file is ever transferred. The port is forwarded through my router, and nmap confirms it: ~$ sudo nmap -sU -PN -p55515 -v [...] PORT STATE SERVICE 55515/udp open|filtered unknown

Você disse para fazer uma varredura do udp. Porque você fez isso? Você não está usando o netcat no modo udp, nem isso faria sentido para a transferência de arquivos.

Also, running netcat normally doesn't work either: squircle@summit:~$ netcat 55515 [] 55515 (?) : Connection refused

Você não está encaminhando a porta corretamente.

De qualquer forma, todo esse cenário é falho desde o começo. Apenas use scp ou rsync. Se você insistir em usar lzma, canalize tar + lzma sobre ssh. Usar o netcat nessa situação não lhe compra absolutamente nada.

    
por 22.04.2010 / 01:09