Skip to content

Instantly share code, notes, and snippets.

@UnixSage
UnixSage / ssh-agent.sh
Created September 7, 2022 13:41
Snipit to add to bash_profile that will find an existing ssh-agent or start a new one. Also complains if it finds more than one for a user.
# Attach to a running ssh-agent or start a new one
if [ `find /tmp -maxdepth 1 -name "ssh-*" -user ${USER} | wc -l` == 1 ] ; then
echo "Found ssh-agent, attaching.."
SSHDIR=`find /tmp -maxdepth 1 -name "ssh-*" -user ${USER}`
SSH_AUTH_SOCK=`ls ${SSHDIR}/agent*` ; export SSH_AUTH_SOCK
SSH_AGENT_PID=`echo ${SSH_AUTH_SOCK} | awk -F"." '{print $2+1}'` ; export SSH_AGENT_PID
echo "Agent pid ${SSH_AGENT_PID}"
elif [ `find /tmp -maxdepth 1 -name "ssh-*" -user ${USER} | wc -l` == 0 ] ; then
echo "no ssh-agent found, starting.."
eval `ssh-agent -t 86400`
@UnixSage
UnixSage / selectiveDump.sh
Created July 30, 2021 14:27
Shell script that calls dump with an exclude list
#!/bin/sh
if [ $# = 2 ] ; then
NODENAME=$1
LEVEL=$2
elif [ $# = 1 ] ; then
NODENAME=$HOSTNAME
LEVEL=$1
else
NODENAME=$HOSTNAME
@UnixSage
UnixSage / PurgeOrphanedPacker.py
Created April 15, 2021 21:03
AWS Lambda function that will stop and eventually terminate instances that have packer keys attached to them .
#!/usr/bin/env python3
import datetime
import pytz
import boto3
def lambda_handler(event, context):
TerminateDelayDays = 3
StopDelayDays = 1
@UnixSage
UnixSage / RotateAwsCreds.py
Created March 2, 2021 19:33
Handy of you have multiple aws accounts, utility that interrogates your aws config and generates aws-vault command lines and passwords to facilitate secret rotation.
#!/usr/bin/env python3
import configparser
import re
import string
from random import choice
from os.path import expanduser
PasswordLength = 32
SpecialCount = 4
@UnixSage
UnixSage / SES-Send.sh
Created September 17, 2020 20:01
Send email via AWS SES from the command line
#!/bin/bash
DOMAIN="example.com"
MAILFROM="cmdline@${DOMAIN}"
MAILTO="someone@example.com"
SUBJECT="Amazon SES SMTP Test from ${HOSTNAME}"
USER="AWSKEY"
PASSWORD="AWSSMTPPASSWORD"
SMTPHOST="email-smtp.us-east-1.amazonaws.com:587"
@UnixSage
UnixSage / CertBotManualAuthHook.sh
Last active January 28, 2022 22:58
Manual Script for CertBot for manual DNS Changes...
#!/bin/sh
echo "Domain: _acme-challenge.${CERTBOT_DOMAIN}" > /tmp/Manual.log
echo "Secret: ${CERTBOT_VALIDATION}" >> /tmp/Manual.log
echo "Looking for /tmp/done.$$" >> /tmp/Manual.log
while [ ! -f /tmp/done.$$ ]
do
sleep 2
@UnixSage
UnixSage / CalcHours.py
Last active August 1, 2020 22:52
Evenly split arbitrary groups of hours evenly across work days in a month
#!/usr/bin/env python3
import calendar, datetime, holidays
import math
import os, json
# hours.json format
#
# {
# "Client1": 116,
@UnixSage
UnixSage / CertBotNearlyFreeSpeechAuthHook.sh
Last active March 16, 2024 15:04
Drop in script for CertBot's --manual-auth-hook switch for DNS Hosted at NearlyFreeSpeech.com
#!/bin/bash
API_KEY="##NFS-API-KEY##"
LOGIN="##NFS-USER##"
updatedns() {
OLDDATA=`dig @${NAMESERVER} -t txt +noall +answer ${DNSRECORD}.${CERTBOT_DOMAIN} | awk '{gsub("\"",""); print $5}'`
for FUNCTION in removeRR addRR ; do
echo "Running ${FUNCTION}"
@UnixSage
UnixSage / GetBitBucketRepos.sh
Last active January 22, 2024 17:13
Simple Script to get a list of BitBucket repos for a given team
#!/bin/bash
USER="##USER_NAME_NOT_EMAIL##"
SECRET="##SECRET##"
TEAM="##TEAMNAME##"
CACHE="/tmp/repolist.$$"
REPOFILE="/tmp/repolist.txt"
URL="https://api.bitbucket.org/2.0/repositories/${TEAM}?pagelen=100"
@UnixSage
UnixSage / CertBotDuckDNS-AuthHook.sh
Last active November 13, 2019 17:05
Script to use with CertBot's --manual-auth-hook switch
#!/bin/sh
TOKEN="Your-Duck-DNS-Token"
BASEDOMAIN=`echo ${CERTBOT_DOMAIN} | awk -F. '{OFS="."; print $(NF-1),$(NF)}'`
echo $CERTBOT_DOMAIN
curl "https://www.duckdns.org/update?domains=${CERTBOT_DOMAIN}&token=${TOKEN}&txt=${CERTBOT_VALIDATION}"