Skip to main content

index

En quelques phrases

Qu'est-ce que lybcli ?

CryptnDrive est une application web de partage de fichiers chiffré de bout en bout. L'interface web est la manière habituelle d'interagir avec le serveur CryptnDrive. Cependant, une interface web n'est pas toujours pratique. Il est difficile d'automatiser les taches, de les répéter, ...

Dans certaines applications, le client en ligne de commande (ou l'api associée) est plus importante que le client web. C'est typiquement le cas pour la gestion des secrets dans des installations massifiées (VM, ...).

Installation

Un exécutable unique est disponible pour les systèmes d'exploitation suivant : windows, linux. A terme, MacOSX, Android et IOs seront aussi supportés.

Exemple de session

~/cnd$ babel-node client/src/api/cli/cli.js --url http://drive.lybero.net \
--user bill@a.net --password "AuI;76ppkUU0!!78Jhh"
>>>> ls
Test/
ILP/
FES/
Fond AKL/
Client FIC
Stamp
Copie admin
Administratif
>>>> cd Administratif
>>>> ls
1 inscription.docx
Carte de visite
coucou.txt
>>>> cat coucou.txt
Coucou
>>>> lcd /tmp/g
>>>> get coucou.txt
Download coucou.txt : ████████████████████████████████████████ | 100%
>>>> !ls
1 inscription.docx
Carte de visite
coucou.txt
>>>> !cat coucou.txt
Coucou
>>>> mkdir Contrats
>>>> ls
1 inscription.docx
Carte de visite
coucou.txt
Contrats
>>>> cd Contrats
>>>> put /tmp/g/coucou.txt
/tmp/g/coucou.txt added
>>>> ls
coucou.txt
>>>> cd ..
>>>> rget /tmp/g
Creating from vault dir : /tmp/g
"1 inscription.docx" -> "/tmp/g/1 inscription.docx"
Creating from dir dir : /tmp/g/Carte de visite
"recto.pdf" -> "/tmp/g/Carte de visite/recto.pdf"
"coucou.txt" -> "/tmp/g/coucou.txt"
Creating from dir dir : /tmp/g/Contrats
>>>> cd ..
>>>> forall
Entering in vault : Client FIC - id : 5ca5d4804531b31c573128e5
>>>> put coucou.txt
/tmp/g/coucou.txt added
>>>> done
Entering in vault : Fond ILP - id : 5d6d6d119016819ea86d227f
/tmp/g/coucou.txt added
Entering in vault : Contrats - id : 5d7a124a52154a9dd2f5b8cc
/tmp/g/coucou.txt added
Entering in vault : Présentations - id : 5d7a269b14166c1cb03b9a7c
/tmp/g/coucou.txt added
Entering in vault : Correspondance - id : 5d8b3c2a4f9ec2af73cad9ef
/tmp/g/coucou.txt added
Entering in vault : Test MD - id : 5eaafc20558f20330ea14e89
/tmp/g/coucou.txt added
Entering in vault : Test PDFTron - id : 5eb17c567e51ed05a074c81b
/tmp/g/coucou.txt added
Entering in vault : T1 - id : 5f4e648a1f7b137b3be5563a
/tmp/g/coucou.txt added
Entering in vault : Test V - id : 5f510f1e603c08e101e33e19
/tmp/g/coucou.txt added
Entering in vault : Test B - id : 6014323cfbabc16afbed6e53
/tmp/g/coucou.txt added
Entering in vault : Stamp - id : 601a69b7245961cd93bdae6a
/tmp/g/coucou.txt added
Entering in vault : Stamp - id : 5fe47961dd44fe89bb4d72cf
/tmp/g/coucou.txt added
Entering in vault : Copie admin - id : 602c2f54d43318ec426d5c60
/tmp/g/coucou.txt added
already decrypted
Entering in vault : Administratif - id : 6026a8caab7fd53175c0d9de
/tmp/g/coucou.txt added
>>>> showlog
>>>> exit

Lancement de lybcli

Aujourd'hui, lybcli se lance via babel-node :

babel-node client/src/api/cli/cli.js

Les informations qui sont nécessaires au fonctionnement de lybcli sont les suivantes :

  • l'url du serveur CryptnDrive,
  • le nom de l'utilisateur,
  • le mot de passe.

Sans option, ces informations sont demandées au lancement. Sinon, elles peuvent etre passées en ligne de commande via les options --url, --user et --password :

babel-node client/src/api/cli/cli.js --url http://drive.lybero.net \
--user bill@a.net --password "AuI;76ppkUU0!!78Jhh"

Ces options peuvent aussi etre passées dans 3 variables d'environnement :

export LYBURL="http://drive.lybero.net";
export LYBUSER="bill@a.net";
export LYBPASSWORD="AuI;76ppkUU0!!78Jhh"

Lybcli peut recevoir ses commandes de 3 manières différentes :

  • interactivement en ligne de commandes,
  • via un fichier avec l'option --file,
  • en ligne de commandes avec --exec, en séparant les commandes par le ";".
babel-node client/src/api/cli/cli.js --exec \
"ls; cd Stamp; get coucou.txt /tmp/c.txt; putlog"

Commandes de base

ls

Affiche la liste des répertoires de coffres, des coffres, des fichiers, des répertoires. Il y a une seule option "-l" pour donner des détails sur les éléments.

babel-node client/src/api/cli/cli.js --exec \
"ls;ls -l;cd Stamp;ls; ls -l;cd test; ls; ls -l; showlog;"
>>>> ls
$ root/ ls
Test/
Fond AKL/
Client FIC
Stamp
>>>> ls -l
$ root/ ls -l
alice Jul 15, 1:47 Test/
b@a.net Jan 27, 5:35 Fond AKL/
b@a.net Feb 12, 1:06 Client FIC
c@a.net Feb 15, 10:42 Stamp
>>>> cd Stamp
$ root/ cd Stamp
>>>> ls
$ root/Stamp/ ls
arnaud.txt
040_utilisation.md
test
logo.png
stamp.conf
package.json
Les_trois_mouquetaires-1.pdf
Cryptndrive V5 2020 - FR.pdf
Les_trois_mouquetaires-1-stamped.pdf
coucou.txt
Un rép
>>>> ls -l
$ root/Stamp/ ls -l
c@a.net Jan 05, 9:42 arnaud.txt
c@a.net Jan 05, 10:13 040_utilisation.md
c@a.net Feb 09, 10:47 test
stamp@a.net Jan 12, 10:54 logo.png
stamp@a.net Jan 27, 11:39 stamp.conf
c@a.net Feb 03, 9:48 package.json
c@a.net Feb 04, 7:38 Les_trois_mouquetaires-1.pdf
c@a.net Feb 08, 2:10 Cryptndrive V5 2020 - FR.pdf
stamp@a.net Feb 08, 2:40 Les_trois_mouquetaires-1-stamped.pdf
c@a.net Feb 12, 1:04 coucou.txt
c@a.net Feb 15, 10:40 Un rép
>>>> cd test
$ root/Stamp/ cd test
>>>> ls
$ root/Stamp/test/ ls
2021_carte_de_voeux_lybero_net.jpg
SDKFR.pdf
>>>> ls -l
$ root/Stamp/test/ ls -l
charlie Jan 07, 7:39 2021_carte_de_voeux_lybero_net.jpg
stamp@a.net Jan 27, 11:02 SDKFR.pdf
>>>> showlog
$ root/Stamp/test/ showlog

cd

Permet d'entrer dans un répertoire de coffres, dans un coffre ou dans un répertoire.

mkdir

Permet de créer un répertoire de coffres ou un répertoire dans un coffre. Il faut une commande différente pour créer un coffre.

mkvault

Permet de créer un coffre. Ne fonctionne que dans un répertoire de coffre et si l'on a les droits.

lcd

Tout comme avec le ftp, lorsque l'on utilise lybcli, on travaille à la fois dans un répertoire distant et en meme temps dans un répertoire local. cd permet de changer le répertoire distant dans lequel on travaille et lcd permet de changer le répertoire local. Les commandes ultérieures qui sont alors faites sont faites ou en absolu, ou relativement à ce répertoire local.

Le répertoire indiqué est ou absolu (commençant par /) ou relatif (ajouté au chemin local existant ou au répertoire de lancement de l'application).

$  root/  !pwd
/home/alaprevo/Source/lynvictus3/lynvictus

$ root/ lcd client
$ root/ !pwd
/home/alaprevo/Source/lynvictus3/lynvictus/client
$ root/ lcd /tmp
$ root/ !pwd
/tmp
$ root/ lcd a
$ root/ !pwd
/tmp/a

get - Chargement d'un fichier

Permet de charger un fichier. 1 ou 2 arguments sont nécessaires : le nom du fichier à charger dans le coffre courant et éventuellement le chemin / nom du fichier avec lequel le fichier sera chargé. Si ce deuxième argument n'est pas donné, alors le fichier est chargé dans le répertoire local courant.

~/Source/cnd$ babel-node client/src/api/cli/cli.js
$ root/ lcd /tmp/f
$ root/ cd Stamp
$ root/Stamp/ get coucou.txt
Download coucou.txt : ████████████████████████████████████████ | 100%
$ root/Stamp/ get coucou.txt un_autre_fichier.txt
Download coucou.txt : ████████████████████████████████████████ | 100%
$ root/Stamp/ get coucou.txt /tmp/f/encore_un_fichier.txt
Download coucou.txt : ████████████████████████████████████████ | 100%
$ root/Stamp/ !ls
coucou.txt
encore_un_fichier.txt
un_autre_fichier.txt

put - Versement d'un fichier

Le fichier local indiqué en argument (en relatif ou en absolu) est chargé dans le coffre ou dans le répertoire du coffre.

Source/cnd$ babel-node client/src/api/cli/cli.js
$ root/ ls
Stamp
$ root/ cd Stamp
$ root/Stamp/ lcd /tmp/f
$ root/Stamp/ !ls
coucou.txt
encore_un_fichier.txt
un_autre_fichier.txt
$ root/Stamp/ ls
logo.png
$ root/Stamp/ put un_autre_fichier.txt
/tmp/f/un_autre_fichier.txt added
$ root/Stamp/ ls
logo.png
un_autre_fichier.txt
$ root/Stamp/ cat un_autre_fichier.txt
Coucou
$ root/Stamp/ put /tmp/f/encore_un_fichier.txt
/tmp/f/encore_un_fichier.txt added
$ root/Stamp/ ls
logo.png
un_autre_fichier.txt
encore_un_fichier.txt

rget - Chargement d'un vault

rget permet le chargement récursive d'un fichier ou d'un répertoire dans un répertoire local.

~/Source$  babel-node cli.js
$ root/ cd Administratif
$ root/Administratif/ ls
1 inscription.docx
Carte de visite
$ root/Administratif/ lcd /tmp/g
$ root/Administratif/ rget
Creating from vault dir : /tmp/g
"1 inscription.docx" -> "/tmp/g/1 inscription.docx"
Creating from dir dir : /tmp/g/Carte de visite
"recto.pdf" -> "/tmp/g/Carte de visite/recto.pdf"
$ root/Administratif/ !ls
1 inscription.docx
Carte de visite
$ root/Administratif/ !rm -Rf /tmp/g/*
$ root/Administratif/ lcd /home/alaprevo
$ root/Administratif/ rget /tmp/g
Creating from vault dir : /tmp/g
"1 inscription.docx" -> "/tmp/g/1 inscription.docx"
Creating from dir dir : /tmp/g/Carte de visite
"recto.pdf" -> "/tmp/g/Carte de visite/recto.pdf"
$ root/Administratif/ !ls /tmp/g
1 inscription.docx
Carte de visite
$ root/Administratif/ exit

rput - Versement d'un vault

Transfert récursif d'un répertoire local vers un coffre.

~/Source$  babel-node cli.js
$ root/ mkvault "Copie admin"
Vault Copie admin created
$ root/ cd "Copie admin"
$ root/Copie admin/ rput /tmp/g
Written 1 inscription.docx in directory /
Create dir /Carte de visite in vault from /tmp/g/Carte de visite
Written recto.pdf in directory /Carte de visite
$ root/Copie admin/ ls
1 inscription.docx
Carte de visite
$ root/Copie admin/

cat - Affichage d'un fichier texte

Affiche le contenu d'un fichier texte.

alap:~/lynvictus$ node build/cli/main.js --url=http://localhost:3000 --user=c@a.net
Connecting as c@a.net
$ root/ ls
SYSTEM/
Test pour quorum
$ root/ cd "Test pour quorum"
$ root/Test pour quorum/ ls
20160219-143618-small.jpg
$ root/Test pour quorum/ !pwd
/home/alaprevo/Source/lynvictus3/lynvictus

$ root/Test pour quorum/ lcd /home/alaprevo
$ root/Test pour quorum/ put ciaran.txt
/home/alaprevo/ciaran.txt added
$ root/Test pour quorum/ cat ciaran.txt
Hello to all,


I just put the Call for proposal, the original paper on digital vote and a (french) paper on our algorithm in a vault on ee.lybero.net . You should have received an invitation to subscribe in order to access to the content.
$ root/Test pour quorum/ exit

info - Liste des coffres d'un utilisateur

Affiche la liste des coffres appartenant à un utilisateur et la liste des coffres où il est en partage.

alap:~/lynvictus$ node build/cli/main.js --url=http://localhost:3000 --user=c@a.net
Connecting as c@a.net
$ root/ info
Fileset I own :
------------------------------------------------------------
| _id | name |
------------------------------------------------------------
| 6203dce2ef1c93af4b48e91e | Test pour quorum |
| 6205257184deb021469454af | c@a.net-2022-02-10+15:55:59 |
| 62052e777d60271441284e57 | c@a.net-2022-02-10+16:27:48 |
| 620546ea60b188306025f443 | c@a.net-2022-02-10+18:10:11 |
------------------------------------------------------------

Fileset I'm guest on :

$ root/

putcontent - Création d'un fichier à partir d'une chaine de caractères

putcontent "String to put in file" filename.txt
alap:~/lynvictus$ node build/cli/main.js --url=http://localhost:3000 --user=c@a.net
Connecting as c@a.net
$ root/ cd "Test pour quorum"
$ root/Test pour quorum/ ls
20160219-143618-small.jpg
ciaran.txt
$ root/Test pour quorum/ putcontent "Ceci est un exemple." content.txt
/home/alaprevo/Source/lynvictus3/lynvictus/content.txt added
$ root/Test pour quorum/ cat content.txt
Ceci est un exemple.

share - Gestion des partages d'un coffre

share permet de lister les personnes en partage sur un coffre, de partager avec un autre utilisateur, ou un quorum.

Pour lister, la commande est :

share -l

Pour ajouter un utilisateur en partage :

share d@a.net

Pour ajouter un quorum, il faut connaitre son id :

list
share idofthequorumae000772727
alap:~/$ node build/cli/main.js --url=http://localhost:3000 --user=c@a.net
Connecting as c@a.net
$ root/ ls
SYSTEM/
Test pour quorum
$ root/ cd "Test pour quorum"
$ root/Test pour quorum/ ls
20160219-143618-small.jpg
ciaran.txt
content.txt
$ root/Test pour quorum/ share -l
+- - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - -+
| Name | Rights |
+- - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - -+
| Quorum principal | {"manage":true} |
| C | {"manage":true} |
+- - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - -+
$ root/Test pour quorum/ share -a d@a.net
$ root/Test pour quorum/ share -l
+- - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - -+
| Name | Rights |
+- - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - -+
| Quorum principal | {"manage":true} |
| C | {"manage":true} |
| D | {"manage":true,"download":true,"addShare":true,"addFile":true,"addText":true,"seeLogs":true,"seeShares":true} |
+- - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - -+
$ root/Test pour quorum/ share
Invalid parameters
Usage : share [-r|--read|-a|--all] mail@host.com
$ root/Test pour quorum/ share -l
+- - - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - - -+
| Name | Rights |
+- - - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - - -+
| Quorum principal | {"manage":true} |
| C | {"manage":true} |
| D | {"manage":true,"download":true,"addShare":true, |
| |"addFile":true,"addText":true,"seeLogs":true,"seeShares":true} |
+- - - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - - -+
$ root/Test pour quorum/ list
+- - - - - - - - - - - - - --+- - - - - - - - - - - - - - -+
| _id | Name |
+- - - - - - - - - - - - - --+- - - - - - - - - - - - - - -+
| 61f12194ac933eb311512daf | Quorum pour quorum |
| 61f12194203833f00345b9dc | Quorum principal |
+- - - - - - - - - - - - - --+- - - - - - - - - - - - - - -+
$ root/Test pour quorum/ share 61f12194ac933eb311512daf
share.js - share - quorum case
$ root/Test pour quorum/ share -l
+- - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - -+
| Name | Rights |
+- - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - -+
| Quorum principal | {"manage":true} |
| C | {"manage":true} |
| D | {"manage":true,"download":true,"addShare":true,|
| | "addFile":true,"addText":true,"seeLogs":true,"seeShares":true} |
| Quorum pour quorum | {"manage":true} |
+- - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - -+
$ root/Test pour quorum/

Boucle sur tous les vaults

Toutes les instructions entre forall et done sont exécutées sur chaque coffre à la suite, avec un affichage du nom du coffre.

>>>> forall
Entering in vault : Client FIC - id : 5ca5d4804531b31c573128e5
>>>> put coucou.txt
/tmp/g/coucou.txt added
>>>> done
Entering in vault : Fond ILP - id : 5d6d6d119016819ea86d227f
/tmp/g/coucou.txt added
Entering in vault : Contrats - id : 5d7a124a52154a9dd2f5b8cc
/tmp/g/coucou.txt added
Entering in vault : Présentations - id : 5d7a269b14166c1cb03b9a7c
/tmp/g/coucou.txt added
Entering in vault : Correspondance - id : 5d8b3c2a4f9ec2af73cad9ef
/tmp/g/coucou.txt added
Entering in vault : Test MD - id : 5eaafc20558f20330ea14e89
/tmp/g/coucou.txt added
Entering in vault : Test PDFTron - id : 5eb17c567e51ed05a074c81b
/tmp/g/coucou.txt added
Entering in vault : T1 - id : 5f4e648a1f7b137b3be5563a
/tmp/g/coucou.txt added
Entering in vault : Test V - id : 5f510f1e603c08e101e33e19
/tmp/g/coucou.txt added
Entering in vault : Test B - id : 6014323cfbabc16afbed6e53
/tmp/g/coucou.txt added
Entering in vault : Stamp - id : 601a69b7245961cd93bdae6a
/tmp/g/coucou.txt added
Entering in vault : Stamp - id : 5fe47961dd44fe89bb4d72cf
/tmp/g/coucou.txt added
Entering in vault : Copie admin - id : 602c2f54d43318ec426d5c60
/tmp/g/coucou.txt added
already decrypted
Entering in vault : Administratif - id : 6026a8caab7fd53175c0d9de
/tmp/g/coucou.txt added
>>>> showlog
>>>> exit

Substitution sur la ligne de commandes

Afin de pouvoir par exemple créer un répertoire local avec un nom spécifique, avant chaque exécution de ligne de commande, les éléments {{NAME}}, {{ID}} et {{PATH}} sont substitués avec respectivement le nom de l'objet courant (répertoire de coffres, coffre ou répertoire), son ID, son chemin.

$ root/ cd "Fond AKL"
$ root/Fond AKL/ lcd /home/alaprevo/tmp
$ root/Fond AKL/ !pwd
/home/alaprevo/tmp
$ root/Fond AKL/ ls
Présentations
Correspondance
T1
Stamp
$ root/Fond AKL/ cd Stamp
$ root/Fond AKL/Stamp/ !echo "{{NAME}}"
Stamp
$ root/Fond AKL/Stamp/ !echo "{{ID}}"
601a69b7245961cd93bdae6a
$ root/Fond AKL/Stamp/ !echo "{{PATH}}"
root/Fond AKL/Stamp
$ root/Fond AKL/Stamp/ !echo "{{PATH}}" > {{NAME}}.txt
$ root/Fond AKL/Stamp/ !cat {{NAME}}.txt
root/Fond AKL/Stamp
$ root/Fond AKL/Stamp/ !ls
export_fic_partiel_1.csv
export_fic_partiel_2.csv
Stamp.txt
$ root/Fond AKL/Stamp/ showlog

Exécution de commandes locales (shell)

En faisant commencer une ligne par un point d'exclamation (!), la suite de la ligne est exécutée dans un process shell et le résultat (stdout et stderr) sont affichés et stockés.

Gestion des logs

Les commandes et leurs résultats sont affichés mais aussi stockés en mémoire. Il est possible d'afficher, remettre à zéro ou stocker dans le coffre ou un répertoire du coffre courant le fichier correspondant.

resetlog réinitialise les logs.

showlog affiche le log entre 2 lignes de caractère -.

putlog nomdefichier.extension stocke les logs dans le coffre ou le répertoire courant du coffre. Aucune stockage n'est fait si l'on est couramment dans un répertoire de coffres.

Enregistrement d'un utilisateur

Il est possible d'enregistrer un nouvel utilisateur de plusieurs manières dans CryptnDrive. Une des manières est la création manuelle d'un utilisateur. Dans ce cas, à la première connexion, il est nécessaire de changer le mot de passe de l'utilisateur. Pour etre précis, lors de la création d'un utilisateur, sa bi-clé ElGamal n'est pas créée. Elle n'est créée que lorsque l'utilisateur change son mot de passe.

C'est ce à quoi la commande password sert. Cependant, le mot de passe, le nom de l'utilisateur et l'url de CryptnDrive sont stockés dans le fichier ~/.cnd.env. Il suffit de sourcer ce fichier pour pouvoir se connecter.

:~/cnd$  babel-node client/src/api/cli/cli.js --user f@a.net --password "abcdefghi"
Create keystore
LOG [602cdd4243a4ae1f975d7010]: Signature added for 0/602cdd972b2cf1c8d91d4287
by my key 602cdd972b2cf1c8d91d4287
LOG [602cdd4243a4ae1f975d7010]: New signKey 602cdd972b2cf1c8d91d4287 created
LOG [602cdd4243a4ae1f975d7010]: Protect key 602cdd972b2cf1c8d91d4287 with passphrase
LOG [602cdd4243a4ae1f975d7010]: New elgamalKey 602cdd978218dbdf40c184d9 created
LOG [602cdd4243a4ae1f975d7010]: Signature added for 0/602cdd978218dbdf40c184d9
by my key 602cdd972b2cf1c8d91d4287
LOG [602cdd4243a4ae1f975d7010]: Protect key 602cdd978218dbdf40c184d9 with passphrase
LOG [602cdd4243a4ae1f975d7010]: New device KeyStore 602cdd97fb75bd3edff4ee6e created
LOG [602cdd4243a4ae1f975d7010]: KeyStore initialized
LOG [602cdd4243a4ae1f975d7010]: KeyStore 602cdd4243a4ae1f975d7010 (F) saved.
$ root/ password abcdefghi
LOG [602cdd4243a4ae1f975d7010]: Passphrase changed for key 602cdd972b2cf1c8d91d4287
LOG [602cdd4243a4ae1f975d7010]: Passphrase changed for key 602cdd978218dbdf40c184d9
LOG [602cdd4243a4ae1f975d7010]: KeyStore 602cdd4243a4ae1f975d7010 (F) saved.
Successfull password change
Password file written to : /home/alaprevo/.cnd.env
$ root/ !cat ~/.cnd.env
export LYBURL="http://localhost:3000";
export LYBUSER="f@a.net";
export LYBPASSWORD="2d02ab5f838360b16c94259d580cba5a9b36e7a0ee8cf4d9\
a86f498a08074f41a05d013f453a01a10ae220dc0e1cc530c62855b171375d39f6b4\
f60e8ea5b115";
$ root/ exit

Exécution de javascript

Toute autre instruction est évaluée comme étant du javascript.

:~/Source$  babel-node cli.js
$ root/ console.log("Ceci est un test");
Ceci est un test

$ root/ a=42
$ root/ console.log(a)
42

Aide

La commande help est disponible.

How to use : 
babel-node cli.js [opts]
opts : --url instanceUrl, --user user, --password password,
--file command_file, --exec "list of commands separated by;"
Environment variables LYBURL LYBUSER LYBPASSWORD may be defined instead of args.
Command lines arguments have priority on environment variables.
Available commands :
ls [-l] : list folders, filesets and files of the current path
cd path : navigate into folder or vaults
mkdir path : create a folder in the tree or in a vault
mkvault vaultname : create a vault
Beware, if you are in a vault, it will fail
put filepath : upload file into the current vault.
Beware, if you are not in a vault, it will fail
rput directory : upload all files and directory
in the current directory of the vault.
get file localfile : download file
rget local : download all files and subdirectory
in the directory local of the harddisk.
info : get info
cat file : display the content of the file
password password : change password, generate a random one and write
it in ~/.cnd.env
forall [-s] [-o] : loop till done on all vaults (-o owned ones, -s shared only)
done : loop limit
showlog : show the current stored log
resetlog : reset the current logs
putlog : write the current log in the current fileset
{{NAME}} {{ID}} {{PATH}} : on any command line, these values are substituted
{{NAME}} with current object's name, {{PATH}} the
object's path, {{ID}} with object's id
lcd hdpath : change default path for system commands
if hdpath starst with /, the path is taken as is. Else,
it changes the path relatively to the current one.
!system command : execute a system command. For example : !ps aux
exit : exit
quit : exit
help : display the list of available commands
anything else : is interpreted as javascript

Sortie

On peut sortir de la lybcli de 2 manières : la commande exit ou la commande quit.