2012-09-04 19 views
6

我发出命令:如何使用netcat发送文件,然后保持连接活着?

netcat serveraddress myport < MY_FILE 

的事情是,netcat的发送一条消息,一旦文件被发送到关闭连接。发送该文件后,我需要从控制台写入消息。我记得已经做了一些事情来pipileline stdin ..是这样吗?

netcat serveraddress myport < MY_FILE | 

现在不工作。

我在unix上。

额外的信息:这并没有假定在服务器端控制(如使用上的netcat服务器端监听入站连接)

回答

10

也许你正在做的:

cat MY_FILE - | ncat ... 

(请注意,我故意拼写错误的netcat,因为我相信ncat是一种高级程序)

+0

谢谢,就是这样。如果您可以添加一些关于为什么可行的信息或一些参考信息,那么会带来很大的好处。 (什么是“ - ”?) – quinestor

+1

'-'告诉猫阅读标准输入。它首先读取(并写入)'MY_FILE',然后读取stdin。如果stdin是一个tty,那么它只是阻止来自键盘的输入。 –

7

服务器端:

nc -k -l 10000 < my_in_file 

客户端:

echo "bye" | netcat 192.168.1.6 10000 > my_in_file - 
+1

谢谢。然而,这不起作用,因为服务器端不使用nc,威廉姆提出了什么。 – quinestor

6

继续侦听其他连接数控使用-k。

假设你想连接到服务器,服务器写入文件并打印到标准输出?

服务器: nc -k -l $ PORT |三通文件(或>不打印到stdout文件)

客户 数控$ IP $ PORT < file_to_send

3

您可以使用NC的-q -1选项:

echo MY_FILE | nc -q -1 192.168.0.1 9000 

这样,它如果命令在后台运行,也可以工作。

1

我知道这个线程是很老,但和OP使用UNIX,以供参考是一个Windows相当于 “猫FILE - | NCAT HOST”:

type FILE con | ncat HOST 

然后按Ctrl-Z或CTRL- C结束连接。

注意