Module 6: Navigating the CLI and Output Rendering

Introduction

Now that you have minimega up and running let’s get familiar with the CLI.

Let’s start minimega and attach

minimega -nostdin &
minimega -attach

Disconnecting

When launched interactively one can simply issue the command quit to exit

quit

When launched as a daemon you can use the command disconnect or control+d

disconnect

Help

minimega:/tmp/minimega/minimega$ help
ubuntu: Display help on a command. Here is a list of commands:
.alias                   :       create an alias
.annotate                :       enable or disable hostname annotation
.columns                 :       show certain columns from tabular data
.compress                :       enable or disable output compression
.csv                     :       enable or disable CSV mode
.filter                  :       filter tabular data by column value
.headers                 :       enable or disable headers for tabular data
.json                    :       enable or disable JSON mode
.record                  :       enable or disable history recording
.sort                    :       enable or disable sorting of tabular data
.unalias                 :       remove an alias
background               :       execute a command in the background
bridge                   :       display information and modify virtual bridges
capture                  :       capture experiment data
-- press [ENTER] to show more, EOF to discard --

Pressing enter will print more information and control+d will stop printing

You can also do help <command>

minimega:/tmp/minimega/minimega$ help .record
ubuntu: Usage:
        .record [true,false]
        .record  (command)

Enable or disable the recording of a given command in the command history.

From here you may notice you can actually do tab completion type he tab and you will notice it will expand to help

he<tab>

Tab expansion also works on local filesystem files

shell cat /etc/issue

Through the remaining modules you’ll learn what all these commands do.

For now let’s focus on output rendering

Output Rendering

With minimega you can actually manipulate the way data is printed. For example if you only want to see certain columns or vms you can tell minimega to only print those.

I find it best to learn by example so here are some examples.

minimega:/tmp/minimega/minimega$ host
host   | name   | cpus | load           | memused | memtotal | bandwidth            | vms | vmsall
ubuntu | ubuntu | 1    | 0.00 0.00 0.00 | 190 MB  | 2000 MB  | 0.0/0.0 (rx/tx MB/s) | 0   | 0
minimega:/tmp/minimega/minimega$ .csv true host
host,name,cpus,load,memused,memtotal,bandwidth,vms,vmsall
ubuntu,ubuntu,1,0.00 0.00 0.00,190 MB,2000 MB,0.0/0.0 (rx/tx MB/s),0,0
minimega:/tmp/minimega/minimega$ host
host   | name   | cpus | load           | memused | memtotal | bandwidth            | vms | vmsall
ubuntu | ubuntu | 1    | 0.00 0.00 0.00 | 190 MB  | 2000 MB  | 0.0/0.0 (rx/tx MB/s) | 0   | 0
minimega:/tmp/minimega/minimega$ .csv true
minimega:/tmp/minimega/minimega$ host
host,name,cpus,load,memused,memtotal,bandwidth,vms,vmsall
ubuntu,ubuntu,1,0.00 0.00 0.00,190 MB,2000 MB,0.0/0.0 (rx/tx MB/s),0,0
minimega:/tmp/minimega/minimega$ .csv false
minimega:/tmp/minimega/minimega$ host
host   | name   | cpus | load           | memused | memtotal | bandwidth            | vms | vmsall
ubuntu | ubuntu | 1    | 0.00 0.00 0.00 | 190 MB  | 2000 MB  | 0.0/0.0 (rx/tx MB/s) | 0   | 0
minimega:/tmp/minimega/minimega$ .json true host
[{"Host":"ubuntu","Response":"","Header":["name","cpus","load","memused","memtotal","bandwidth","vms","vmsall"],"Tabular":[["ubuntu","1","0.00 0.00 0.00","190 MB","2000 MB","0.0/0.0 (rx/tx MB/s)","0","0"]],"Error":""}]
minimega:/tmp/minimega/minimega$ .columns memtotal,bandwidth host
host   | memtotal | bandwidth
ubuntu | 2000 MB  | 0.0/0.0 (rx/tx MB/s)

Setting and Unsetting Variables

minimega uses variables and they can be set by calling the command and setting the variable. They are unset using the clear command. Here’s an example.

minimega:/tmp/minimega/minimega$ vm config
ubuntu: Current VM configuration:
Memory:   2048
VCPUS:    1
Networks: []
Snapshot: true
UUID:
Tags:     {}

Current KVM configuration:
Migrate Path:
Disk Paths:         []
CDROM Path:
Kernel Path:
Initrd Path:
Kernel Append:
QEMU Path:          /usr/bin/kvm
QEMU Append:        []
SerialPorts:        0
Virtio-SerialPorts: 0

Current container configuration:
Filesystem Path:
Hostname:
Init:            [/init]
Pre-init:
FIFOs:           0
minimega:/tmp/minimega/minimega$ vm config disk

Notice how the disk path is not set.

minimega:/tmp/minimega/minimega$ vm config disk 
/home/ubuntu/mydisk.img
minimega:/tmp/minimega/minimega$ vm config disk
ubuntu: [/home/ubuntu/mydisk.img]

This is setting and checking the vm config disk variable.

minimega:/tmp/minimega/minimega$ vm config
ubuntu: Current VM configuration:
Memory:   2048
VCPUS:    1
Networks: []
Snapshot: true
UUID:
Tags:     {}

Current KVM configuration:
Migrate Path:
Disk Paths:         [/home/ubuntu/mydisk.img]
CDROM Path:
Kernel Path:
Initrd Path:
Kernel Append:
QEMU Path:          /usr/bin/kvm
QEMU Append:        []
SerialPorts:        0
Virtio-SerialPorts: 0

Current container configuration:
Filesystem Path:
Hostname:
Init:            [/init]
Pre-init:
FIFOs:           0

The disk path is now set in the vm configuration.

minimega:/tmp/minimega/minimega$ clear vm config disk
minimega:/tmp/minimega/minimega$ vm config disk
minimega:/tmp/minimega/minimega$ vm config
ubuntu: Current VM configuration:
Memory:   2048
VCPUS:    1
Networks: []
Snapshot: true
UUID:
Tags:     {}

Current KVM configuration:
Migrate Path:
Disk Paths:         []
CDROM Path:
Kernel Path:
Initrd Path:
Kernel Append:
QEMU Path:          /usr/bin/kvm
QEMU Append:        []
SerialPorts:        0
Virtio-SerialPorts: 0

Current container configuration:
Filesystem Path:
Hostname:
Init:            [/init]
Pre-init:
FIFOs:           0

The clear command was used to unset the disk path.

Authors

The minimega authors

30 May 2017