Skip to content

Instantly share code, notes, and snippets.

@withakay
withakay / gist:2314d35ce44e9f9f92b80f8ff8014c89
Created January 29, 2024 12:06
pre-commit_commit-to-main-guard.sh
#!/bin/bash
# Setup:
# Assuming you don't alread have a global githooks dir
#
# mkdir -p ~/.githooks/
#
# Save this script to the above path.
# Make a shell script called `pre-commit` in the above path (touch ~/.githooks/pre-commit).
# Edit pre-commit script sp it calls this script from it e.g.
@withakay
withakay / azs.sh
Last active November 6, 2023 08:46
azs - An Azure subscription switcher bash script
#!/bin/bash
# A bash script to switch Azure subscriptions
# save this script as `azs` somewhere in your path and make it executable
# then you can run `azs` to see a list subscriptions and easily switch between them
show_help() {
echo "Usage: $0 [options]"
echo ""
echo "Options:"
@withakay
withakay / UnlockScheduledTask.ps1
Created February 19, 2021 13:34
This Powershell script updates the security descriptor for scheduled tasks so that any user can run the task.
<#
.SYNOPSIS
This Powershell script updates the security descriptor for scheduled tasks so that any user can run the task.
Version 1.0 of this script only displays tasks in the root folder. I want to make sure that works first.
.DESCRIPTION
Earlier versions of Windows apparently used file permissions on C:\Windows\System32\Tasks files to manage security.
Windows now uses the SD value on tasks under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree to accomplish that.
@withakay
withakay / no-standard-secuyrity-groups.sh
Created July 5, 2023 08:54
AWS CLI: Get security groups that allow 0.0.0.0/0 on non standard ports (22, 80, 443 etc)
aws ec2 describe-security-groups --region "eu-west-1" \
--query 'SecurityGroups[?((IpPermissions.IpRanges.CidrIp == "0.0.0.0/0") || (IpPermissions.Ipv6Ranges.CidrIpv6 == "::/0"))]' \
--output json\
| jq '.[] | select(.IpPermissions[].FromPort | IN(3, 22, 80, 443) | not)'
@withakay
withakay / csvquery.sh
Last active June 23, 2023 10:48
Query CSV files with SQL from the command line easily, using SQLite
#!/bin/bash
set -eou pipefail
# Function to display usage instructions
display_usage() {
echo "This script uses SQLite3 to load a CSV file into memory and then query it with SQL, printing the results to stdout."
echo "The table name will be 'csv', so use that in your queries."
echo ""
echo "Usage: $0 -f|--file <file_path> [-q|--query <query>] [-p|--print-header] [-h|--header-fix]"
@withakay
withakay / git-cod
Created June 20, 2023 08:21
Git checkout default branch and pull. Optionally create a new working branch
#!/bin/bash
# Place this script in your path and make it executable
# Display the script's usage
display_usage() {
echo "Git Checkout Default Script"
echo "This git script will check out the default HEAD branch"
echo "and pull the latest from the remote. Optionally it will"
echo "create a new branch ready for you to work on."
@withakay
withakay / tf-module-version-pin.sh
Last active May 31, 2023 09:38
Terraform module version pin - search and replace
#!/bin/bash
# A script to search for all terraform files in a directory and replace
# the source attribute of any module references with a specific git ref tag/commit.
# This is useful for pinning a specific version of a module in a terraform project.
#
# Note:
# this script was tested on MacOS and may need to be modified for other platforms
# as the sed command may differ.
#
@withakay
withakay / .envrc
Created May 8, 2023 08:28
Direnv .envrc defaults for python
### My current .envrc defaults for defaults for a python project
# I use asdf to manage runtimes.
# Using asdf with direnv like this removes the
# annoying shims, which for me is more reliable
# less confusing and slightly faster
use asdf
unset PYTHONHOME
@withakay
withakay / bjorklund.js
Created October 14, 2011 10:10
Bjorklund algorithm in JavaScript
/*
An implementation of the Bjorklund algorithm in JavaScript
Inspired by the paper 'The Euclidean Algorithm Generates Traditional Musical Rhythms'
by Godfried Toussaint

This is a port of the original algorithm by E. Bjorklund which I
found in the paper 'The Theory of Rep-Rate Pattern Generation in the SNS Timing Systems' by
E. Bjorklund.
@withakay
withakay / doco-alias.sh
Created February 10, 2023 08:32
docker-compose alias
#!/usr/bin/env bash
#
# For use on systems where you might want a global alias to `docker compose`.
#
# If you just need an alias for your own user a shell alias in your profile probably makes more sense.
#
# If you need compatability with the docker-compose v1 container naming convention
# (with underscore delimiter _ over -), you can add the --compatability flag to the below commands.
#