GSuite_Sync
Sync MAC addresses from your GSuite into Cisco ISE
INSTALL PROCESS
To set up gsync as a service on Linux, follow the below process
Prep the Linux OS with Python3
- Install required OS packages for Python
- Raspberry Pi may need Python and PIP
sudo apt install -y python-pipas well assudo apt-get install libffi-dev - Debian (Ubuntu) distributions may need Python and PIP
- Install Python and PIP:
sudo apt install -y python-pip
- Install Python and PIP:
- RHEL (CentOS) distributions usually need PIP
- Install the EPEL package:
sudo yum install -y epel-release - Install PIP:
sudo yum install -y python36-pip - Back up the old Python2 binary:
mv /usr/bin/python /usr/bin/python-old - Make Python3 the default binary:
sudo ln -fs /usr/bin/python36 /usr/bin/python
- Install the EPEL package:
Install GSync from PyPi
- Install using PIP:
pip install gsuite_sync
Install GSync from source
- 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>
- Change to the branch you want to install using
- Method #2: Download and extract the repository files from the Github Repo
- Make sure to download the branch you want to install
- Move into the gsuite_sync project directory
cd gsuite_sync - Run the setup.py file to build the package into the ./build/ directory
python setup.py build - Use PIP to install the package
pip install . - Once the install completes, you should be able to run the command
gsync -hand 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)
{
"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
#!/bin/bash
# gsync daemon
# chkconfig: 345 20 80
# description: gsync Daemon
# processname: gsync
DAEMON_PATH="/usr/local/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
Metadata
Release files for gsuite-sync 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| gsuite_sync-0.2.1.tar.gz | 27.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gsuite_sync-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 53.7 kB
Release files / gsuite_sync-0.2.1.tar.gz
| Download URL | gsuite_sync-0.2.1.tar.gz |
|---|---|
| Size | 27.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5454e13009e97efa63b902446effe0deb00a13eb2cd453c6136908c90c00d541
|
|
BLAKE2b-256 checksum How to use checksums |
0e674d6d8ad4fec40718ebf953ed39f518ebf9c6eb7b432333d0cec604d9807d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.9.1
|
Release files / gsuite_sync-0.2.1-py3-none-any.whl
| Download URL | gsuite_sync-0.2.1-py3-none-any.whl |
|---|---|
| Size | 26.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1333153e299ba08277eece6641d6f258dafc48c9a986add7f690525825d46df1
|
|
BLAKE2b-256 checksum How to use checksums |
870a632b6b87969bf70fc19a73dd01ecb076e024767ad84dc8ba683888df4719
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.9.1
|
Security for gsuite-sync 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.