From d5e72ac1b3d1aacec097c1d41decbe748c035f06 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 27 Feb 2024 22:29:09 -0500 Subject: rearrange some more things --- bin/.bin/ag | 1 + bin/.bin/cryptdir | 40 +++++++++++++++++++++++++++++++++++++++ bin/.bin/cryptoloop | 30 +++++++++++++++++++++++++++++ bin/.bin/files-between | 14 ++++++++++++++ bin/.bin/fm22avi | 8 ++++++++ bin/.bin/history-stats | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++ bin/.bin/hostcert | 8 ++++++++ bin/.bin/mem-usage | 5 +++++ bin/.bin/on-lock | 6 ++++++ bin/.bin/pacman-dump | 6 ++++++ bin/.bin/pdfcat | 7 +++++++ bin/.bin/reply | 28 +++++++++++++++++++++++++++ bin/.bin/rg | 7 +++++++ bin/.bin/scanpdf | 4 ++++ bin/.bin/scratch | 5 +++++ bin/.bin/set-mac | 10 ++++++++++ bin/.bin/show-colors | 29 ++++++++++++++++++++++++++++ bin/.bin/smt | 22 ++++++++++++++++++++++ bin/.bin/sum | 8 ++++++++ bin/.bin/vimmanpager | 15 +++++++++++++++ bin/.bin/web | 11 +++++++++++ bin/.gitignore | 1 + 22 files changed, 316 insertions(+) create mode 120000 bin/.bin/ag create mode 100755 bin/.bin/cryptdir create mode 100755 bin/.bin/cryptoloop create mode 100755 bin/.bin/files-between create mode 100755 bin/.bin/fm22avi create mode 100755 bin/.bin/history-stats create mode 100755 bin/.bin/hostcert create mode 100755 bin/.bin/mem-usage create mode 100755 bin/.bin/on-lock create mode 100755 bin/.bin/pacman-dump create mode 100755 bin/.bin/pdfcat create mode 100755 bin/.bin/reply create mode 100755 bin/.bin/rg create mode 100755 bin/.bin/scanpdf create mode 100755 bin/.bin/scratch create mode 100755 bin/.bin/set-mac create mode 100755 bin/.bin/show-colors create mode 100755 bin/.bin/smt create mode 100755 bin/.bin/sum create mode 100755 bin/.bin/vimmanpager create mode 100755 bin/.bin/web create mode 100644 bin/.gitignore (limited to 'bin') diff --git a/bin/.bin/ag b/bin/.bin/ag new file mode 120000 index 0000000..5b2ddf3 --- /dev/null +++ b/bin/.bin/ag @@ -0,0 +1 @@ +rg \ No newline at end of file diff --git a/bin/.bin/cryptdir b/bin/.bin/cryptdir new file mode 100755 index 0000000..eb63300 --- /dev/null +++ b/bin/.bin/cryptdir @@ -0,0 +1,40 @@ +#!/bin/sh +set -eu +set -o pipefail + +if [ -e /dev/mapper/cryptdir ]; then + echo "only one instance can run at a time" 1>&2 + exit 1 +fi + +sudo -v || exit 1 + +if [ -z "${1:-}" ]; then + size='16M' +else + size=$1 +fi + +cryptfile=$(mktemp) +cryptdir=$(mktemp -d) +pass=$(dd if=/dev/urandom bs=1 count=80 | base64) + +cleanup() { + set +e + cd + sudo umount "$cryptdir" + sudo cryptsetup close cryptdir + rm -f "$cryptfile" + rmdir "$cryptdir" +} + +trap cleanup EXIT + +dd if=/dev/urandom of="$cryptfile" bs="$size" count=1 +echo "$pass" | sudo cryptsetup luksFormat "$cryptfile" - +echo "$pass" | sudo cryptsetup open "$cryptfile" cryptdir --key-file - +sudo mkfs.ext2 /dev/mapper/cryptdir +sudo mount /dev/mapper/cryptdir "$cryptdir" +sudo chown "$USER" "$cryptdir" +cd "$cryptdir" +$SHELL diff --git a/bin/.bin/cryptoloop b/bin/.bin/cryptoloop new file mode 100755 index 0000000..493c74e --- /dev/null +++ b/bin/.bin/cryptoloop @@ -0,0 +1,30 @@ +#!/bin/sh +set -eu + +command="$1" +name="$2" +file="${HOME}/crypt/${name}.luks" +dev="/dev/mapper/$name" + +case "$command" in +create) + size=$3 + count=${4:-1} + dd if=/dev/urandom of="$file" bs="$size" count="$count" iflag=fullblock + sudo cryptsetup luksFormat "$file" + sudo cryptsetup open "$file" "$name" + sudo mkfs.ext4 "$dev" + sudo mount "$dev" /mnt + sudo chown "$USER" /mnt + sudo umount /mnt + sudo cryptsetup close "$name" + ;; +open) + sudo cryptsetup open "$file" "$name" + sudo mount "$dev" /mnt + ;; +close) + sudo umount /mnt + sudo cryptsetup close "$name" + ;; +esac diff --git a/bin/.bin/files-between b/bin/.bin/files-between new file mode 100755 index 0000000..634b61c --- /dev/null +++ b/bin/.bin/files-between @@ -0,0 +1,14 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use 5.014; + +use File::Basename; + +my $first = $ARGV[0]; +my $second = $ARGV[1]; + +my $dirname = dirname($first); +die unless $dirname eq dirname($second); + +say for grep { /^\Q$first\E$/../^\Q$second\E$/ } sort <$dirname/*>; diff --git a/bin/.bin/fm22avi b/bin/.bin/fm22avi new file mode 100755 index 0000000..eebfb4f --- /dev/null +++ b/bin/.bin/fm22avi @@ -0,0 +1,8 @@ +#!/bin/bash +set -eu +set -o pipefail + +movie="$1" +rom="$2" + +fceux --playmov "$movie" --sound 1 --soundq 1 --soundrate 48000 --nospritelim 1 --pal 0 --xscale 1 --yscale 1 --opengl 0 --special 0 "$rom" --videolog "mencoder - -o ${movie/.fm2/.avi} -ovc x264 -x264encopts qp=0 -oac mp3lame -lameopts mode=3:preset=128 -noskip -nocache -mc 0 -aspect 4/3 NESVSETTINGS" diff --git a/bin/.bin/history-stats b/bin/.bin/history-stats new file mode 100755 index 0000000..0fead1f --- /dev/null +++ b/bin/.bin/history-stats @@ -0,0 +1,51 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +use Getopt::Long; + +my $history_file = $ENV{SHELL} =~ m{/zsh} ? '.zsh_history' : '.bash_history'; + +open my $fh, '<', "$ENV{HOME}/$history_file" + or die "couldn't open $ENV{HOME}/$history_file: $!"; +my $n = 10; +my $subcommand; +GetOptions( + 'n=i' => \$n, + 'subcommand=s' => \$subcommand, +); + +my %cmds; +my %sudo_cmds; + +while (<$fh>) { + chomp; + + # strip zsh history timestamps + s/^[^;]*;// if /^:/; + + s/^\s*(.*?)\s*$/$1/; + my @words = split /\s+/; + next unless @words; + shift @words while @words && $words[0] =~ /^[A-Z][A-Z0-9_]*=/; + next unless @words; + my $sudo; + if ($words[0] eq 'sudo') { + $sudo = 1; + shift @words; + } + if ($subcommand) { + next unless $words[0] eq $subcommand; + shift @words; + shift @words while @words && $words[0] =~ /^-/; + } + $cmds{($words[0] || '')}++; + $sudo_cmds{$words[0]}++ if $sudo; +} + +for my $cmd (sort { $cmds{$b} <=> $cmds{$a} } keys %cmds) { + printf '%5d %s', $cmds{$cmd}, $subcommand ? "$subcommand $cmd" : $cmd; + printf ' (%d under sudo)', $sudo_cmds{$cmd} if $sudo_cmds{$cmd}; + print "\n"; + last unless --$n; +} diff --git a/bin/.bin/hostcert b/bin/.bin/hostcert new file mode 100755 index 0000000..61f519d --- /dev/null +++ b/bin/.bin/hostcert @@ -0,0 +1,8 @@ +#!/bin/sh +set -eu +set -o pipefail + +host="$1" +port="${2:-443}" + +openssl s_client -connect "$host:$port" /dev/null | perl -nle 'print if /BEGIN CERTIFICATE/../END CERTIFICATE/' | openssl x509 -text | perl -nle 'print unless /BEGIN CERTIFICATE/../END CERTIFICATE/' diff --git a/bin/.bin/mem-usage b/bin/.bin/mem-usage new file mode 100755 index 0000000..19e8c32 --- /dev/null +++ b/bin/.bin/mem-usage @@ -0,0 +1,5 @@ +#!/bin/sh +set -eu +set -o pipefail + +ps -eo rss,ucmd | sort -rn | head -n"${1:-20}" diff --git a/bin/.bin/on-lock b/bin/.bin/on-lock new file mode 100755 index 0000000..3de3724 --- /dev/null +++ b/bin/.bin/on-lock @@ -0,0 +1,6 @@ +#!/bin/sh + +sudo -K +ssh-add -D +echo RELOADAGENT | gpg-connect-agent +type rbw >/dev/null 2>&1 && rbw lock diff --git a/bin/.bin/pacman-dump b/bin/.bin/pacman-dump new file mode 100755 index 0000000..b32ed16 --- /dev/null +++ b/bin/.bin/pacman-dump @@ -0,0 +1,6 @@ +#!/bin/bash +set -eu +set -o pipefail + +echo base-devel +comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base-devel | sort) diff --git a/bin/.bin/pdfcat b/bin/.bin/pdfcat new file mode 100755 index 0000000..ff4edaa --- /dev/null +++ b/bin/.bin/pdfcat @@ -0,0 +1,7 @@ +#!/bin/sh +set -eu +set -o pipefail + +out="$1" +shift +gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$out" "$@" diff --git a/bin/.bin/reply b/bin/.bin/reply new file mode 100755 index 0000000..412189f --- /dev/null +++ b/bin/.bin/reply @@ -0,0 +1,28 @@ +#!/bin/sh +set -eu + +DOCKERFILE="$(cat </dev/null diff --git a/bin/.bin/set-mac b/bin/.bin/set-mac new file mode 100755 index 0000000..986d333 --- /dev/null +++ b/bin/.bin/set-mac @@ -0,0 +1,10 @@ +#!/bin/sh +set -eu + +link() { + sudo ip link set dev wlp0s20f3 "$@" +} + +link down +link address "$1" +link up diff --git a/bin/.bin/show-colors b/bin/.bin/show-colors new file mode 100755 index 0000000..47e0d32 --- /dev/null +++ b/bin/.bin/show-colors @@ -0,0 +1,29 @@ +#!/bin/sh +set -eu +set -o pipefail + +############################################################ +# Nico Golde Homepage: http://www.ngolde.de +# Last change: Mon Feb 16 16:24:41 CET 2004 +############################################################ + +for attr in 0 1 2 3 4 5 6 7; do + echo "----------------------------------------------------------------" + printf 'ESC[%s;Foreground;Background - \n' $attr + for fore in 30 31 32 33 34 35 36 37; do + for back in 40 41 42 43 44 45 46 47; do + printf '\033[%s;%s;%sm %02s;%02s ' $attr $fore $back $fore $back + done + printf '\033[0m\n' + done + printf '\033[0m' +done + +printf '\n' +for color in $(seq 0 255); do + printf '\033[%s;%s;%sm \033[m' 48 5 "$color" + if [ "$color" -eq 15 ] || [ "$(echo "scale = 0; ($color - 15) % 36" | bc)" -eq 0 ]; then + printf '\n' + fi +done +printf '\033[0m\n' diff --git a/bin/.bin/smt b/bin/.bin/smt new file mode 100755 index 0000000..446197d --- /dev/null +++ b/bin/.bin/smt @@ -0,0 +1,22 @@ +#!/bin/sh +set -eu + +DOCKERFILE="$(cat <; diff --git a/bin/.bin/vimmanpager b/bin/.bin/vimmanpager new file mode 100755 index 0000000..dfd36f3 --- /dev/null +++ b/bin/.bin/vimmanpager @@ -0,0 +1,15 @@ +#!/bin/sh +set -eu +set -o pipefail + +sed -e 's/\x1B\[[[:digit:]]\+m//g' | col -b | + vim \ + -c 'let no_plugin_maps = 1' \ + -c 'let g:rainbow_active = 0' \ + -c 'let g:airline#extensions#whitespace#checks = []' \ + -c "if exists('\$MAN_PN') | file \$MAN_PN | endif" \ + -c 'setlocal nolist nomod noswf ft=man' \ + -c 'runtime! macros/less.vim' \ + -c 'set ma' \ + -c 'setlocal noma' \ + - diff --git a/bin/.bin/web b/bin/.bin/web new file mode 100755 index 0000000..f8484c0 --- /dev/null +++ b/bin/.bin/web @@ -0,0 +1,11 @@ +#!/bin/sh +set -eu +set -o pipefail + +version="$(python -c "import sys; print(sys.version_info[0])")" +if [ "$version" = "2" ]; then + server=SimpleHTTPServer +else + server=http.server +fi +exec python -m "$server" "${1:-8000}" diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..550df27 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1 @@ +/.bin/local/* -- cgit v1.2.3-54-g00ecf