Skip to content

Instantly share code, notes, and snippets.

@tommybutler
tommybutler / parsecommand.pl
Created February 11, 2014 20:27
parse a command invocation into the command and each of its arguments
#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;
use Data::Dumper;
my $cmdstr = q{/usr/local/bin/ssh %s '/opt/something/bin/somebinary || echo "Could not execute somebinary"' -a -abc --verbose --name="tommy butler" --color="blue" --quote="'to be'" /tmp /foo};
@tommybutler
tommybutler / regen_dbic_schema.sh
Last active August 29, 2015 13:58
regenerate a DBIx::Class schema dump
#!/bin/bash
# skeleton code; you will need to customize to suit
# you need to set up your database and install DBIx::Class::Schema::Loader
# along with any DBIC components you use below
cd /var/projects/My/App
dbicdump -o components='["TimeStamp","PassphraseColumn"]' -o dump_directory=./lib My::App::Schema dbi:mysql:dfwpm dfwpm dfwpm '{ AutoCommit => 1 }'
@tommybutler
tommybutler / dbic_example.pl
Last active August 29, 2015 13:58
DBIx::Class Example Script
#!/usr/bin/env/ perl
use strict;
use warnings;
use 5.019;
use lib './lib';
use My::App::Schema;
@tommybutler
tommybutler / backintime-alert.sh
Last active August 29, 2015 14:26
proof of concept error detection for back-in-time
#!/bin/bash
# STATUS: proof of concept. TODO: scan syslog as well, with
# forward-compatibility for systemd's journalctl syslog also
# WARNING: this may have bugs.
# CONFIGURE THIS VARIABLE ...based on BIT config file, but here
# it is hard coded for rapid prototyping
DEPTH=6
@tommybutler
tommybutler / gist:4316212118279ffa5694
Created July 24, 2015 15:45
Quickly generate a bunch files with random content
for i in `seq -f "%02g" 0 200`; do dd if=/dev/random of=${i}.test bs=1M count=1; done
@tommybutler
tommybutler / perl_expect.pl
Last active December 25, 2015 06:49
Example using Perl expect to automate a shell login (Linux bash). The individual subs could/shoud be wrapped with Moose (around => subname)
#!/usr/bin/env perl
use Modern::Perl;
use 5.016;
use Expect;
use File::Util;
use Time::HiRes qw( time );
@tommybutler
tommybutler / drop_privileges.pl
Created October 12, 2013 00:18
How to drop privileges in a Perl script when initially run as root
BEGIN { # give up root identity and run as an unprivileged user ASAP
use POSIX;
my $run_as = 'user_you_want_to_run_as';
my ( $uid, $gid ) = ( getpwnam $run_as )[ 2, 3 ];
die $! unless $uid && $gid;
@tommybutler
tommybutler / denyhosts-remove.sh
Created October 12, 2013 19:04
Remove an IP address ban that has been blocked by denyhosts
#!/bin/bash
# denyhosts-remove.sh
#
# AUTHOR: Tommy Butler, email: $ echo YWNlQHRvbW15YnV0bGVyLm1lCg==|base64 -d
# VERSION: 1.0
#
# SUMMARY:
# Use this script to Remove an IP address ban that has been errantly blacklisted
# by denyhosts - the ubiquitous and unforgiving brute-force attack protection
@tommybutler
tommybutler / coretemp.sh
Created October 12, 2013 19:08
Monitor CPU Core temperature in Linux on the command line
# add this to your .bashrc
function coretemp {
/usr/bin/clear;
while : ; do
/usr/bin/sensors | /bin/grep ^Core | while read x; do
@tommybutler
tommybutler / .bashrc
Last active December 25, 2015 09:29
I source this file from the last line in my .bashrc. I name it .profile-custom and put it in my home directory
shopt -s checkwinsize
export PS1="\n[\[\e[1;37m\]\u\[\e[0m\]@\[\e[1;34m\]\H\[\e[0m\]] [\[\e[1;33m\]\d, \t\[\e[0m\]] [\[\e[1;31m\]\!\[\e[0m\]]\n\[\e[1;31m\]\[\e[0m\][\[\e[1;37m\]\w\[\e[0m\]]\n\[\e[1;37m\]\\$\[\e[0m\] "
export HISTTIMEFORMAT='%F %T '
export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth
export HISTIGNORE='pwd:ls:history:'
export HISTSIZE=4096
export EDITOR='/usr/bin/vim'