netcat lets you stream data over a network connection. This has several usecases:
hard drive cloning
Let's say you have two machines of similar configuration and you want to clone the hard drive of one over to the other; you want to copy the "template" machine to a "target" machine. Given that both machines are online and the target machine has an IP of 192.168.1.2 you can do this:
On the target machine
$ nc -l -p 8000 | dd of=/dev/hda1
- The target machine is now listening on port 8000. Anything it receives it will write to the first partition of the first drive (hda1).
On the template machine
$ dd if=/dev/hda1 | nc 192.168.1.2 8000
- The first partition of the template machine is read and piped to netcat, which sends it to the IP address and correct port of the target machine.
If you use this technique don't forget the Master Boot Record. You can copy it with:
$ dd if=/dev/hda bs=446 count=1
snmp monitoring with UDP
You can also monitor network traffic by using netcat as data consumer. To listen to snmp's trap communication via UDP set up a SNMP trap receiver using
netcat -u -l 162 | hexdump -C