Skip to content

Instantly share code, notes, and snippets.

@olavmrk
olavmrk / lvm-daily-snapshot.sh
Created December 11, 2013 13:24
A script to take daily snapshots of a LVM volume.
#!/bin/bash
KEEP_DAYS=15
VG="vg" # LVM volume group we are snapshoting
LV="data-volume-name" # Name of LVM-volume to take a snapshot of
BACKUP_PREFIX="backup-volume-prefix-" # Prefix of snapshot volume name.
SIZE=40G # Amount of disk space to allocate for the snapshot
# Create new snapshot
@olavmrk
olavmrk / build-root.sh
Last active April 28, 2023 10:20
Create Debian Jessie squashfs & initramfs image
#!/bin/bash
set -e
WORK_DIR="$(mktemp --directory --tmpdir build-root.XXXXXXXX)"
trap 'rm -rf "${WORK_DIR}"' EXIT
if [ -f rootcache.tar.gz ]; then
tar --extract --numeric-owner --gzip --file rootcache.tar.gz --directory "${WORK_DIR}"
else
debootstrap --variant=minbase --include=linux-image-amd64,ifupdown,isc-dhcp-client,openssh-server,less,nano,python,lvm2,debootstrap jessie "${WORK_DIR}" http://httpredir.debian.org/debian
@olavmrk
olavmrk / kvm-initramfs.sh
Last active January 15, 2022 09:17
kvm boot debian from initramfs
#!/bin/bash
set -e
cd /tmp
mkdir testroot
debootstrap wheezy testroot http://http.debian.net/debian
chroot testroot env LC_ALL=C apt-get install --no-install-recommends linux-image-amd64
rm -rf testroot/var/cache/apt/*
ln -s bin/bash testroot/init
echo 'T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100' >>testroot/etc/inittab
passwd -R "$(pwd)"/testroot -d root
@olavmrk
olavmrk / removeexcept.sh
Last active August 23, 2021 21:33
git filter-branch command to remove all files except those of interest
# Remove every file except "./somefile.txt" and the directory "./somedir".
# --prune-empty to remove empty commits.
git filter-branch --tree-filter "find . -not -path './.git' -not -path './.git/*' -not -path './somefile.txt' -not -path './somedir/*' -not -path './somedir' -delete" --prune-empty
@olavmrk
olavmrk / wireshark-remote.sh
Created January 7, 2015 15:59
Run wireshark with remote dump over ssh
wireshark -k -i <(ssh root@dumphost.example.org tcpdump -U -w - host somehost.example.org and port 80)
@olavmrk
olavmrk / gist:8560126
Last active December 2, 2020 07:47
Archiving a server
# Copy the filesystem:
rsync --numeric-ids --checksum --delete --archive --verbose --exclude /dev --exclude /proc --exclude /run --exclude /sys root@someserver:/ /mnt/tmp
# Create a squashfs image
mksquashfs /mnt/tmp someserver.squashfs -comp xz -noappend
# Create LVM volume
lvcreate --size $(stat --format %s someserver.squashfs)B --name old-someserver vg
# Archive image on LVM
#!/usr/bin/env python
import socket
import struct
import sys
src_ip = sys.argv[1]
src_port = int(sys.argv[2])
dst_addr = sys.argv[3]
dst_port = int(sys.argv[4])
@olavmrk
olavmrk / generate_passwordhash.py
Created November 16, 2016 09:51
Generate SHA-512 password hash
#!/usr/bin/env python3
import argparse
import crypt
import getpass
import random
import string
import sys
def parse_args():
parser = argparse.ArgumentParser(description='Generate SHA-512 crypt() password hash with configurable number of rounds')
#!/usr/bin/env python
import select
import socket
import struct
import sys
TIMEOUT = 10.0
ip = sys.argv[1]
port = int(sys.argv[2])
@olavmrk
olavmrk / resume-devs.sh
Created December 11, 2013 13:28
Script to resume suspended LVM volumes, due to Debian bug #659762: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=659762 The script must most likely be executed multiple times to recover all suspended volumes.
#!/bin/bash
dmsetup info | while IFS=: read NAME VALUE; do
# Trim leading and trailing whitespace from NAME and VALUE
NAME="$(echo "$NAME" | sed -e 's/^ *//g' -e 's/ *$//g')"
VALUE="$(echo "$VALUE" | sed -e 's/^ *//g' -e 's/ *$//g')"
if [ -z "$NAME" ]; then
continue
fi