# hpc-interact
Used for scripting file transfer (sftp) and sending commands (ssh) to hpc - a wrapper for `expect`
## Requires `expect`
If needed, install via:
```
$ sudo apt install expect
```
## Install
From PyPI:
```console
pip install hpc-interact
```
Or just clone the repo and use `hpc_interact.py` directly.
## Usage
Instantiate a Scripter object:
```python
>>> # Connect via sftp
>>> from hpc_interact import Scripter
>>> scripter = Scripter(config="./login_config", site='somewhere.uni.edu', mode='sftp')
>>> # NOTE: If "./login_config" doesn't exist, you'll be prompted to create it
```
Prepare any steps to undertake
```python
>>> outdir = "/Users/me/somedir"
>>> scripter.cwd("/some/remote/directory")
>>> for file in ["file1.txt","file2.txt"]:
... scripter.get(file,outdir)
```
### To see what steps you've added, run:
```
>>> scripter.preview_steps()
```
Output:
```console
Command preview:
(0, 'cd /some/remote/directory\n')
(1, 'mkdir /Users/me/somedir\n')
(2, 'cd /Users/me/somedir\n')
(3, 'put file1.txt \n\n')
(4, 'mkdir /Users/me/somedir\n')
(5, 'cd /Users/me/somedir\n')
(6, 'put file2.txt \n\n')
```
### To run:
```python
>>> scripter.run()
```
### Forgot something but don't want to create a new Scripter object?
```python
>>> scripter.clear()
>>> scripter.put("/Users/me/another-dir/cool_script.sh",outdir="/some/remote/directory",new_name="coolest_script_on_the_hpc.sh")
>>> scripter.run()
```
### Run a script on the cluster
```python
>>> # Connect via ssh
>>> from hpc_interact import cluster.Scripter
>>> scripter = Scripter(config="./login_config", site='somewhere.uni.edu', mode='ssh')
>>>
>>> # run it
>>> scripter.basic_step("bash","/some/remote/directory/coolest_script_on_the_hpc.sh")
>>> scripter.run()
```
### Started as ssh but want need to transfer files?
```python
>>> scripter.reset_mode("sftp")
>>> add_some_steps(scripter)
>>> scripter.run()
```
Raw data
{
"_id": null,
"home_page": "https://github.com/enviro-lab/hpc-interact.git",
"name": "hpc-interact",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8,<4.0",
"maintainer_email": "",
"keywords": "upload,download,sftp,ssh,expect,file transfer",
"author": "Sam Kunkleman",
"author_email": "skunklem@uncc.edu",
"download_url": "https://files.pythonhosted.org/packages/91/09/9c224ae40f5f541b2ecf2bddc9337f96957e4ab4aecf49ef92071035684d/hpc_interact-0.1.1.tar.gz",
"platform": null,
"description": "# hpc-interact\nUsed for scripting file transfer (sftp) and sending commands (ssh) to hpc - a wrapper for `expect`\n\n## Requires `expect`\nIf needed, install via:\n```\n$ sudo apt install expect\n```\n\n## Install\nFrom PyPI:\n```console\npip install hpc-interact\n```\n\nOr just clone the repo and use `hpc_interact.py` directly.\n\n## Usage\nInstantiate a Scripter object:\n```python\n>>> # Connect via sftp\n>>> from hpc_interact import Scripter\n>>> scripter = Scripter(config=\"./login_config\", site='somewhere.uni.edu', mode='sftp')\n>>> # NOTE: If \"./login_config\" doesn't exist, you'll be prompted to create it\n```\n\nPrepare any steps to undertake\n```python\n>>> outdir = \"/Users/me/somedir\"\n>>> scripter.cwd(\"/some/remote/directory\")\n>>> for file in [\"file1.txt\",\"file2.txt\"]:\n... scripter.get(file,outdir)\n```\n\n### To see what steps you've added, run:\n```\n>>> scripter.preview_steps()\n```\nOutput:\n```console\n\nCommand preview:\n(0, 'cd /some/remote/directory\\n')\n(1, 'mkdir /Users/me/somedir\\n')\n(2, 'cd /Users/me/somedir\\n')\n(3, 'put file1.txt \\n\\n')\n(4, 'mkdir /Users/me/somedir\\n')\n(5, 'cd /Users/me/somedir\\n')\n(6, 'put file2.txt \\n\\n')\n```\n\n### To run:\n```python\n>>> scripter.run()\n```\n\n### Forgot something but don't want to create a new Scripter object?\n```python\n>>> scripter.clear()\n>>> scripter.put(\"/Users/me/another-dir/cool_script.sh\",outdir=\"/some/remote/directory\",new_name=\"coolest_script_on_the_hpc.sh\")\n>>> scripter.run()\n```\n\n### Run a script on the cluster\n```python\n>>> # Connect via ssh\n>>> from hpc_interact import cluster.Scripter\n>>> scripter = Scripter(config=\"./login_config\", site='somewhere.uni.edu', mode='ssh')\n>>> \n>>> # run it\n>>> scripter.basic_step(\"bash\",\"/some/remote/directory/coolest_script_on_the_hpc.sh\")\n>>> scripter.run()\n```\n\n### Started as ssh but want need to transfer files?\n```python\n>>> scripter.reset_mode(\"sftp\")\n>>> add_some_steps(scripter)\n>>> scripter.run()\n```",
"bugtrack_url": null,
"license": "MIT",
"summary": "Used for file transfer and sending predefined commands to an hpc cluster",
"version": "0.1.1",
"split_keywords": [
"upload",
"download",
"sftp",
"ssh",
"expect",
"file transfer"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "aa095c483d4accc32cccddf521ae05a8a08fda4329909ab612e85211dd95b355",
"md5": "847087239e19f350054ffaa45ba67c0c",
"sha256": "87143a371871fb31259527474e6c6eb3b2669b86df2882733f29aeacaa927522"
},
"downloads": -1,
"filename": "hpc_interact-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "847087239e19f350054ffaa45ba67c0c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8,<4.0",
"size": 8806,
"upload_time": "2023-03-17T21:20:24",
"upload_time_iso_8601": "2023-03-17T21:20:24.758752Z",
"url": "https://files.pythonhosted.org/packages/aa/09/5c483d4accc32cccddf521ae05a8a08fda4329909ab612e85211dd95b355/hpc_interact-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "91099c224ae40f5f541b2ecf2bddc9337f96957e4ab4aecf49ef92071035684d",
"md5": "24734e4704a08c5e1deca3d9552990f2",
"sha256": "c9f20161d826badb0f59b8517412d851cc0432b687f03066eab88f75bf6e9dab"
},
"downloads": -1,
"filename": "hpc_interact-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "24734e4704a08c5e1deca3d9552990f2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8,<4.0",
"size": 8139,
"upload_time": "2023-03-17T21:20:26",
"upload_time_iso_8601": "2023-03-17T21:20:26.830105Z",
"url": "https://files.pythonhosted.org/packages/91/09/9c224ae40f5f541b2ecf2bddc9337f96957e4ab4aecf49ef92071035684d/hpc_interact-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-17 21:20:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "enviro-lab",
"github_project": "hpc-interact.git",
"lcname": "hpc-interact"
}