Skip to content

Instantly share code, notes, and snippets.

@bofm
bofm / netcat.sh
Last active June 23, 2016 12:07
Netcat secure file transfer on OS X
# receive
nc -l 0.0.0.0 1234 | openssl aes-256-cbc -salt -d | pv | tar vx -
# send
tar -c <file or dir> | openssl aes-256-cbc -salt -e | nc -w 3 <host> 1234
@bofm
bofm / myinit.sh
Last active June 10, 2016 22:29
Tiny init script in plain shell. Suitable for Docker. Handles signals and forwards them to the child processes for a clean shutdown.
#!/usr/bin/env sh
# Define your services here. One line per service.
services='
php-fpm -F
nginx -g "daemon off;"
'
pids=""
die(){ [ -n "$pids" ] && kill $pids 2>/dev/null; wait $pids; }
@bofm
bofm / copy_key.py
Last active May 18, 2016 13:43
Copy item from one dict to another supporting subdicts access using dots in keys
from functools import reduce
from contextlib import suppress
def copy_key(src_dict, dst_dict, src_key, dst_key):
_s, _d = src_dict, dst_dict
with suppress(KeyError):
if '.' in dst_key:
*subkeys, dst_key = dst_key.split('.')
dst_dict = reduce(lambda x, y: x.setdefault(y, {}), subkeys, dst_dict)
@bofm
bofm / merge.py
Last active May 18, 2016 08:54
Python merge records (lists of dicts) by key
def merge_records_by_key(dicts1, dicts2, key):
"""Updates each dict1 containing key `key` from `dicts1`
with the corresponding dict2 from `dicts2` having
dict1[key] == dict2[key].
"""
if len(dicts1) > len(dicts2):
probe, build = dicts1, dicts2
hashmap = {d[key]: d for d in build if key in d}
@bofm
bofm / escape_xml.py
Last active July 30, 2019 22:22
Escape invalid XML characters in Python 3
#!/usr/bin/env python3
import sys
import re
# https://trac-hacks.org/ticket/11050#comment:13
_illegal_unichrs = ((0x00, 0x08), (0x0B, 0x1F), (0x7F, 0x84), (0x86, 0x9F),
(0xD800, 0xDFFF), (0xFDD0, 0xFDDF), (0xFFFE, 0xFFFF),
(0x1FFFE, 0x1FFFF), (0x2FFFE, 0x2FFFF),
(0x3FFFE, 0x3FFFF), (0x4FFFE, 0x4FFFF),
@bofm
bofm / python_diff.py
Last active May 5, 2016 09:23
Simple function to print diff of two strings
import subprocess
def diff(one, two):
with tempfile.TemporaryDirectory() as tmpdir:
f1, f2 = ('%s/%s' % (tmpdir, n) for n in (1,2))
for f, txt in zip((f1, f2), (one, two)):
with open(f, 'w') as f:
f.write(str(txt))
cmd = ('diff -w %s %s' % (f1, f2)).split()
@bofm
bofm / docker_cleanup
Last active November 19, 2015 10:57
Docker cleanup
#!/usr/bin/env bash
docker rm $(docker ps -aq -f status=exited)
docker rmi $(docker images --quiet --filter "dangling=true")
@bofm
bofm / docker_du.sh
Created November 6, 2015 14:57
Shows disk space usage of Docker containers.
#!/usr/bin/env bash
for d in `docker ps -aq`; do
d_name=`docker inspect -f {{.Name}} $d`
echo "========================================================="
echo "$d_name ($d) container size:"
sudo du -d 2 -h /var/lib/docker/aufs | grep `docker inspect -f "{{.Id}}" $d`
echo "$d_name ($d) volumes:"
for mount in `docker inspect -f "{{range .Mounts}} {{.Source}}:{{.Destination}}
{{end}}" $d`; do
@bofm
bofm / rlwrap_static.sh
Created July 26, 2015 20:51
rlwrap static
# It works on RedHat, OEL, Centos
curl -o /usr/bin/rlwrap https://dl.dropboxusercontent.com/u/21373460/rlwrap_static_x64 && chmod 755 /usr/bin/rlwrap
@bofm
bofm / apt-sources.sh
Last active September 26, 2015 09:10
mirror.yandex.ru sources.list apt ubuntu
#!/usr/bin/env bash
cp /etc/apt/sources.list /etc/apt/sources.list_bkp
sed -ri 's/\/\/\w+\.ubuntu\.com/\/\/mirror\.yandex\.ru/' /etc/apt/sources.list
# OR
cat /etc/apt/sources.list | \
python -c 'import re,sys; sys.stdout.write(re.sub(sys.argv[1], sys.argv[2], sys.stdin.read()))' \
'//\w+\.ubuntu\.com' '//mirror.yandex.ru' > /etc/apt/sources.list1
mv /etc/apt/sources.list1 /etc/apt/sources.list