$ ipmitool fru
A place for John to record his techy notes, both to refer back to when needed, and as a help for others...
Tuesday, October 09, 2012
Invalidate nscd cache
If you want nscd to forget a database, you can invalidate it so that it gets reloaded next time you query it.
Use:
nscd -i <database>
e.g.:
nscd -i passwd
Wednesday, August 08, 2012
Adding an ACL with chmod
chmod A+user:$USER:write_attributes/write_acl:allow $FILENAME
Look at http://www.cuddletech.com/blog/pivot/entry.php?id=939 for more.
The secret is in the +
Use:
ls -v(a)
To show the existing ACL.
Thursday, May 24, 2012
Jump to column in vi
You can jump to a line in vi with <line number>G
To jump to a column on the current line, use <column number>| (pipe character)
Friday, May 11, 2012
Add line after match using ex
This little script is to append a line to a file after a text match, using ex.
This particular one is for /usr/local/etc/sudoers to add a 5 minute timeout to the root sudo.
#!/bin/bash
FILE=$1
cp -p $FILE $FILE.old
ex $FILE <<EOT
/^User_Alias.*UNIX.*wheel
a
Defaults:UNIX timestamp_timeout=5
.
x!
EOT
Friday, February 03, 2012
Simple password generator
If you don't specify a password to use on the command line, it will generate a random 15 character password for you.
NB: You really shouldn't use it with a password on the command line, as this can be seen by other users with the ps command while it's running. I've just done this to simplify the example. This code is a snippet, intended to be used in a larger script where the password would be read from a file or provided on STDIN.
#!/usr/bin/perl
#
#
#
use warnings;
use strict;
my $len = 15;
my $plaintext = shift;
if ( ! $plaintext ) {
my @chars;
for my $char (33 .. 126) {
push @chars, chr($char);
}
for (1..$len) {
$plaintext .= $chars[int(rand($#chars))];
}
}
my @schars = ('a'..'z','A'..'Z',0..9,'.','/');
my $salt = '';
for (1..8) {
$salt .= $schars[int(rand($#schars))];
}
my $crypted_pass = crypt($plaintext,'$1$' . $salt )
or die($!);
print "$plaintext\n$crypted_pass\n";
There are other tools to do this.
For example, on Debian Linux so far I know of:
$ dpkg -S /usr/bin/openssl
openssl: /usr/bin/openssl
$ dpkg -S /usr/bin/mkpasswd
whois: /usr/bin/mkpasswd
$ dpkg -S /usr/bin/makepasswd
makepasswd: /usr/bin/makepasswd
Usage:
$ openssl passwd -1 -stdin <<EOT
passwd
EOT
$1$nRGcgK4T$uI7mxwMxGUt6NQ.lyu42./
$ mkpasswd -5 -s <<EOT
> passwd
> EOT
$1$0rg1g/e9$rh1lfYHX9qkSVihZ9vBcd/
$ makepasswd --crypt-md5 --clearfrom=-
passwd
passwd $1$IEK./reC$UbqosXZvVn6Hv/2Zej.va/
I wanted to run it on Solaris, and I wanted to run it in a Perl program (because the rest of the program I was writing was in Perl)
The openssl and mkpasswd programs are compiled C binaries, makepasswd is written in Perl, but it uses Crypt::OpenSSL::Random to generate better randomness, and the box I needed to run it on didn't have that library.
I expect the rand() in Perl is quite random enough for my needs here!
Thursday, February 02, 2012
Friday, January 27, 2012
Perl keyword 'our' doesn't work on old Perl
#!/usr/bin/perl -w
#
#
#
use strict;
use Getopt::Std;
our $opt_v;
getopts('v');
sub VERBOSE { $opt_v; }
This will fail:
$ ./try.pl
Use of reserved word "our" is deprecated at ./try.pl line 8.
Global symbol "$opt_v" requires explicit package name at ./try.pl line 8.
Execution of ./try.pl aborted due to compilation errors.
You can use this instead:
#!/usr/bin/perl -w
#
#
#
use strict;
use Getopt::Std;
use vars '$opt_v';
getopts('v');
sub VERBOSE { $opt_v; }
There is a discussion on what the error means at http://www.perlmonks.org/?node_id=23916
Friday, October 07, 2011
Registry entries for TheGun
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pl\OpenWithList]
"g"="THEGUN.EXE"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList]
"g"="THEGUN.EXE"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache]
"C:\\Program Files\\TheGun\\THEGUN.EXE"="TheGun"
"C:\\Progra~1\\TheGun\\THEGUN.EXE"="TheGun"
[HKEY_CURRENT_USER\Software\Classes\Applications\THEGUN.EXE\shell\open\command]
@="C:\\Progra~1\\TheGun\\THEGUN.EXE %1"
[HKEY_CURRENT_USER_Classes\Applications\THEGUN.EXE\shell\open\command]
@="C:\\Progra~1\\TheGun\\THEGUN.EXE %1"
Wednesday, October 05, 2011
rpm queries
rpm -qa (list all packages installed
rpm -qf /path/to/file (which package provides this file)
rpm -ql (list the files in a package)
http://www.rpm.org/max-rpm/s1-rpm-query-parts.html