Marcel

Latest version: v0.31.3

Safety actively analyzes 723177 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 4 of 8

0.14.0

This release adds commands to upload local files to all nodes of a cluster, and to download
files from all nodes of a cluster.

Suppose that cluster `lab` has nodes `node1`, `node2`, `node3`, `node4`.
This would have been configured in the marcel startup script, e.g.

shell
lab = cluster(user='qa',
identity='/home/qa/.ssh/id_rsa',
hosts=['node1', 'node2', 'node3', 'node4'])

You could then upload the `scripts` directory to `/usr/local/foobar` in each of the nodes as follows:

shell
upload scripts lab /usr/local/foobar


You could download log files from all nodes, to the `logs` directory as follows:

shell
download logs lab /var/log/foobar/log*


In the `logs` target directory, the `download` command will create one directory for each node
of the cluster. So after this command, `logs` might contain the following (e.g.,
`ls -fr dest | (f: f.relative_to('dest'))`)

shell
node1/log.1
node1/log.2
node1/log.3
node2/log.1
node2/log.2
node2/log.3
node2/log.4
node2/log.5

0.12.9

The Linux `tee` command copies an
input stream to multiple files. Marcel now has a `tee` operator. For example:

shell
ls | tee [> f] [select (f: now() - f.mtime < days(1)) > r]


* `ls` lists the contents of the current directory.

* The `tee` command sends each received `File` produced by `ls` to each pipeline
and to the output stream, which causes the files to be printed.

* `[> f]` is the first pipeline, which simply writes the `File`s to the variable
`f`.

* `[select ... > r]` is the second pipeline. It locates those `File`s that have been
modified in the past day, and writes those `File`s to variable `r`.

The output from this command is the result from the `ls` command, but in addition,
the `f` and `r` variables have been set, and can be examined.
E.g., to print out the contents of `r`:

shell
r >

0.12.8

Bug fix. Assignment to a variable whose name matches that of an operator caused the parser to complain.

0.12.7

Bug fixes.

0.12.6

Fixed bug 160. This command:


ifconfig | grep inet


is implemented by one bash op feeding into another. This pattern revealed problems with race conditions and termination of bash commands. Now fixed.

0.12.5

Fixed 158.

Page 4 of 8

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.