Skip to main content

Sync Chromebook MAC addresses from your GSuite into Cisco ISE

Project description

# GSuite_Sync
Sync MAC addresses from your GSuite into Cisco ISE

[![Build Status](https://travis-ci.org/PackeTsar/gsuite_sync.svg?branch=master)](https://travis-ci.org/PackeTsar/gsuite_sync)




-----------------------------------------
# INSTALL PROCESS ###
To set up gsync as a service on Linux, follow the below process


### Prep the Linux OS with Python
1. Install required OS packages for Python
- **Raspberry Pi** may need Python and PIP `sudo apt install -y python-pip` as well as `sudo apt-get install libffi-dev`
- **Debian (Ubuntu)** distributions may need Python and PIP
- Install Python and PIP: `sudo apt install -y python-pip`
- **RHEL (CentOS)** distributions usually need PIP
- Install the EPEL package: `sudo yum install -y epel-release`
- Install PIP: `sudo yum install -y python-pip`


### Install GSync from source
1. Retrieve the source code repository using one of the two below methods
- **Method #1**: Install a Git client (process differs depending on OS) and clone the GSuite_Sync repository using Git `git clone https://github.com/PackeTsar/gsuite_sync.git`
- Change to the branch you want to install using `git checkout <branch_name>`
- **Method #2**: Download and extract the repository files from the [Github Repo](https://github.com/PackeTsar/gsuite_sync)
- Make sure to download the branch you want to install
2. Move into the gsuite_sync project directory `cd gsuite_sync`
3. Run the setup.py file to build the package into the ./build/ directory `python setup.py build`
4. Use PIP to install the package `pip install .`
5. Once the install completes, you should be able to run the command `gsync -h` and see the help menu. GSync is now ready to use.


### Help Output
```
usage: gsync [-h] [-v] [-gc CREDENTIAL_FILE] [-gm REGEX] [-ia IP/ADDRESS]
[-iu USERNAME] [-ip PASSWORD] [-ig GROUP_NAME] [-c CONFIG_FILE]
[-l LOG_FILE] [-d] [-fs] [-um MAC_ADDRESS] [-us SERIAL_NUMBER]
[-m]

GSuite_Sync - Sync Chromebook MAC addresses from your GSuite into Cisco ISE

Misc Arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit

Required Arguments:
-gc CREDENTIAL_FILE, --gsuite_credential CREDENTIAL_FILE
GSuite Credential File
-ia IP/ADDRESS, --ise_address IP/ADDRESS
ISE DNS or IP Address
-iu USERNAME, --ise_username USERNAME
ISE Login Username
-ip PASSWORD, --ise_password PASSWORD
ISE Login Password
-ig GROUP_NAME, --ise_group GROUP_NAME
ISE Target Endpoint Group

Optional Arguments:
-gm REGEX, --gsuite_path_match REGEX
GSuite Object Path Match Pattern
-c CONFIG_FILE, --config_file CONFIG_FILE
Config File Path
-l LOG_FILE, --logfiles LOG_FILE
Log File Path
-d, --debug Set debug level (WARNING by default)
Debug level INFO: '-d'
Debug level DEBUG: '-d'

Action Arguments:
-fs, --full_sync Perform full sync of GSuite MACs to ISE Group
-um MAC_ADDRESS, --update_mac MAC_ADDRESS
Push an individual MAC to the ISE Group
-us SERIAL_NUMBER, --update_serial SERIAL_NUMBER
Lookup a device's MAC and update it in the ISE Group
-m, --maintain maintain pushing devices
```

### Example Config Files
Arguments can be passed in at the command line or with a config file. It is often easier to use a config file and that is what we will do for setting up the service. The `/root/credentials.json` file referenced is an API credential file for your GSuite account.

#### Example Config File (/root/config.json)
```json
{
"gsuite_credential": "/root/credentials.json",
"gsuite_path_match": "SOMEREGEXPATHMATCH",
"ise_address": "192.168.1.100",
"ise_username": "admin",
"ise_password": "admin123",
"ise_group": "my_special_group",
"logfiles": ["/etc/gsync/logs.log"]
}
```

### Create the Service File

Use VI to create a new file (`vi /etc/init.d/gsync`) and insert the below BASH script for the file contents

```sh
#!/bin/bash
# gsync daemon
# chkconfig: 345 20 80
# description: gsync Daemon
# processname: gsync

DAEMON_PATH="/bin/"

DAEMON=gsync
STDOUTFILE=/etc/gsync/stdout.log
STDERR=/etc/gsync/stderr.log

NAME=gsync
DESC="gsync Daemon"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

case "$1" in
start)
printf "%-50s" "Starting $NAME..."
cd $DAEMON_PATH
PID=`stdbuf -o0 $DAEMON -c /root/config.json -m >> $STDOUTFILE 2>>$STDERR & echo $!`
#echo "Saving PID" $PID " to " $PIDFILE
if [ -z $PID ]; then
printf "%s
" "Fail"
else
echo $PID > $PIDFILE
printf "%s
" "Ok"
fi
;;
status)
if [ -f $PIDFILE ]; then
PID=`cat $PIDFILE`
if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
printf "%s
" "Process dead but pidfile exists"
else
echo "$DAEMON (pid $PID) is running..."
fi
else
printf "%s
" "$DAEMON is stopped"
fi
;;
stop)
printf "%-50s" "Stopping $NAME"
PID=`cat $PIDFILE`
cd $DAEMON_PATH
if [ -f $PIDFILE ]; then
kill -HUP $PID
printf "%s
" "Ok"
rm -f $PIDFILE
else
printf "%s
" "pidfile not found"
fi
;;

restart)
$0 stop
$0 start
;;

*)
echo "Usage: $0 {status|start|stop|restart}"
exit 1
esac

```



### Finish and Start Up Service
```
chmod 777 /etc/init.d/gsync
chkconfig gsync on
service gsync start
service gsync status
```


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gsuite_sync-0.0.5.tar.gz (13.4 kB view details)

Uploaded Source

Built Distributions

gsuite_sync-0.0.5-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

gsuite_sync-0.0.5-py2-none-any.whl (12.7 kB view details)

Uploaded Python 2

File details

Details for the file gsuite_sync-0.0.5.tar.gz.

File metadata

  • Download URL: gsuite_sync-0.0.5.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/2.7.15

File hashes

Hashes for gsuite_sync-0.0.5.tar.gz
Algorithm Hash digest
SHA256 a150374c05e3f14648b625376acc9bcfbf98597ebfc3d6e3dda0992a44920b57
MD5 4f47a5125b152c94bd03c588283f7ba0
BLAKE2b-256 fd939d196c2b4b78583375cfc0146aada3442a94b0d1d5a48937a79d37dfb211

See more details on using hashes here.

Provenance

File details

Details for the file gsuite_sync-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: gsuite_sync-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/2.7.15

File hashes

Hashes for gsuite_sync-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 3d7c60204efeed8eb4b69adf116f52aee3971970867bf9fe840078fea3b239f8
MD5 c3e400ffced36a90959c2c86c26b49a3
BLAKE2b-256 8ce8df8d2c7b4e23aa22191aa5b19f5ba0d5edf93aa9349cb84b667f3a3d9bf4

See more details on using hashes here.

Provenance

File details

Details for the file gsuite_sync-0.0.5-py2-none-any.whl.

File metadata

  • Download URL: gsuite_sync-0.0.5-py2-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/2.7.15

File hashes

Hashes for gsuite_sync-0.0.5-py2-none-any.whl
Algorithm Hash digest
SHA256 895975b4075003655f220c4c61445317f2cb852da7ce849d8ae2f72539b22e76
MD5 959fbb78019a9870b24160071894b164
BLAKE2b-256 0dc3d70a77dd1b1624a35f8d5ff14bda09da25821b620b1e74684c12597c9815

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page