View coinmarketcap-parse.sh
#!/bin/bash
get_data() {
# if the parameter is a local file just cat it (for testing) otherwise try curl
{ test -r "$1" && cat "$1" || curl -s "$1"; } | \
jq --raw-output \
'.[] | "\(.symbol | ascii_downcase) \(.price_usd)"'
}
process() {
View git-bare-repo-commands.sh
## setting up a personal git repository that you can push change sets to
## ssh-host: a host defined in ~/.ssh/config (see: ssh_config(5))
## camaro: the name of the repo
# on a remote host or local filesystem:
git init --bare camaro.git # (option: use --shared if there are other contributors)
# on local host cd to camaro directory:
git remote add origin ssh-host:[path/]camaro.git
# (for origin on local filesystem: git remote add origin file:///media/volume-name/camaro.git)
View jq-snippets.sh
# convert `key=value` lines into `{"key":"value"}` json
jq --raw-input 'split("=") | {(.[0]):.[1]}' some.conf | jq --slurp 'add'
View prvate-ip.pl
#!/usr/bin/perl -w
use Net::CIDR;
use Getopt::Long;
# Net::CIDR one liner:
# perl -mNet::CIDR -ne 'print if Net::CIDR::cidrlookup($_, ("10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"))'
#
# TODO: add ip address validation
View docker-snippets.sh
# Use awk to to redirect docker build output to stderr for visual feedback
# while capturing the image id on stdout when the build is sucessfull
ID=$(docker build . | awk '{print > "/dev/stderr"} END {if (/^Successfully built /) print $NF; else exit 1}')
# given docker volume path, return local storage path
doc2loc(){ docker inspect --format "{{range .Mounts}}{{if eq .Destination \"$1\"}}{{.Source}}{{end}}{{end}}" $2;}
View docker-rmi-interactive.sh
#!/bin/bash
agree() {
local question="$1"
while true; do
read -p "$question " answer
case $answer in
[Yy]|[Yy][Ee][Ss]) return 0 ;;
[Nn]|[Nn][Oo]|'') return 1 ;; # empty string is default
View ontouchdo
#!/bin/sh
# sample usage:
# ontouchdo malformed.html 'clear; xmllint --noout --valid malformed.html 2>&1 | head -n20'
#
# Now fix some things in malformed.html and save. See the remaining errors in real time. Ctrl-c to quit.
[ ! -r "$1" ] && echo 'Nothing to watch.' && exit 1
[ ! -n "$2" ] && echo 'Nothing to do.' && exit 1
View opendkim.md

configuring opendkim with postfix on ubuntu

Replace example.com with your domain. All occurrences of the string 'mail' are know as the selector and can be any alpha numeric string.

Install opendkim:

$ sudo apt-get install opendkim opendkim-tools
View group-dupes.pl
#!/usr/bin/perl -w
use Getopt::Long;
use Digest::MD5;
#use diagnostics;
BEGIN {
my $help;
my $xml;
our $minimum = 0;
View stop-watch.sh
#!/bin/bash
START=$(date +%s)
read -s -n1 -p $'Press a key when done.\n'
ELAPSED_SECONDS=$(bc <<< "scale=10; ($(date +%s) - $START)")
if [ $ELAPSED_SECONDS -gt 60 ]; then
ELAPSED_MINUTES=$((ELAPSED_SECONDS / 60))
ELAPSED_SECONDS=$((ELAPSED_SECONDS - ELAPSED_MINUTES * 60))
echo -n "$ELAPSED_MINUTES minutes "
fi