Skip to content

Instantly share code, notes, and snippets.

@xandout
xandout / README.md
Created March 21, 2022 21:29
FFmpeg Utility Scripts
View README.md

FFmpeg helpers

Requirements: ffmpeg 4.3+ for crossfade. All commands tested on 4.4.1-3ubuntu1+20.04

I think that it is required that all videos(maybe audios) need to be the same resolution, framerate and all that. For my use case this is solved by pixabay

My specific goal here is to be able to use a site such as https://pixabay.com videos and mp3s to make long form videos with multiple songs

Obviously, you don't have to use pixabay. You probably don't have to use mp4s or mp3s, untested but ffmpeg should be able to figure it out, the commands do not use any codec specific flags.

@xandout
xandout / full-k8s-deployment-with-ingress.yml
Created March 9, 2022 13:37
A bare example of a Deployment, Service and Ingress on Kubernetes
View full-k8s-deployment-with-ingress.yml
---
apiVersion: v1
kind: Service
metadata:
labels:
kubernetes.io/name: "fun-apache"
name: "fun-apache-svc"
namespace: "{{ namespace }}"
spec:
type: LoadBalancer # NodePort might work for your lab as well.
@xandout
xandout / README.md
Created December 15, 2020 18:58
MongoDB User Management
View README.md

MongoDB User Management

This is a simple script that will keep the database users in sync with a defined JSON document.

My ultimate use case is in a K8S environment so the files will be templated and I will add and remove users from my databases that way.

This is the test rig and shows how to manage the creation, updating and deletion of MongoDB users.

Parts

@xandout
xandout / keybase.md
Last active September 22, 2020 17:51
keybase.md
View keybase.md

Keybase proof

I hereby claim:

  • I am xandout on github.
  • I am xandout (https://keybase.io/xandout) on keybase.
  • I have a public key ASD9c-9ULRwQ39Vui5bIy83SFVBzQ4JRe7YMwMxLQZ8XDgo

To claim this, I am signing this object:

@xandout
xandout / index.html
Created September 17, 2020 23:41
Tailwind CSS v1.0 Color Palette
View index.html
<div id="app"></div>
@xandout
xandout / README.md
Last active March 18, 2021 08:29
OpenVPN TOTP Auth
View README.md

Script to use TOTP tokens as passwords for OpenVPN auth

The user will be prompted for a username and password.

The username is the client username and the password is generated by their MFA app such as Authy or Google Authenticator.

OpenVPN server config

Add the following flags to your OpenVPN server config

@xandout
xandout / README.md
Last active October 13, 2021 16:00
Kubernetes DaemonSet that enables a direct shell on each Node using SSH to localhost
View README.md

Getting a shell on each node

I run several K8S cluster on EKS and by default do not setup inbound SSH to the nodes. Sometimes I need to get into each node to check things or run a one-off tool.

Rather than update my terraform, rebuild the launch templates and redeploy brand new nodes, I decided to use kubernetes to access each node directly.

Alternative option

https://github.com/alexei-led/nsenter

@xandout
xandout / export_redis_to_s3.py
Created August 13, 2020 15:42
Python script using boto3 to copy ElastiCache to S3
View export_redis_to_s3.py
#!/bin/env python
import boto3
import os
import time
from datetime import datetime
cluster_name = os.environ["CLUSTER_NAME"]
dest_bucket = os.environ["DEST_BUCKET"]
env_name = os.environ["ENV"]
@xandout
xandout / mutex_test.sh
Last active August 5, 2020 16:06
Mutex, Singleton, Only one instance of bash script running at a time
View mutex_test.sh
#!/bin/bash
# Credit: https://unix.stackexchange.com/a/479309
singleton(){
# get absolute path to the script itself
script=`realpath $0`
# open bash script using file descriptor 6
exec 6< "$script"
# lock file descriptor 6 OR show error message if script is already running
@xandout
xandout / add-to-bashrc.sh
Created May 4, 2020 18:48
Generate random password in bash
View add-to-bashrc.sh
# newpass generates a new random password of 32 or $1 chars long, up to 92 characters
newpass() { date +%s | sha256sum | base64 | tr -d '\n' | head -c "${1:-32}" ; echo ; }
# USAGE
# 18:47 # newpass 10
# N2U3YzliOT
# 18:47 # newpass 20
# YmM0MTk3MWFlMjM1ODMx
# 18:47 # newpass 30
# YzBlNDFhMmUyYzEwN2RlOThmOWRhNz
# 18:47 # newpass