Netcat bağlantım neden dosyayı doğru şekilde göndermiyor?


0

Netcat kullanarak dosya göndermek için bu betiği yazdım. Niyetim, hedef sunucudaki netcat portunu orijinden açmak, bu şekilde her şeyi dest üzerinde diğeri kaynağa koymak yerine sadece bir betikle yapıyorum.

#!/bin/bash

FILE=$1
SERVDEST=$2
SIZE=`du -h --apparent-size $FILE | cut -f1`
DATE=`date +%Y%m%d%H%M`

echo "Sending file $FILE of $SIZE to $SERVDEST" >> NCtransf_$DATE.log
echo "" >> NCtransf_$DATE.log

ssh $SERVDEST "nc -l 6969 > /backup/backupSO/nc_$FILE.tgz" &

#sleep 5       #tried sleeping for some secs but it didn't work either

(/usr/bin/time --format='Transfer took %e seconds' tar czf - $FILE | nc $SERVDEST 6969) &>> NCtransf_$DATE.log

echo "" >> NCtransf_$DATE.log

Nedense dosya hedefte oluşturulur, ancak boyutu 0'dır. Bilgi asla geçmez ve netcat bağlantı noktası diğer tarafta açık kalır. Bunun ssh $SERVDEST "nc -l 6969 > /backup/backupSO/nc_$FILE.tgz" &için bu çizgiyi değiştirmeyi de denedim ssh $SERVDEST "nohup nc -l 6969 > /backup/backupSO/nc_$FILE.tgz" &ama aynı sonuçlar oldu.

Ayrı aynı satırları denersem (portu hedefe manuel olarak açarak) cazibe gibi çalışır. Sadece kayıt için şifresiz ssh bağlantım var ve port güvenlik duvarında açık.

Yanıtlar:


0

Yaptığın şey işe yaramaz.

Use scp kullanmalısınız .

Temel olarak ssh üzerinden dosya gönderme komutudur.

örnek:

FILE=$1
SERVDEST=$2
SIZE=`du -h --apparent-size $FILE | cut -f1`
DATE=`date +%Y%m%d%H%M`
tar czv /tmp/tmpfile.tar.gz $FILE
scp $FILE $SERVDEST:/backup/backupSO/nc_$FILE.tgz
rm /tmp/tmpfile.tar.gz

Bunu aslında SCP (tabii ki sıkıştırmayı mümkün kılan), SSH, NETCAT ve RSYNC'in performansını karşılaştırmak için yapıyorum. İster inanın ister inanmayın Netcat en iyi zamanları verdi, ancak bu komut dosyasıyla yaptığımda aktarımın neden başarısız olduğunu bilmiyorum.
Nocturn

Bunun nedeni, dosyanızın şifrelenmemiş olarak gönderilmesi ve katran çıkışını doğrudan netcat'a aktarmanızdır. Performans istiyorsanız iyi. Belli ki güvenliği tehlikeye atıyorsun.
moebius_eye

Ayrıca, kullanımında bir hata yapmış olabileceğini düşünüyorum time. Kullanma şekliniz, size ağa göndermek için geçen süreyi değil, dosyanızı sıkıştırmak için harcadığınız süreyi size söyleyecektir.
moebius_eye

İkinci bir cevap verdim.
moebius_eye

0

İşte performans ve güvenlik arasında iyi bir uzlaşma olan bir başka daha iyi cevap.

Test etmekten çekinmeyin.

FILE=$1
SERVDEST=$2
SIZE=`du -h --apparent-size $FILE | cut -f1`
DATE=`date +%Y%m%d%H%M`
tar czv - $FILE | ssh $SERVDEST "cat - > /backup/backupSO/nc_$FILE.tgz"

Daha fazla performans için, CompressionLevel(ile -o) ayarlayabilir ve farklı bir kullanabilirsiniz Cipher; NSA umrunda değil eğer. ;)


Çok teşekkür ederim, diğer cevabınızda dediğim gibi, birkaç seçeneği test ediyorum ve bu onlardan biri. Ancak benim hedefim netcat alıcısını orijinli noktadan ayarlamanın neden aktarmanın başarısız olduğunu bulmak. BSD sürümünü btw kullanıyorum.
Nocturn,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.