Skip to content

Instantly share code, notes, and snippets.

🍌
I'm a banana.

Brian Hatfield bmhatfield

🍌
I'm a banana.
Block or report user

Report or block bmhatfield

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View GPG.md

How to use GPG/PGP to share passwords

Sometimes we need to transmit passwords over unsecured channels, like Slack or email. There are lots of password managers, but their password sharing functionality is less robust than I like. For example, 1Password lets you share passwords, but to do so you must share your entire keychain - which is not useful.

To solve this, we can use public/private keys to transmit messages over any channel, that can only be decrypted by the end user. This is stuff of the future! It seems like it would be complicated, but common use cases are very easy to set up and use!

Setup

@bmhatfield
bmhatfield / .zshrc
Last active Oct 4, 2019
OSX Keychain Environment Variables
View .zshrc
# If you use bash, this technique isn't really zsh specific. Adapt as needed.
source ~/keychain-environment-variables.sh
# AWS configuration example, after doing:
# $ set-keychain-environment-variable AWS_ACCESS_KEY_ID
# provide: "AKIAYOURACCESSKEY"
# $ set-keychain-environment-variable AWS_SECRET_ACCESS_KEY
# provide: "j1/yoursupersecret/password"
export AWS_ACCESS_KEY_ID=$(keychain-environment-variable AWS_ACCESS_KEY_ID);
export AWS_SECRET_ACCESS_KEY=$(keychain-environment-variable AWS_SECRET_ACCESS_KEY);
@bmhatfield
bmhatfield / check-recent-oom
Created Apr 16, 2016
A simple, time-based OOM check script for use with riemann-sumd
View check-recent-oom
#!/bin/bash
# Run on a minutely basis by https://github.com/bmhatfield/riemann-sumd/
LAST_OOM_WINDOW=5;
LAST_OOM="$(grep 'Out of memory' /var/log/kern.log | tail -n 1)";
LAST_OOM_TIME=${LAST_OOM:0:15};
if [ -n "${LAST_OOM_TIME}" ]; then
if [ $(($((`date +%s` - `date --date="${LAST_OOM_TIME}" +%s`)) / 60 )) -le ${LAST_OOM_WINDOW} ]; then
echo "CRITICAL: OOM within last ${LAST_OOM_WINDOW} minutes!"
echo ${LAST_OOM}
@bmhatfield
bmhatfield / .profile
Last active Oct 12, 2019
Automatic Git commit signing with GPG on OSX
View .profile
# In order for gpg to find gpg-agent, gpg-agent must be running, and there must be an env
# variable pointing GPG to the gpg-agent socket. This little script, which must be sourced
# in your shell's init script (ie, .bash_profile, .zshrc, whatever), will either start
# gpg-agent or set up the GPG_AGENT_INFO variable if it's already running.
# Add the following to your shell init to set up gpg-agent automatically for every shell
if [ -f ~/.gnupg/.gpg-agent-info ] && [ -n "$(pgrep gpg-agent)" ]; then
source ~/.gnupg/.gpg-agent-info
export GPG_AGENT_INFO
else
@bmhatfield
bmhatfield / local_databag.rb
Created Mar 29, 2016
Encrypt, Edit and key-rotate databags.
View local_databag.rb
require 'chef/knife'
module LocalDatabags
class Encrypt < Chef::Knife
deps do
require 'chef/encrypted_data_bag_item'
end
banner "knife encrypt BAGNAME ITEM KEYFILE"
@bmhatfield
bmhatfield / ec2-security-group-rules
Created Mar 9, 2016
Output a human-readable & colorized view of your EC2 security group rules
View ec2-security-group-rules
#!/usr/bin/env ruby
require 'aws-sdk'
require 'colorize'
ec2 = Aws::EC2::Resource.new
ec2.security_groups.sort_by{|s| s.group_name }.each do |sg|
puts sg.group_name.underline unless sg.ip_permissions.empty?
sg.ip_permissions.each do |perm|
View gist:e49022dbea8013c3cef4
module StubbedSearch
def stubbed_search(index, query, stub)
# When running in the 'local' environment, dynamically set the hostname
# value for the search_stub to the hostname of the running VM
if node.chef_environment == 'local'
node.normal[:search_stub][stub] = node[:search_stub][stub].map do |n|
hsh = n.to_hash
hsh[:hostname] = node[:hostname]
hsh
end
View keybase.md

Keybase proof

I hereby claim:

  • I am bmhatfield on github.
  • I am brianhatfield (https://keybase.io/brianhatfield) on keybase.
  • I have a public key whose fingerprint is 2DF5 8084 BCAC BB25 AA51 9650 FFD6 0508 E5D9 0536

To claim this, I am signing this object:

@bmhatfield
bmhatfield / gist:8600671
Created Jan 24, 2014
Working Ohai Plugin
View gist:8600671
require_plugin "#{os}::network"
provides 'ipaddress'
if virtualization['system'] == 'vbox'
network['interfaces']['eth1']['addresses'].each do |ip, params|
if params['family'] == 'inet'
ipaddress ip
end
end
View gist:6003399
var fields map[string]interface{} = make(map[string]interface{})
func main() {
fields["device"] = json.RawMessage(`{"OMG": 13}`)
jsn, err := json.Marshal(fields)
if err == nil {
fmt.Println(string(jsn))
} else {
You can’t perform that action at this time.