Skip to content

Instantly share code, notes, and snippets.

@noahlt
Created May 17, 2016 23:34
Show Gist options
  • Save noahlt/088202f8c2a3574c30b34cc08689d6a4 to your computer and use it in GitHub Desktop.
Save noahlt/088202f8c2a3574c30b34cc08689d6a4 to your computer and use it in GitHub Desktop.
Using environment variables from remote servers
#!/usr/bin/env bash
# A couple of handy bash functions that I have in my .bashrc:
# get_env uses ssh to copy an environment variable from a remote
# server to your current machine. Example usage:
#
# get_env SOME_VAR_NAME example.com
get_env () {
VARNAME=$1
SOURCE_SERVER=$2
eval $(ssh $SOURCE_SERVER "env | grep '^$VARNAME='" | sed 's/.*/export &/')
}
# copy_env uses ssh to copy an environment variable from a remote
# server to the /etc/environment file on a different remote server.
# Example usage:
#
# copy_env SOME_VAR_NAME source.example.com target.example.com
copy_env () {
VARNAME=$1
SOURCE_SERVER=$2
TARGET_SERVER=$3
if [ -z $(ssh $TARGET_SERVER "env | grep '^$VARNAME'") ]
then
echo Copying $VARNAME from $SOURCE_SERVER to $TARGET_SERVER
VAR=$(ssh $SOURCE_SERVER "env | grep '^$VARNAME='")
ssh $TARGET_SERVER "echo $VAR | sudo tee -a /etc/environment"
else
echo $VARNAME already exists on $TARGET_SERVER, skipping
fi
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment