VMware, i3 and multiple monitors

For a while now I’ve been trying to set up VMware to work with multiple monitors, in a Linux guest. With some windowmanagers it works out of the box without any issue, such as with Unity. I never figured out how to do it with xmonad, and recently I switched to i3 just to try something new. The damn “Cycle multiple monitors” button didn’t work here either. When I tried it, a message popped up saying:

The virtual machine must have up-to-date VMware Tools installed and running.

..which it had!

However, I found a solution! Place the following line in your i3 configuration file, whether it be ~/.i3/config or ~/.config/i3/config:

..and that’s it! Reload your i3 configuration, and now you should be able to press the “Cycle multiple monitors” button and have dual monitors in your VMware guest!

ncat, a modern implementation of netcat

ncat is a utility that is like the UNIX cat command but for network connections. It’s based on the original netcat and comes with a couple of more modern features.

In this short post, we’ll go through a couple of examples to see exactly what uses this tool has. I’m currently using ncat version 7.01, in Ubuntu 16.04. ncat is a part of the nmap package in Ubuntu.

Shiny new things

A couple of the features of ncat, some of which are new, are:

  • IPv6 Support
  • Chain multiple ncat together
  • Support for SSL
  • Ability to specify specific hosts to allow or deny access to in listen mode

While the new features are great, it’s important to note that ncat is not 100% reverse compatible with the original netcat.


Let’s continue with a couple of examples to get you started.

IPv4 or IPv6?

To force ncat to only use either IPv4 og IPv6, use:

  • -4
  • -6

..as in:

..to connect to a server only through IPv6.

..and type in:

..and press enter twice. The result will be something along the lines of:

The option -C is used because it requires CRLF line endings.


An example from nmap’s website; sending a log file from host1 to host3, by way of host2:




Cloning partitions over the network

One of the more useful tricks is the ability to clone partitions over the network.

On the system you’d like to clone the partition from, do:

..and on the receiving machine:

To speed up the process of transfer you can always throw in gzip for compression:


Web server

Setting up a simple webserver is also easy:

The option -k makes ncat keep listening and accepting more connections after the first one is finished.

File transfer with SSL

On the machine you want to send the file from:

..and on the receiving end:

The option –send-only does what it says – it only sends data and ignores received.

Chat server

As far I know, the are two main ways to do this.

First way

Start listening on a port of your choice:

..and connect to it from another machine:

Type in some text and the line will appear on the other machine when you press enter. You won’t be able to see who wrote what, but hey, it’s good enough if you want to communicate with someone.

Second way

The new fancier way of starting a chat-server is by using –chat:

Users who then want to connect to the chat:

The output will be something along the lines of:

The user IDs generated by ncat are based on the file descriptor for each connection and must be considered arbitrary. Also, you won’t see <userX> in front of the text you type, but others will see it. The main difference when using –chat is that you and every user connected to the server will get a <userX> tag, making it easier to see who wrote what.

Mail client

ncat also works as a mail client. Expect to type a lot:

..followed up by typing:

TCP/UDP daytime server

The daytime service, defined in RFC 867, sends a human-readable date and time string over TCP or UDP port 13. It ignores any input. So, we can use:

Add –udp to create an UDP daytime server instead.

Access control

Allow one host, deny others

Deny one host, allow others

Allow or deny hosts from file

Replace –allowfile with –denyfile to deny and trusted-hosts.txt with a file that contains the hosts to be denied.

These are just a few of the things that you can do with ncat. Have fun exploring the rest!

Split a file into a number of equal parts

As an example, we have a file named primary_data_file.txt that contains 616 lines of data. We want to split this into 4 files, with the equal amount of lines in each.

The following command should do the trick:

The option -da generates the suffixes of length 1, as well as using numeric suffixes instead of alphabetical.

The results after running the command are the following files:

Test if a port on a remote system is reachable

With telnet:

With bash:

Replace tcp with udp, depending on what you want.

With netcat:

If the port is open, you will get an output of 0. If it’s closed, it’s a 1.

Compare the output of two commands

..without creating a temporary file:

The -y is just to show a side-by-side comparison. Very handy! And the result?

Thanks to my colleague Ingvar for showing me this!