Netcat ile dosya gönderme


23

Bir bilgisayardan diğerine dosya göndermek için böyle bir şey kullanıyorum:

Dosya sunmak için (A bilgisayarında):

cat something.zip | nc -l -p 1234

Dosya almak için (B bilgisayarında):

netcat server.ip.here. 1234 > something.zip

Benim sorum ... tam tersini yapabilir miyim? Diyelim ki B bilgisayarında dosyam var ve A'ya göndermek istiyorum, ancak yukarıda yazdığım şekilde değil, ancak (A) dosyasını alması gereken bilgisayarı 'dinleme' sunucusu olacak ve 'gönderme' dosyasını ( B) sunucuya göndermek ve dosya göndermek? Mümkün mü? Sanırım olabilir ama bunu nasıl yapacağımdan emin değilim.

Yukarıdaki açıklamamın karışması durumunda: Dosyayı sunucuda sunmak ve daha sonra onu (yerine yaptığım gibi) almak yerine 'sunucu'ya nasıl gönderirim?


Not: kullanıyorsanız ncçünkü scpçok yavaş olduğunu ve şifreleme gerekmez, sen geçmek isteyebilirsiniz udpcast: superuser.com/questions/692294/...
unhammer

Yanıtlar:


38

Sunucunuzda (A):

nc -l -p 1234 -q 1> bir şey. zip </ dev / null
"Gönderen istemcinizde" (B):
kedi bir şey.zip | netcat server.ip.burada 1234


Evet, bir şekilde taraf değiştirmem gerekeceğini düşündüm ama nasıl emin değildim :). Teşekkürler, işe yarıyor!
Phil

Bu sevimli bir netcat hilesi.
DaveParillo

2
neden < /dev/nullparçası?
törzsmókus

7
Netcat hem stdin'i hem de stdout'u aynı anda yazdığından, stdin'den okunan her şeyi ağa gönderir ve ağdan alınan her şeyi stdout'a yazdırır. </ Dev / null, alınan dosya tamamlandığında, netcat'in konsoldan (yine de okumaması gerekir!) Girdi beklemek için süresiz olarak orada oturmamasını ve aynı zamanda yutulmamasını sağlar çalıştırmak istediğiniz bir sonraki komutu yazmanız gibi, terminalde bulunabilecek herhangi bir giriş.
martinwguy

4
Eğer varsa , boruya gidiş dosya ilerlemesini gösterecek pv"sunucu istemcisi" olarak çalıştırılmasını öneririz pv soemthing.zip | ....
ThorSummoner

6

Not olarak, dosya izinlerini, sahipliği ve zaman damgalarını da korumak istiyorsanız , dizin ve dosyaların aktarımını yapmak için netcat ile tar kullanırız .

Alıcı sistemde:

nc -l -p 12345 -q 1 | tar xz -C /path/to/root/of/tree

Gönderme sisteminden:

tar czf - ./directory_tree_to_xfer | nc <host name or IP address of receiving system> 12345 

Umarım yardımcı olur.


1
Cevaba iyi bir ek, ancak lütfen ayrı bir cevap olarak değil, bir yorum olarak bırakın.
agtoever

2
Bu alt panoda Rep puanlarının olmaması nedeniyle yukarıdaki bir yorum eklenemedi, bu yüzden bir cevap olarak sunmak zorunda kaldım, görünüşe göre kendi cevaplarınız hakkında yorum yapmanıza izin verildi.
B.Kaatz

3

Bilgisayar A: nc -l -p 1234 > filename.txt

Bilgisayar B: nc server.com 1234 < filename.txt

Çok çalışmalı;)


0

B bilgisayarında başka bir netcat örneği başlatın. A bilgisayarında yaptıklarınızı yapın, ancak B'den sunun. Yeni sunucuya yeni bir bağlantı noktası verin.


Aynı şeyi yapmak istemiyorum, komutları başka bir şeye değiştirmek istiyorum (mümkün olup olmadığından emin değilim) ... sorumdaki kalın metne bakın. Demek istediğim, B'den hizmet etmek istemiyorum. A'nın giriş için sunucu dinlemesini istiyorum ... ve sonra dosya içeriğini dinleme olmayan B'den dinleme A'ya göndermek istiyorum.
Phil

Netcat böyle çalışmaz.
DaveParillo

1
Kabul edilen cevaptan görebileceğiniz gibi - evet, netcat de böyle çalışabilir.
Phil

Haklısın. Her gün yeni bir şey öğreniyorum!
DaveParillo
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.