Metadata-Version: 2.1
Name: send_ip
Version: 0.0.9
Summary: python package to send its own IP to another machine through ssh
Home-page: https://github.com/matiasandina/send_ip
Author: Matias Andina
Author-email: Matias Andina <matiasandina@gmail.com>
License: MIT License
Project-URL: Homepage, https://github.com/matiasandina/send_ip
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PyYAML >=5.3.1
Requires-Dist: paramiko >=2.6.0
Requires-Dist: python-crontab >=0.23.0
Requires-Dist: py-console
Requires-Dist: scp
Provides-Extra: dev
Requires-Dist: twine ; extra == 'dev'
Requires-Dist: check-manifest ; extra == 'dev'
Requires-Dist: PyYAML ==5.3.1 ; extra == 'dev'
Requires-Dist: paramiko ==2.6.0 ; extra == 'dev'

# Send IP

Python software to configure machines for sending their IP through ssh.

## Installation

You are advised to create a virtual environment for this program:

```
conda create -n "send_ip_env" 
conda activate send_ip_end
```

Run the following to install:

```python
pip3 install send_ip
```

Running from a virtual environment will affect the python path that you supply to `config.yaml`. See information in [Usage](#usage) section.

## Usage

1. Edit the `config.yaml` file to match your destination. These fields will be used to `scp` into the target machine (`user@ip:port` using password `pass` to login).

```yaml
user: target-user
ip: ip-address
pass: target-password
port: target-port #default port is usually 22 
remote-path: target-folder # this folder will be created under /home/user might create errors for not linux users
refresh-freq: 15 # minutes for cron-job
python_path: /path/to/virtualenv/bin/python3 # the python path you supply here will affect where the code runs (e.g., /usr/bin/python3), see docs! 

```
2. Use the pacakge functions, for example:

```
from send_ip.send_ip import *

info_file = create_info()
send_info(info_file)
```

You can save this into a `send_ip_script.py` and schedule this task to run automatically (see below)

## Schedule task

### Cron

You can setup `send_ip_script.py` to run on a schedule (e.g., every 15 minutes). For example, this is the configuration for a raspberry pi (`pi`) sending its IP to another machine (`matias`) using `config.yaml`.

```
from send_ip.setup_cron import setup_cron
setup_cron("/home/pi/send_ip/send_ip_script.py",15)
Current cron tab (same as $ crontab -l)
--------------------------------------

*/15 * * * * cd python3 /home/pi/send_ip/ && /home/pi/send_ip/send_ip_script.py # send ip to matias

```


### Windows machines

Please refer to [this example](https://stackoverflow.com/a/59079452/3215940) and file issues if having trouble.

## For developers of `send_ip`

To install `send_ip` and tools needed for tests, you can install into a virtualenvironment like so:

```bash
pip install -e .[dev]
```
## Known issues

For a Raspberry pi installation, you might face this issue:

```
          =============================DEBUG ASSISTANCE=============================
          If you are seeing a compilation error please try the following steps to
          successfully install bcrypt:
          1) Upgrade to the latest pip and try again. This will fix errors for most
             users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip
          2) Ensure you have a recent Rust toolchain installed. bcrypt requires
             rustc >= 1.56.0.
      
          Python: 3.9.2
          platform: Linux-5.15.56-v7l+-armv7l-with-glibc2.31
          pip: n/a
          setuptools: 65.5.0
          setuptools_rust: 1.5.2
          rustc: n/a
          =============================DEBUG ASSISTANCE=============================
      

```

You might need:

```
sudo apt-get install build-essential cargo
```

You can also refer to this info in [bcrypt](https://pypi.org/project/bcrypt/).

You might also need to install or upgrade `rustc`

```
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```

**Don't forget to restart your shell after installation of rust!!**
