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
```
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
Release history Release notifications | RSS feed
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)
Built Distributions
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a150374c05e3f14648b625376acc9bcfbf98597ebfc3d6e3dda0992a44920b57 |
|
MD5 | 4f47a5125b152c94bd03c588283f7ba0 |
|
BLAKE2b-256 | fd939d196c2b4b78583375cfc0146aada3442a94b0d1d5a48937a79d37dfb211 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d7c60204efeed8eb4b69adf116f52aee3971970867bf9fe840078fea3b239f8 |
|
MD5 | c3e400ffced36a90959c2c86c26b49a3 |
|
BLAKE2b-256 | 8ce8df8d2c7b4e23aa22191aa5b19f5ba0d5edf93aa9349cb84b667f3a3d9bf4 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 895975b4075003655f220c4c61445317f2cb852da7ce849d8ae2f72539b22e76 |
|
MD5 | 959fbb78019a9870b24160071894b164 |
|
BLAKE2b-256 | 0dc3d70a77dd1b1624a35f8d5ff14bda09da25821b620b1e74684c12597c9815 |