{
"info": {
"author": "IoT-LAB Team",
"author_email": "admin@iot-lab.info",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: End Users/Desktop",
"Programming Language :: Python",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Utilities"
],
"description": "SSH CLI Tools\n=============\n\n|PyPI| |Travis| |Codecov|\n\n**SSH CLI Tools** provides a set of commands for interacting remotely and easily\nwith IoT-Lab Open A8 nodes. See `here `_\nto get more information on this kind of node.\n\nAll available actions provided by **SSH CLI Tools** are available as sub-commands\nof `iotlab-ssh`.\n\nThe provided sub-commands are:\n\n=================== ==========================================================================================\n Sub-command Function\n=================== ==========================================================================================\n **flash-m3** Flash the given firmware on the M3 MCU of A8 nodes\n **reset-m3** Reset the M3 node of A8 nodes\n **wait-for-boot** Block the execution until all given A8 nodes have booted or maximum wait time has expired\n **run-script** Run a given script in background (screen session) on the given A8 nodes\n **run-cmd** Run a command on the given A8 nodes\n **copy-file** Copy a file on SSH frontend homedir directory (*~/A8/.iotlabsshcli*)\n=================== ==========================================================================================\n\n**SSH CLI Tools** can be used in conjunction with the\n`IoT-Lab CLI Tools `_ commands like\n`iotlab-auth` and `iotlab-experiment`.\n\nInstallation:\n-------------\n\nYou need python `pip `_.\nTo do a system-wide install of the ssh-cli-tools use pip (or pip3 for\nPython 3)::\n\n $ sudo pip install iotlabsshcli\n\nPip version >= 9.0 is known to work ; you may need to upgrade.\nSee ``_ for details on installation options.\n\nRequirements:\n-------------\n\nOpen A8 nodes are reachable through a gateway SSH server (IoT-LAB SSH\nfrontend). For this reason you must verify that your SSH public key used by\nssh-cli-tools has been recorded in your IoT-LAB user profile. You can find how\nto configure your IoT-LAB SSH access in this\n`tutorial `_.\n\nExamples:\n---------\n\nStart an experiment, wait for it to be ready, wait for all A8 boot:\n...................................................................\n\n.. code-block::\n\n $ iotlab-experiment submit -d 120 -l saclay,a8,1-10\n {\n \"id\": 65535\n }\n $ iotlab-experiment wait\n Waiting that experiment 65535 gets in state Running\n \"Running\"\n $ iotlab-ssh wait-for-boot\n {\n \"wait-for-boot\": {\n \"0\": [\n \"node-a8-2.saclay.iot-lab.info\",\n \"node-a8-3.saclay.iot-lab.info\",\n \"node-a8-5.saclay.iot-lab.info\",\n \"node-a8-6.saclay.iot-lab.info\",\n \"node-a8-7.saclay.iot-lab.info\",\n \"node-a8-9.saclay.iot-lab.info\",\n \"node-a8-10.saclay.iot-lab.info\"\n ],\n \"1\": [\n \"node-a8-4.saclay.iot-lab.info\",\n \"node-a8-8.saclay.iot-lab.info\"\n ]\n }\n }\n\n\n**Note:** node-a8-4 and node-a8-8 are broken in Saclay.\n\nFlash a firmware on the M3 of the working node:\n...............................................\n\n.. code-block::\n\n $ iotlab-ssh flash-m3 -l saclay,a8,2-3+5-7+9-10\n {\n \"flash-m3\": {\n \"0\": [\n \"node-a8-2.saclay.iot-lab.info\",\n \"node-a8-3.saclay.iot-lab.info\",\n \"node-a8-5.saclay.iot-lab.info\",\n \"node-a8-6.saclay.iot-lab.info\",\n \"node-a8-7.saclay.iot-lab.info\",\n \"node-a8-9.saclay.iot-lab.info\",\n \"node-a8-10.saclay.iot-lab.info\"\n ]\n }\n }\n\nReset the M3 of one A8 node:\n............................\n\n.. code-block::\n\n $ iotlab-ssh reset-m3 -l saclay,a8,2\n {\n \"reset-m3\": {\n \"0\": [\n \"node-a8-2.saclay.iot-lab.info\"\n ]\n }\n }\n\nUse the *--verbose* option to get the commands output:\n......................................................\n\n.. code-block::\n\n $ iotlab-ssh --verbose reset-m3 -l saclay,a8,2\n Connecting via SSH proxy saclay.iot-lab.info:22 -> node-a8-2.saclay.iot-lab.info:22\n [node-a8-2.saclay.iot-lab.info]\tOpen On-Chip Debugger 0.9.0-dirty (2016-04-15-00:55)\n [node-a8-2.saclay.iot-lab.info]\tLicensed under GNU GPL v2\n [node-a8-2.saclay.iot-lab.info] For bug reports, read\n [node-a8-2.saclay.iot-lab.info]\thttp://openocd.org/doc/doxygen/bugs.html\n [node-a8-2.saclay.iot-lab.info]\tadapter speed: 1000 kHz\n [...]\n [node-a8-2.saclay.iot-lab.info]\tTargetName Type Endian TapName State\n [node-a8-2.saclay.iot-lab.info]\t-- ------------------ ---------- ------ ------------------ ------------\n [node-a8-2.saclay.iot-lab.info] 0* stm32f1x.cpu cortex_m little stm32f1x.cpu running\n [node-a8-2.saclay.iot-lab.info]\tInfo : JTAG tap: stm32f1x.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)\n [node-a8-2.saclay.iot-lab.info]\tInfo : JTAG tap: stm32f1x.bs tap/device found: 0x06414041 (mfg: 0x020, part: 0x6414, ver: 0x0)\n [node-a8-2.saclay.iot-lab.info]\tshutdown command invoked\n [node-a8-2.saclay.iot-lab.info]\tReturn Value: 0\n {\n \"reset-m3\": {\n \"0\": [\n \"node-a8-2.saclay.iot-lab.info\"\n ]\n }\n }\n\nRun a command on two A8 nodes:\n..............................\n\n.. code-block::\n\n $ iotlab-ssh --verbose run-cmd \"uname -a\" -l saclay,a8,2-3\n Connecting via SSH proxy saclay.iot-lab.info:22 -> node-a8-2.saclay.iot-lab.info:22\n [node-a8-2.saclay.iot-lab.info]\tLinux node-a8-2 3.18.5-iotlab+ #9 Thu Sep 1 16:17:22 CEST 2016 armv7l GNU/Linux\n [node-a8-3.saclay.iot-lab.info]\tLinux node-a8-3 3.18.5-iotlab+ #9 Thu Sep 1 16:17:22 CEST 2016 armv7l GNU/Linux\n {\n \"run-cmd\": {\n \"0\": [\n \"node-a8-2.saclay.iot-lab.info\",\n \"node-a8-3.saclay.iot-lab.info\"\n ]\n }\n }\n\nRun a command on SSH frontend:\n..............................\n\n.. code-block::\n\n $ iotlab-ssh --verbose run-cmd \"uname -a\" --frontend\n [saclay.iot-lab.info]\tLinux saclay 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 GNU/Linux\n {\n \"run-cmd\": {\n \"0\": [\n \"saclay.iot-lab.info\"\n ]\n }\n }\n\nCopy file on SSH frontend homedir directory (~/A8/.iotlabsshcli):\n.................................................................\n\n.. code-block::\n\n $ iotlab-ssh copy-file test.tar.gz\n {\n \"run-cmd\": {\n \"0\": [\n \"saclay.iot-lab.info\"\n ]\n }\n }\n $ iotlab-ssh run-cmd \"tar -xzvf ~/A8/.iotlabsshcli/test.tar.gz -C ~/A8/.iotlabsshcli/\" --frontend\n {\n \"run-cmd\": {\n \"0\": [\n \"saclay.iot-lab.info\"\n ]\n }\n }\n\n**Note:** A8 homedir directory is mounted (via NFS) by A8 nodes during experiment.\n\nRun the script `/tmp/test.sh` on `node-a8-2` in saclay:\n.......................................................\n\n.. code-block::\n\n $ iotlab-ssh run-script /tmp/test.sh -l saclay,a8,2\n {\n \"run-script\": {\n \"0\": [\n \"node-a8-2.saclay.iot-lab.info\"\n ]\n }\n }\n\n**Note:** a screen session is launched on the A8 node\nto actually run the script and provide easy access to outputs if needed.\nWhen the script ends, the screen session is terminated and the logs are gone.\n\n.. code-block::\n\n root@node-a8-2:~# screen -ls\n There is a screen on:\n 1877.- (Detached)\n 1 Socket in /tmp/screens/S-root.\n\n**Note:** similar to run command you can pass the *--frontend* option if\nyou want to launch a script in background on the SSH frontend.\n\n\n.. |PyPI| image:: https://badge.fury.io/py/iotlabsshcli.svg\n :target: https://badge.fury.io/py/iotlabsshcli\n :alt: PyPI package status\n\n.. |Travis| image:: https://travis-ci.org/iot-lab/ssh-cli-tools.svg?branch=master\n :target: https://travis-ci.org/iot-lab/ssh-cli-tools\n :alt: Travis build status\n\n.. |Codecov| image:: https://codecov.io/gh/iot-lab/ssh-cli-tools/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/iot-lab/ssh-cli-tools/branch/master\n :alt: Codecov coverage status",
"description_content_type": "",
"docs_url": null,
"download_url": "http://github.com/iot-lab/ssh-cli-tools/",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://www.iot-lab.info",
"keywords": "",
"license": "CeCILL v2.1",
"maintainer": "",
"maintainer_email": "",
"name": "iotlabsshcli",
"package_url": "https://pypi.org/project/iotlabsshcli/",
"platform": "",
"project_url": "https://pypi.org/project/iotlabsshcli/",
"project_urls": {
"Download": "http://github.com/iot-lab/ssh-cli-tools/",
"Homepage": "http://www.iot-lab.info"
},
"release_url": "https://pypi.org/project/iotlabsshcli/0.2.3/",
"requires_dist": null,
"requires_python": "",
"summary": "IoT-LAB testbed ssh command-line client",
"version": "0.2.3"
},
"last_serial": 3889204,
"releases": {
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "261af8b5c07a3f335a9e0e2894784cd4",
"sha256": "4be02f881a0edbe6ba62bf02b4d463ac09eb6d7ac78111899ec3e9524572d95c"
},
"downloads": -1,
"filename": "iotlabsshcli-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "261af8b5c07a3f335a9e0e2894784cd4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15494,
"upload_time": "2017-04-06T12:53:05",
"url": "https://files.pythonhosted.org/packages/a7/e3/a5e0f33564d2b495f1769002d27e9bfba7359280c67372b01308695b4c19/iotlabsshcli-0.1.0.tar.gz"
}
],
"0.1.0.post1": [
{
"comment_text": "",
"digests": {
"md5": "5b3a321bc1203297e0fb6283989a4e17",
"sha256": "d26b9080c8eda50d1ec3863cd9b54656e7cb6bb5c112862657dec0a7f846a12d"
},
"downloads": -1,
"filename": "iotlabsshcli-0.1.0.post1.tar.gz",
"has_sig": false,
"md5_digest": "5b3a321bc1203297e0fb6283989a4e17",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15505,
"upload_time": "2017-04-06T12:58:14",
"url": "https://files.pythonhosted.org/packages/7d/7e/7bb842db8b3b8bc08cf15c5a6adf0f898429080abfeed4c08188d65f6ac0/iotlabsshcli-0.1.0.post1.tar.gz"
}
],
"0.1.0.post2": [
{
"comment_text": "",
"digests": {
"md5": "682070cffa2c252ff2f9d7467fe3d3e5",
"sha256": "572b4125400ddceeda805ef59f980e8b8a9ea71d6553c7f9123f06c192157bb9"
},
"downloads": -1,
"filename": "iotlabsshcli-0.1.0.post2.tar.gz",
"has_sig": false,
"md5_digest": "682070cffa2c252ff2f9d7467fe3d3e5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15493,
"upload_time": "2017-04-06T13:23:37",
"url": "https://files.pythonhosted.org/packages/34/01/7c19c4cc4d988883a778d754981e951b3b68ed3a11e03be4bf93dae880c6/iotlabsshcli-0.1.0.post2.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "b17a8edad905e8f96d14b99c1d64aae1",
"sha256": "6cff41cdd35c89578060a0353570a5977175af833547e1cccc16d340f42f8ab5"
},
"downloads": -1,
"filename": "iotlabsshcli-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "b17a8edad905e8f96d14b99c1d64aae1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15578,
"upload_time": "2017-10-14T17:15:01",
"url": "https://files.pythonhosted.org/packages/ce/d6/3b0ad083868939e29e559d7fc273166b0bd83627c630ecc975b11b4fa092/iotlabsshcli-0.1.1.tar.gz"
}
],
"0.2.0": [
{
"comment_text": "",
"digests": {
"md5": "9cfb8fcb57e30c4660a89569e753cc95",
"sha256": "3022cbd291ab7b404ed231b6fb3c581cad4849dc91d997a811c8b4fc3f46849b"
},
"downloads": -1,
"filename": "iotlabsshcli-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "9cfb8fcb57e30c4660a89569e753cc95",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15692,
"upload_time": "2017-12-19T10:06:44",
"url": "https://files.pythonhosted.org/packages/e9/91/7fc0b92a48f4acae516a4372fe6bb50c3c3e5b788bcd0e5c90b898f0b072/iotlabsshcli-0.2.0.tar.gz"
}
],
"0.2.1": [
{
"comment_text": "",
"digests": {
"md5": "8afca76c8caf99c8efad56845d69e267",
"sha256": "c67f8bb21b1daf6f7f7064ff59ba870a29b310178f8b84a12c021f7c70c077fe"
},
"downloads": -1,
"filename": "iotlabsshcli-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "8afca76c8caf99c8efad56845d69e267",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15696,
"upload_time": "2018-04-01T18:31:24",
"url": "https://files.pythonhosted.org/packages/43/d8/208dbcc59e9697fb0e8249131f7ecbcf07e95fd7f634f5eb6826dad3b435/iotlabsshcli-0.2.1.tar.gz"
}
],
"0.2.2": [
{
"comment_text": "",
"digests": {
"md5": "79e841ecf12f378c2827463f7ce43b3c",
"sha256": "557614d5e09996baa187f70b3632eae3d69c2ad2fa50f693c242789ce053cd59"
},
"downloads": -1,
"filename": "iotlabsshcli-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "79e841ecf12f378c2827463f7ce43b3c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15899,
"upload_time": "2018-05-17T07:37:08",
"url": "https://files.pythonhosted.org/packages/6b/e0/8e464c7153ba943f3b14d1b4007ff61228fce9c260b0a66f3cca5e20d93f/iotlabsshcli-0.2.2.tar.gz"
}
],
"0.2.3": [
{
"comment_text": "",
"digests": {
"md5": "76914ec725d906674b860c91a239887b",
"sha256": "b9ded6ee5a6fefc6905c93b3d90a7d0335b293c25f7b67edea846ea035902369"
},
"downloads": -1,
"filename": "iotlabsshcli-0.2.3.tar.gz",
"has_sig": false,
"md5_digest": "76914ec725d906674b860c91a239887b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15908,
"upload_time": "2018-05-22T20:36:44",
"url": "https://files.pythonhosted.org/packages/f3/ac/fb09beae9730afd59247fed27197d0b5fd2894e3562d69c9316d2e285874/iotlabsshcli-0.2.3.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "76914ec725d906674b860c91a239887b",
"sha256": "b9ded6ee5a6fefc6905c93b3d90a7d0335b293c25f7b67edea846ea035902369"
},
"downloads": -1,
"filename": "iotlabsshcli-0.2.3.tar.gz",
"has_sig": false,
"md5_digest": "76914ec725d906674b860c91a239887b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15908,
"upload_time": "2018-05-22T20:36:44",
"url": "https://files.pythonhosted.org/packages/f3/ac/fb09beae9730afd59247fed27197d0b5fd2894e3562d69c9316d2e285874/iotlabsshcli-0.2.3.tar.gz"
}
]
}