Filesystem

Overview

Warning

This context is used for direct file-access and should therefore be used with caution. For example, erase will not keep track if the file is used by any other device subsystem. Therefore, performing this action on used files may cause unforeseen behavior.

The file context provides a number of commands to handle files in certain predefined directories located on internal and external media.

The commands are:

  • diff - Compare two files
  • dir - List files
  • copy - Copy file from/to internal or external media
  • show - Show file
  • erase - Erase configuration
  • import - Import file from remote source onto filesystem
  • export - Export file to remote destination

The following subcontexts can be selected in the file context. Each subcontext has its own set of implicit directories and set of suitable commands for the applicable type of file.

  • cfg Configuration file
  • log Log files

File system commands are accessed from the admin execution context in the following manner:

example:/#> file
example:/file/#>

Then selecting subcontext:

example:/file#> log
example:/file/log#>

Or one can move to the subcontext directly:

example:/#> file log
example:/file/log#>

Media selector

Throughout this series of commands the keyword media can be used to select between external and internal media. External media is a connected USB-stick or SD-card, internal media is the builtin storage.

For additional information on the Media tools and commands, refer to this page.

For additional information on how to access external media, refer to this page

Cfg

Handling of configuration files.

diff [media <internal|external>] <FILE1> [media <internal|external>] <FILE2>

Compare two configuration files. Shows the differences between two files

Example:

example:/file/#> cfg
example:/file/cfg/#> diff config0.cfg media internal config1.cfg
— config0.cfg
+++ config1.cfg
@@ -1,6 +1,6 @@
{
    “meta”: {
-   “id”: “factory-config.cfg”,
+   “id”: “Example”,
    “vendor”: “Westermo”,
    “os”: “WeOS”,
    “release”: “5.3”

media
Media selector. Available options are internal and external. If media keyword is omitted configured boot media is used.
dir [media <internal|external>] [subdir]

List files on internal or external media.

Example:

example:/file/#> cfg
example:/file/cfg/#> dir
/cfg/                 MOD. DATE/LINK    SIZE  MD5           
config0.cfg           2025-01-14 13:44  2724
config99.cfg          2025-02-04 14:16  9739  a38550e2507d12fc61bf119df2c9481c
startup-config.cfg -> config0.cfg
startup-config.lnk    2024-12-04 11:28    12
Free: 45.0 MiB | Total: 45.3 MiB                            

media
Media selector. Available options are internal and external. If media keyword is omitted configured boot media is used.
subdir
Optional sub directory to list contents of.
copy [media <internal|external>] <src> [media <internal|external] <dst>

Copy file from from/to internal or external media. If media keyword is omitted configured boot media is used.

Example:

example:/file/#> cfg
example:/file/cfg/#> copy config0.cfg media external config_ex.cfg

media
Media selector. Available options are internal and external. If media keyword is omitted configured boot media is used.
src
Source filename
dst
Destination filename
erase [media <internal|external>] <file>

Erase file

Example:

example:/file/#> cfg
example:/file/cfg/#> erase example.cfg

media
Media selector. Available options are internal and external. If media keyword is omitted configured boot media is used.
file
File to erase.
show [media <internal|external>] <file> [KEYWORD[ KEYWORD ...]

Show configuration

If no keyword is given, the command shows the entire configuration file.

If keywords are given that matches keys within the JSON file, only those sections are shown. The keywords can be nested, for example: show config0.cfg bridge 0 vlan

Example:

example:/file/#> cfg
example:/file/cfg/#> show config0.cfg bridge 0 vlan
[
{
    “vid”: 1,
    “id”: “vlan1”,
    “enable”: true,
    “untagged”: [
    “all”
    ],
    “multicast-snooping”: true,
    “priority”: 0
}
]

media
Media selector. Available options are internal and external. If media keyword is omitted configured boot media is used.
file
File to show.
import [SOURCE] [DESTINATION]

Import configuration from remote source onto filesystem.

Example:

import proto ftp user user1 password pw1 192.0.2.1 remote_path local_file

SOURCE

[proto <ftp|tftp|scp|http>] [user <username>] [password <password>] <address[:port]> <remote_path>

proto
Protocol to use. ftp, tftp, scp or http.
username
Username if used by protocol.
password
Password is used by protocol.
remote_path
Path on the remote side.
DESTINATION

[media <internal|external>] <local_file>

media
Media selector. Available options are internal and external.
local_file
File to use as destination
export [SOURCE] [DESTINATION]

Export configuration file to remote destination.

If the remote filename is omitted the local filename is used as the destination filename.

Example:

example:/file/#> cfg
example:/file/cfg/#> export local_file proto ftp user user1 password pw1 192.168.0.2.1 remote_path

SOURCE

[media <internal|external>] <local_file>

media
Media selector. Available options are internal and external.
local_file
File to use as source
DESTINATION

[user <username>] [password <password>] <address[:port]> <remote_path>

proto
Protocol to use. ftp, tftp, scp or http.
username
Username if used by protocol.
password
Password if used by protocol.
remote_path
Path to be used on the remote side.

Log

Handling of log files.

dir [media <internal|external>] [subdir]

List files on internal or external media

Example:

example:/file/#> log
example:/file/log/#> dir
/log/                 MOD. DATE/LINK    SIZE  MD5           
bootsettings.log      2025-02-24 12:20    20
btmp                  2025-02-24 12:20     0
kern.log              2025-02-24 12:24 51539
lastlog               2025-02-24 12:20     0
messages              2025-02-24 12:20  7533
mount.log             2025-02-24 12:20  1908
ntp.log               2025-02-24 12:20   240
syslog                2025-02-24 12:20 59072
wtmp                  2025-02-24 12:20  2304
Free: 45.0 MiB | Total: 45.3 MiB                            

media
Optional selector for external or internal media. If media keyword is omitted internal media is used.
subdir
Optional sub directory to list contents of.
follow [media <internal|external>] <file>

Continuously monitor a (log) file, like UNIX ‘tail -F’.

Example:

example:/file/#> log
example:/file/log/#> follow messages

media
Media selector. Available options are internal and external. If media keyword is omitted internal media is used.
file
File to follow.
copy [media <internal|external>] <src> [media <internal|external] <dst>

Copy file from/to internal or external media.

Example:

example:/file/#> log
example:/file/log/#> copy messages media external messages

media
Media selector available options are internal and external. If media keyword is omitted internal media is used.
src
Source filename
dst
Destination filename
erase [media <internal|external>] <file>

Erase file

Example:

example:/file/#> log
example:/file/log/#> erase example.log

media
Media selector. Available options are internal and external. If media keyword is omitted internal media is used.
file
File to erase.
show [media <internal|external>] <file>

Show content of file on internal or external media.

Example:

example:/file/#> log
example:/file/log/#> show example.log
Test content

media
Media selector. Available options are internal and external. If media keyword is omitted internal media is used.
file
File to show.
export [SOURCE] [DESTINATION]

Export log to remote destination

If the remote filename is omitted the local filename is used as the destination filename.

Example:

example:/file/#> log
example:/file/log/#> export local_file proto ftp user user1 password pw1 192.168.0.2.1 remote_path

SOURCE

[media <internal|external>] <local_file>

media
Media selector. Available options are internal and external.
local_file
File to use as source
DESTINATION

[user <username>] [password <password>] <address[:port]> <remote_path>

proto
Protocol to use. ftp, tftp, scp or http.
username
Username if used by protocol.
password
Password if used by protocol.
remote_path
Path to be used on the remote side.