diff --git a/Makefile b/Makefile index c391050..0d4fb37 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -all: blink/blink.1 histogram/histogram.1 upsidedown/upsidedown.1 tracefile/tracefile.1 +all: blink/blink.1 histogram/histogram.1 upsidedown/upsidedown.1 tracefile/tracefile.1 timestamp/timestamp.1 blink/blink.1: blink/blink pod2man blink/blink > blink/blink.1 @@ -12,6 +12,9 @@ upsidedown/upsidedown.1: upsidedown/upsidedown tracefile/tracefile.1: tracefile/tracefile.pod pod2man tracefile/tracefile.pod > tracefile/tracefile.1 +timestamp/timestamp.1: timestamp/timestamp + pod2man timestamp/timestamp > timestamp/timestamp.1 + install: - parallel ln -sf `pwd`/{}/{} /usr/local/bin/{} ::: blink reniced em field forever neno rn stdout tracefile w4it-for-port-open upsidedown histogram goodpasswd mtrr not summer + parallel ln -sf `pwd`/{}/{} /usr/local/bin/{} ::: blink reniced em field forever neno rn stdout tracefile w4it-for-port-open upsidedown histogram goodpasswd mtrr not summer timestamp parallel ln -sf `pwd`/{} /usr/local/share/man/man1/{/} ::: */*.1 diff --git a/blink/blink b/blink/blink index d1e43c6..e8522b6 100755 --- a/blink/blink +++ b/blink/blink @@ -163,11 +163,24 @@ GetOptions( "s|all-slots|allslots" => \$::opt_allslots, ); +my @more_args = (); if(@ARGV) { for(@ARGV) { - s:/dev/::g; + s{/dev/}{}g; + if(/^md/) { + # RAID device. Try to find the matching physical devices + my $md = $_; + for my $line (grep /^$md :/, `cat /proc/mdstat`) { + # md1 : active raid6 sdat[14](S) sdx[13] sds[12](S) sdc[6](S) sdb[0] sdm[9] sdk[7] sdaa[10] sdi[5] sdh[4] + while($line =~ s/(\S+)\[//) { + push @more_args, $1; + } + } + } } } +push @ARGV,@more_args; + if(not ($::opt_on or $::opt_off or $::opt_toggle or $::opt_alldetected or $::opt_allslots or @ARGV)) { @@ -206,21 +219,21 @@ if($::opt_on) { sub on { my $locate = shift; - print("parallel -j1 echo 1 \\> ::: $locate\n"); - system("parallel -j1 echo 1 \\> ::: $locate\n"); + print(q{bash -c 'parallel -j1 echo 1 \\> {} ::: }. $locate."'\n"); + system(q{bash -c 'parallel -j1 echo 1 \\> {} ::: }. $locate."'\n"); } sub off { my $locate = shift; - print("parallel -j1 echo 0 \\> ::: $locate\n"); - system("parallel -j1 echo 0 \\> ::: $locate\n"); + print(q{bash -c 'parallel -j1 echo 0 \\> {} ::: }. $locate."'\n"); + system(q{bash -c 'parallel -j1 echo 0 \\> {} ::: }. $locate."'\n"); } sub toggle { my $locate = shift; # If the file 'locate' contains 1 it should be put to 0. - print('parallel -j1 grep -q 1 {} \; echo \$? \\> {} :::'." $locate\n"); - system('parallel -j1 grep -q 1 {} \; echo \$? \\> {} :::'." $locate\n"); + print(q{bash -c 'parallel -j1 grep -q 1 {} \; echo \$? \\> {} ::: }. $locate."'\n"); + system(q{bash -c 'parallel -j1 grep -q 1 {} \; echo \$? \\> {} ::: }. $locate."'\n"); } diff --git a/good_password/good_password b/good_password/good_password deleted file mode 100755 index 3309d8c..0000000 --- a/good_password/good_password +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/perl - -# This program generates passwords that: -# -# * are hard to guess -# * will be displayed unambigously in any (normal) font -# * will survive being passed through a bad fax machine -# * has UPPER lower number and sign -# -# Too close: B8 cC g9 kK lI l1 oO O0 pP sS uU vV xX zZ ,. :; `' S5 -# Causes problems in URLs: @/: -# Causes problems in shell: ! " # $ & ( ) [ ] { } ? | < > \ * -# SQL uses: % for wildcard -# Hard to type: ^ ~ ¨ ¤ § ½ æ ø å Æ Ø Å -# Never 2 same chars next to eachother. (--) is bad - -my $pw; -my @chars=split //, 'abdefhijmnqrtyADEFGHJLMNQRTY23467=+-'; -do { - $pw = ""; - for (1..12) { - do { - # avoid double chars (such as --) - $this = $chars[rand $#chars+1] - } while($last eq $this); - $last = $this; - $pw .= $this; - } -} while (not($pw =~ /[A-Z]/ and - $pw =~ /[a-z]/ and - $pw =~ /[0-9]/ and - $pw =~ /[^a-zA-Z0-9]/)); - -print "$pw\n"; diff --git a/goodpasswd/goodpasswd b/goodpasswd/goodpasswd index 3309d8c..e8f68f9 100755 --- a/goodpasswd/goodpasswd +++ b/goodpasswd/goodpasswd @@ -9,13 +9,13 @@ # # Too close: B8 cC g9 kK lI l1 oO O0 pP sS uU vV xX zZ ,. :; `' S5 # Causes problems in URLs: @/: -# Causes problems in shell: ! " # $ & ( ) [ ] { } ? | < > \ * +# Causes problems in shell: ! " # $ & ( ) [ ] { } ? | < > \ * = # SQL uses: % for wildcard # Hard to type: ^ ~ ¨ ¤ § ½ æ ø å Æ Ø Å # Never 2 same chars next to eachother. (--) is bad my $pw; -my @chars=split //, 'abdefhijmnqrtyADEFGHJLMNQRTY23467=+-'; +my @chars=split //, 'abdefhijmnqrtyADEFGHJLMNQRTY23467+-'; do { $pw = ""; for (1..12) { diff --git a/timestamp/timestamp b/timestamp/timestamp new file mode 100755 index 0000000..b0899cc --- /dev/null +++ b/timestamp/timestamp @@ -0,0 +1,268 @@ +#!/usr/bin/perl + +=head1 NAME + +timestamp - prepend timestamp to output + +=head1 SYNOPSIS + +B | B [--delta] [--rfc|--iso|--iso-time|--epoch] + +=head1 DESCRIPTION + +B prepends stdin (standard input) with a timestamp. + +=over 9 + +=item B<--delta> + +Regard start time as epoch and thus show difference between start time +and now. + + +=item B<--rfc> + +Output time format in RFC822 (E.g. Wed, 30 Jan 2013 13:57:58 GMT). + + +=item B<--iso> + +Output time format in ISO8601 (E.g. 2013-01-30T13:57:58.322). + + +=item B<--iso-time> + +Output time format in ISO8601/time only (E.g. 13:57:58.322). + + +=item B<--epoch> + +Output time format as seconds since 1970-01-01T00:00:00 (E.g. 1359557768.423). + +=back + +=head1 EXAMPLES + +=head2 Timestamp vmstat + +B + + +=head2 Timestamp each step in setting up/tearing down ssh connection: + +B + + +=head1 REPORTING BUGS + +B is part of tangetools. Report bugs to . + + +=head1 AUTHOR + +Copyright (C) 2013 Ole Tange http://ole.tange.dk + + +=head1 LICENSE + +Copyright (C) 2013 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +at your option any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +=head2 Documentation license I + +Permission is granted to copy, distribute and/or modify this documentation +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with no Front-Cover Texts, and with no Back-Cover +Texts. A copy of the license is included in the file fdl.txt. + +=head2 Documentation license II + +You are free: + +=over 9 + +=item B + +to copy, distribute and transmit the work + +=item B + +to adapt the work + +=back + +Under the following conditions: + +=over 9 + +=item B + +You must attribute the work in the manner specified by the author or +licensor (but not in any way that suggests that they endorse you or +your use of the work). + +=item B + +If you alter, transform, or build upon this work, you may distribute +the resulting work only under the same, similar or a compatible +license. + +=back + +With the understanding that: + +=over 9 + +=item B + +Any of the above conditions can be waived if you get permission from +the copyright holder. + +=item B + +Where the work or any of its elements is in the public domain under +applicable law, that status is in no way affected by the license. + +=item B + +In no way are any of the following rights affected by the license: + +=over 9 + +=item * + +Your fair dealing or fair use rights, or other applicable +copyright exceptions and limitations; + +=item * + +The author's moral rights; + +=item * + +Rights other persons may have either in the work itself or in +how the work is used, such as publicity or privacy rights. + +=back + +=item B + +For any reuse or distribution, you must make clear to others the +license terms of this work. + +=back + +A copy of the full license is included in the file as cc-by-sa.txt. + +=head1 DEPENDENCIES + +B uses Perl and the Getopt::Long and Time::HiRes modules. + + +=head1 SEE ALSO + +B