diff --git a/bin/convert-to-ogg b/bin/convert-to-ogg new file mode 100755 index 0000000..e35c2b9 --- /dev/null +++ b/bin/convert-to-ogg @@ -0,0 +1,11 @@ +#!/usr/bin/perl -w + +use strict; + +foreach my $arg (@ARGV) +{ + my $out = $arg; + $out =~ s/\....$//; + system('oggenc', '-b', '192', '-o', "$out.ogg", $arg); +} + diff --git a/bin/convert-to-wav b/bin/convert-to-wav new file mode 100755 index 0000000..3351a3b --- /dev/null +++ b/bin/convert-to-wav @@ -0,0 +1,11 @@ +#!/usr/bin/perl -w + +use strict; + +foreach my $arg (@ARGV) +{ + my $out = $arg; + $out =~ s/\....$//; + system('mplayer', '-vo', 'null', '-ao', "pcm:file=$out.wav", $arg); +} + diff --git a/bin/gpgedit b/bin/gpgedit new file mode 100755 index 0000000..af0cd52 --- /dev/null +++ b/bin/gpgedit @@ -0,0 +1,43 @@ +#!/usr/bin/perl + +# Author: Josh Holtrop +# Purpose: edit a file encrypted by gpg +# Set environment variable GPGEDIT_RECIPIENT to specify the recipient + +use strict; +use warnings; + +sub usage +{ + print STDERR "Usage: $0 \n"; + exit(42); +} + +usage() unless ($#ARGV >= 0); +my $fname = shift(@ARGV); +my $dfname = $fname; +$dfname =~ s/\.gpg$//i; + +my $result = system('gpg', '--decrypt', '--output', $dfname, $fname); +if ($result != 0) +{ + print STDERR "Error decrypting: exiting.\n"; + exit(1); +} + +my $editor = $ENV{'EDITOR'}; +$editor = 'vim' if ($editor =~ /^\s*$/); + +system($editor, $dfname); + +my $recipient = $ENV{'GPGEDIT_RECIPIENT'}; +my @cmd = ('gpg', '--encrypt'); +if ($recipient !~ /^\s*$/) +{ + push(@cmd, '--recipient', $recipient); +} +push(@cmd, $dfname); + +system('mv', $fname, "$fname~"); +system(@cmd); +unlink($dfname); diff --git a/bin/ssh_execute.pl b/bin/ssh_execute.pl new file mode 100755 index 0000000..a6dabd4 --- /dev/null +++ b/bin/ssh_execute.pl @@ -0,0 +1,99 @@ +#!/usr/bin/perl +# Josh Holtrop +# 2006-05-05 + +use warnings; +use strict; + +sub usage +{ + print "Usage: $0 [options] command [args]\n"; + print "Options:\n"; + print " -q Run on hosts sequentially (default in parallel)\n"; + print " -s Use instead of 'ssh' for a remote shell program\n"; + print " -u Use username instead of your own\n"; + print " -h The hosts to run the command on, comma-separated\n"; + print " If the -h option is not given, the host list is\n"; + print " read from standard input, one host per line\n"; + exit(42); +} + +my $ssh = 'ssh'; +my $user = ''; +my $seq = 0; +my @hosts = (); +my @command = (); + +for (my $i = 0; $i <= $#ARGV; $i++) +{ + if ($ARGV[$i] eq '-q') + { + $seq = 1; + } + elsif ($ARGV[$i] =~ /^-s(.*)$/) + { + if (length($1) > 0) + { + $ssh = $1; + } + else + { + usage() if ($i == $#ARGV); + $ssh = $ARGV[++$i]; + } + } + elsif ($ARGV[$i] =~ /^-h(.*)$/) + { + if (length($1) > 0) + { + @hosts = split(/,/, $1); + } + else + { + usage() if ($i == $#ARGV); + @hosts = split(/,/, $ARGV[++$i]); + } + } + elsif ($ARGV[$i] =~ /^-u(.*)$/) + { + if (length($1) > 0) + { + $user = $1; + } + else + { + usage() if ($i == $#ARGV); + $user = $ARGV[++$i]; + } + } + else + { + # We've reached the command + @command = splice(@ARGV, $i); + last; + } +} + +$user .= '@' if ($user ne ''); +usage() if ($#command < 0); + +if ($#hosts < 0) +{ + # Read hosts from stdin + while (my $host = ) + { + chomp($host); + push(@hosts, $host); + } +} + +foreach my $host (@hosts) +{ + my $f = $seq ? 0 : fork(); + $f || system($ssh, "$user$host", @command); + exit(0) unless ($f || $seq); # Exit if not parent and not sequential +} + +while (wait() != -1) {} # Wait for all children to exit + +exit(0);