Alternative to xsel or xclip *without* X11 installed?

The clipboard itself is a feature of X11, so you will not be able to use it without having any X11 server instance running anywhere. More about that below.

However, xclip/xsel don't have the X11 server as dependency, they only need some client libraries installed. You should install xsel though if you want to have as few packages as possible, as it has significantly less dependencies than xclip (compare the output of apt depends --recurse --important xsel and apt depends --recurse --important xclip).

Back to the X11 server. You said you don't want to install a full graphical X11 server stack on your headless Ubuntu server, which is not necessary. That requires you to have an X11 server running on your local client instead though, if you want to use its features like the clipboard.

On a Linux desktop client this is no problem, as you already have X11 running there usually, but on Windows you don't. Luckily there seems to be a small X11 server version for Windows too, called Xming.

Once you have that running and configured, you should be able to forward your local X11 session via SSH (using PuTTY) to your headless server. There you can then use e.g. xsel to interact with it and access your local clipboard.

More details about how to set up Xming, PuTTY and the SSH server for X11 forwarding can be found in these posts:

  • How to use PuTTY to get X11 connections over ssh from Windows to Ubuntu
  • xclip on headless server
  • How to use X11 forwarding with PuTTY (on Super User)

script logs the whole dialogue

The compiled program script is a program in the package bsdutils in the repository 'main' in Ubuntu. It saves the whole dialogue in a text screen, terminal window or remote connection. You can run script in your server.

The default name of the log file is typescript in the directory where you start script, but you can select another name if you start script with a parameter (alias argument)

script my-script.log

Demo example

Start script and run some commands:

sudodus@bionic64 ~/test $ LANG=C script my-script.log
Script started, file is my-script.log
sudodus@bionic64 ~/test $ echo 'Hello World'
Hello World
sudodus@bionic64 ~/test $ pwd
/home/sudodus/test
sudodus@bionic64 ~/test $ ls
my-script.log
sudodus@bionic64 ~/test $ exit
exit
Script done, file is my-script.log

Check the log file:

sudodus@bionic64 ~/test $ cat my-script.log 
Script started on 2019-01-21 19:50:22+0100
sudodus@bionic64 ~/test $ echo 'Hello World'
Hello World
sudodus@bionic64 ~/test $ pwd
/home/sudodus/test
sudodus@bionic64 ~/test $ ls
my-script.log
sudodus@bionic64 ~/test $ exit
exit

Script done on 2019-01-21 19:50:52+0100
sudodus@bionic64 ~/test $