Created
May 17, 2016 23:34
-
-
Save noahlt/088202f8c2a3574c30b34cc08689d6a4 to your computer and use it in GitHub Desktop.
Using environment variables from remote servers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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