Skip to content

Instantly share code, notes, and snippets.

View eeichinger's full-sized avatar

Erich Eichinger eeichinger

View GitHub Profile
eeichinger / Makefile
Created April 3, 2019 10:12
Makefile 'init' target for setting up a virtual python environment (using pyenv)
View Makefile
# automatically initialise a local python env
# requires:
# - pyenv installed (see
# - ./requirements.txt to manage dependencies via pip
all: init
.PHONY: clean
# from
# write_base64_file_from_file
# write_file_from_base64_file
# - must run with python 2.7
# - must process data in chunks to limit memory consumption
# - base64 data must be JSON compatible, i.e.
# use base64 "modern" interface,
# not base64.encodestring() which contains linefeeds
eeichinger /
Last active December 27, 2023 10:12
Generate a script to clone all repos within a specific project from bitbucket server and bitbucket cloud
# generate a script ./ from a list of repos fetched via Bitbucket API
# note: requires 'curl' and 'jq' to be installed
set -e
echo -n '' >
chmod +x

Keybase proof

I hereby claim:

  • I am eeichinger on github.
  • I am eeichinger ( on keybase.
  • I have a public key ASDxtzTW3lx3A2x-vRF-8yIANoqhSNzFcuSP2Hc6Ok9xuwo

To claim this, I am signing this object:

eeichinger /
Created May 1, 2017 11:32
AWS CLI utilities to hook into e.g. ~/.profile
# it's inconvenient to pollute knownhosts with temporary AWS EC2 instances - use aws_ssh instead of ssh to ssh into EC2 instances
alias aws_ssh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
# This function allows to easily switch between AWS CLI profiles. If necessary, it will assume the given role
# usage:
# set-aws-profile rolename[@accountname]
# "rolename": the profilename as defined in your ~/.aws/config
eeichinger /
Last active March 1, 2023 20:35
script to clone all repositories in a bitbucket server (aka stash) project
# this script uses syntax for bitbucket server.
# For bitbucket cloud see
# Note: replace username, password and PROJECTNAME with your values
# jq syntax helpful links:
eeichinger /
Created April 19, 2017 17:37
Various ways to resolve a script path in bash
#!/usr/bin/env bash
# For my own reference in the future demo's various ways to resolve a script's full qualified path
# Usage: copy this file to /tmp/ and run it from root
# Note: this script uses the 'realpath' utility - to get this on OSX, you need to install 'brew install coreutils'
if [ -z "${doit+x}" ]; then # for if [exists $var] technique, see
scriptfilereal=$(realpath -P "$0")
eeichinger / jenkins-decrypt.groovy
Created October 19, 2016 19:36 — forked from tuxfight3r/jenkins-decrypt.groovy
Decrypting Jenkins Password
View jenkins-decrypt.groovy
#To Decrypt Jenkins Password from credentials.xml
#go to the jenkins url
#In the console paste the script
eeichinger /
Last active October 7, 2016 08:44
experiment testing Apache HttpAsyncClient HttpCache behaviour
package de.porsche.pcc.instrumentation;
import com.github.tomakehurst.wiremock.client.WireMock;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpException;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.HttpResponseInterceptor;
eeichinger /
Created September 24, 2016 11:17
typed Observable.zipN for input observables of same type
static <R, T> Observable<R> zip(Iterable<? extends Observable<T>> ws, Func1<List<T>, ? extends R> zipFunction) {
FuncN<R> funcN = (Object[] array) -> {
List<T> l = new ArrayList<T>();
for (Object o : array) {
l.add((T) o);