Monday, July 12, 2010
Can't Load Kernel - Private Notes
0:ad(0,a)kernel.old, return - Not found
Reboot with boot only disk: choose fixit >> replace boot only cd with live system CD and reboot resulting in "error mounting".
at fixit prompt
dmesg | more
"copyright..."
space bar, space bar
ls /dev
"ad4..."
df
"dev..."
mount /dev/ad4s1a /mmp
ls /mnt/boot/kernel.old
ls l /mnt/boot/kernel.old
ls l
"kernelold and kernelprevious"
cp -Rp kernel.old kernel
exit fixit
ctrl d to return to menu
eject CD
Restore old working kernel (kernel.old): Reboot and select #4 for single user mode
much bigger issue than I thought...
Friday, June 04, 2010
Saturday, April 24, 2010
Friday, April 23, 2010
Sunday, November 16, 2008
Installing KDE
1. You must have already installed X11 via:
# cd /usr/ports/x11/xorg
# make install clean
2. If successful, then start X via "startx" and to stop X server: "Ctl+Alt+Backspace"
3. Next install fonts. startx, then:
# cd /usr/ports/x11-fonts/urwfonts
# make install clean
Follow installation notes and set path (while running X) via:
% xset fp+ /usr/local/lib/X11/fonts/URW
% xset fp rehash
3. Install ttmkfdir at:
# cd /usr/ports/X11-fonts/ttmkfdir make install clean
4. # cd /usr/local/lib/X11/fonts/TrueType
# ttmkfdir -o fonts.dir
Now add the TrueType directory to the font path. This is just the same as described above for Type1 fonts, that is, use
% xset fp+ /usr/local/lib/X11/fonts/TrueType
% xset fp rehash
More to come...
Monday, June 16, 2008
Remove trailing and leading spaces
this will remove left spaces tab etc
find ./ -name "*.php" -exec sed -i -e 's/\s*$//' {} \;
this will remove right spaces before new line
find ./ -name "*.php" -exec sed -i -e '/^\n*$/d' {} \;
delete blank empty lines
OR
Script:
Note: This script only identifies files that contains leading or trailing blank spaces. It does not modify the file itself.
/***********************
*@author: Ritesh Agrawal
*@description: Identifies php files that contain leading or trailing spaces before or after PHP opening or closings tags
*@version: 1.0
*@date: Nov 06, 2007
@todo - check only *.PHP or *.CTP files rather than checking all of the files
- html based output
***********************/
//Set Source Path
$sourcepath = “D:/xampp/xampp/htdocs/memento”;
//Regex Express to test leading and trailing spaces
define(”PRE”, “#^[\n\r|\n\r|\n|\r|\s]+<\?php#”);
define(”POST”, “#\?>[\n\r|\n\r|\n|\r|\s]+$#”);
//Clear the file Status Cache
clearstatcache();
//============ Code borrowed from php.net ===============
// Replace \ by / and remove the final / if any
$root = ereg_replace( “/$”, “”, ereg_replace( “[\\]“, “/”, $sourcepath ));
// Touch all the files from the $root directory
if( false === m_walk_dir( $root, “check”, true )) {
echo “‘{$root}’ is not a valid directory\n”;
}
// Walk a directory recursively, and apply a callback on each file
function m_walk_dir( $root, $callback, $recursive = true ) {
$dh = @opendir( $root );
if( false === $dh ) {
return false;
}
while( $file = readdir( $dh )) {
if( “.” == $file || “..” == $file ){
continue;
}
call_user_func( $callback, “{$root}/{$file}” );
if( false !== $recursive && is_dir( “{$root}/{$file}” )) {
m_walk_dir( “{$root}/{$file}”, $callback, $recursive );
}
}
closedir( $dh );
return true;
}
//============== end ======================
//If file, checks whether there is any leading spaces before opening PHP tag or
// trailing spaces after closing PHP tag
function check( $path ) {
if( !is_dir( $path )) {
$fh = file_get_contents($path);
if(preg_match(PRE, $fh))
echo $path. ” — contains leading spaces \n”;
if(preg_match(POST, $fh))
echo $path . ” — contains trailing spaces \n”;
}
}
?>
To run this script, copy it in a blank file and name it as cleaner.php. Change the sourcepath variable to your cakephp application folder. Finally run the file from the command prompt using the following command
d:>PHP cleaner.php > output.txt
This will create an output.txt file like this
======= Output.txt ==========
D:/xampp/xampp/htdocs/memento/vendors/rdfapi-php/api/syntax/RssParser.php — contains trailing spaces
D:/xampp/xampp/htdocs/memento/vendors/rdfapi-php/api/util/adodb/adodb-errorhandler.inc.php — contains trailing spaces
D:/xampp/xampp/htdocs/memento/vendors/rdfapi-php/api/util/adodb/adodb-memcache.lib.inc.php — contains trailing spaces
====================
OR
To remove leading spaces, use
tail -1 filename | sed -e "s/^ \{1,\}//"
or to removed trailing spaces
tail -1 filename | sed -e "s/ \{1,\}$//"
Many different SED examples:
HANDY ONE-LINERS FOR SED (Unix stream editor) Oct. 29, 1997
compiled by Eric Pement
Latest version of this file is always at
FILE SPACING:
# double space a file
sed G
# triple space a file
sed 'G;G'
# undo double-spacing (assumes even-numbered lines are always blank)
sed 'n;d'
NUMBERING:
# number each line of a file (simple left alignment). Using a tab (see
# note on '\t' at end of file) instead of space will preserve margins.
sed = filename | sed 'N;s/\n/\t/'
# number each line of a file (number on left, right-aligned)
sed = filename | sed 'N; s/^/ /; s/ *\(.\{6,\}\)\n/\1 /'
# number each line of file, but only print numbers if line is not blank
sed '/./=' filename | sed '/./N; s/\n/ /'
# count lines (emulates "wc -l")
sed -n '$='
TEXT CONVERSION AND SUBSTITUTION:
# IN UNIX ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format
sed 's/.$//'
# IN DOS ENVIRONMENT: convert Unix newlines (LF) to DOS format
sed 's/$//' # method 1
sed -n p # method 2
# delete leading whitespace (spaces, tabs) from front of each line
# aligns all text flush left
sed 's/^[ \t]*//' # see note on '\t' at end of file
# delete trailing whitespace (spaces, tabs) from end of each line
sed 's/[ \t]*$//' # see note on '\t' at end of file
# delete BOTH leading and trailing whitespace from each line
sed 's/^[ \t]*//;s/[ \t]*$//'
# insert 5 blank spaces at beginning of each line (make page offset)
sed 's/^/ /'
# align all text flush right on a 79-column width
sed -e :a -e 's/^.\{1,78\}$/ &/;ta' # set at 78 plus 1 space
# center all text in the middle of 79-column width. In method 1,
# spaces at the beginning of the line are significant, and trailing
# spaces are appended at the end of the line. In method 2, spaces at
# the beginning of the line are discarded in centering the line, and
# no trailing spaces appear at the end of lines.
sed -e :a -e 's/^.\{1,77\}$/ & /;ta' # method 1
sed -e :a -e 's/^.\{1,77\}$/ &/;ta' -e 's/\( *\)\1/\1/' # method 2
# substitute (find & replace) "foo" with "bar" on each line
sed 's/foo/bar/' # replaces only 1st instance in a line
sed 's/foo/bar/4' # replaces only 4th instance in a line
sed 's/foo/bar/g' # replaces ALL instances in a line
# substitute "foo" with "bar" ONLY for lines which contain "baz"
sed '/baz/s/foo/bar/g'
# substitute "foo" with "bar" EXCEPT for lines which contain "baz"
sed '/baz/!s/foo/bar/g'
# reverse order of lines (emulates "tac")
sed '1!G;h;$!d'
# reverse each character on the line (emulates "rev")
sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
# join pairs of lines side-by-side (like "paste")
sed 'N;s/\n/ /'
SELECTIVE PRINTING OF CERTAIN LINES:
# print first 10 lines of file (emulates behavior of "head")
sed 10q
# print first line of file (emulates "head -1")
sed q
# print last 10 lines of file (emulates "tail")
sed -e :a -e '$q;N;11,$D;ba'
# print last line of file (emulates "tail -1")
sed '$!d'
# print only lines which match regular expression (emulates "grep")
sed -n '/regexp/p' # method 1
sed '/regexp/!d' # method 2
# print only lines which do NOT match regexp (emulates "grep -v")
sed -n '/regexp/!p' # method 1, corresponds to above
sed '/regexp/d' # method 2, simpler syntax
# print 1 line of context before and after regexp, with line number
# indicating where the regexp occurred (similar to "grep -A1 -B1")
sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h
# grep for AAA and BBB and CCC (in any order)
sed '/AAA/!d; /BBB/!d; /CCC/!d'
# grep for AAA or BBB or CCC (emulates "egrep")
sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d
# print only lines of 65 characters or longer
sed -n '/^.\{65\}/p'
# print only lines of less than 65 characters
sed -n '/^.\{65\}/!p' # method 1, corresponds to above
sed '/^.\{65\}/d' # method 2, simpler syntax
# print section of file from regular expression to end of file
sed -n '/regexp/,$p'
# print section of file based on line numbers (lines 8-12, inclusive)
sed -n '8,12p' # method 1
sed '8,12!d' # method 2
# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3, efficient on large files
# print section of file between two regular expressions (inclusive)
sed -n '/Iowa/,/Montana/p' # case sensitive
SELECTIVE DELETION OF CERTAIN LINES:
# print all of file EXCEPT section between 2 regular expressions
sed '/Iowa/,/Montana/d'
# delete duplicate lines from a sorted file (emulates "uniq"). First
# line in a set of duplicate lines is kept, the rest are deleted
sed '$!N; /^\(.*\)\n\1$/!P; D'
# delete ALL blank lines from a file (same as "grep '.' ")
sed '/^$/d'
# delete all CONSECUTIVE blank lines from file except the first; also
# deletes all blank lines from top and end of file (emulates "cat -s")
sed '/./,/^$/!d' # method 1, allows 0 blanks at top, 1 at EOF
sed '/^$/N;/\n$/D' # method 2, allows 1 blank at top, 0 at EOF
# delete all CONSECUTIVE blank lines from file except the first 2:
sed '/^$/N;/\n$/N;//D'
# delete all leading blank lines at top of file
sed '/./,$!d'
# delete all trailing blank lines at end of file
sed -e :a -e '/^\n*$/N;/\n$/ba'
SPECIAL APPLICATIONS:
# remove nroff overstrikes (char, backspace) from man pages
sed "s/.`echo \\\b`//g" # double quotes required for Unix environment
sed 's/.\x08//g' # hex expression for GNU sed (octal is "\010")
# get Usenet/e-mail message header
sed '/^$/q' # deletes everything after first blank line
# get Usenet/e-mail message body
sed '1,/^$/d' # deletes everything up to first blank line
# get Subject header, but remove initial "Subject: " portion
sed '/^Subject: */!d; s///;q'
# get return address header
sed '/^Reply-To:/q; /^From:/h; /./d;g;q'
# parse out the address proper. Pulls out the e-mail address by itself
# from the 1-line return address header (see preceding script)
sed 's/ *(.*)//; s/>.*//; s/.*[:<] *//'
# add a leading angle bracket and space to each line (quote a message)
sed 's/^/> /
# delete leading angle bracket & space from each line (unquote a message)
sed 's/^> //'
# remove most HTML tags (accommodates multiple-line tags)
sed -e :a -e 's/<[^<]*>/ /g;/{N;s/\n/ /;ba;}'
# extract multi-part uuencoded binaries, removing extraneous header
# info, so that only the uuencoded portion remains. Files passed to
# sed must be passed in the proper order. Version 1 can be entered
# from the command line; version 2 can be made into an executable
# Unix shell script. (Modified from a script by Rahul Dhesi.)
sed '/^end/,/^begin/d' file1 file2 ... fileX | uudecode # vers. 1
sed '/^end/,/^begin/d' $* | uudecode # vers. 2
# zip up each .TXT file individually, deleting the source file and
# setting the name of each .ZIP file to the basename of the .TXT file
# (under DOS: the "dir /b" switch returns bare filenames in all caps).
echo @echo off >zipup.bat
dir /b *.txt | sed "s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/" >>zipup.bat
TYPICAL USE: Sed takes one or more editing commands and applies all of
them, in sequence, to each line of input. After all the commands have
been applied to the first input line, that line is output and a second
input line is taken for processing, and the cycle repeats. The
preceding examples assume that input comes from the standard input
device (i.e, the console, normally this will be piped input). One or
more filenames can be appended to the command line if the input does
not come from stdin. Output is sent to stdout (the screen). Thus:
cat filename | sed '10q' # uses piped input
sed '10q' filename # same effect, avoids a useless "cat"
sed '10q' filename > newfile # redirects output to disk
For additional syntax instructions, including the way to apply editing
commands from a disk file instead of the command line, consult "sed &
awk, 2nd Edition," by Dale Dougherty and Arnold Robbins (O'Reilly,
1997; http://www.ora.com), "UNIX Text Processing," by Dale Dougherty
and Tim O'Reilly (Hayden Books, 1987) or the tutorials by Mike Arst
distributed in U-SEDIT2.ZIP (many sites). To fully exploit the power
of sed, one must understand "regular expressions." For this, see
"Mastering Regular Expressions" by Jeffrey Friedl (O'Reilly, 1997).
The manual ("man") pages on Unix systems may be helpful (try "man
sed", "man regexp", or the subsection on regular expressions in "man
ed"), but man pages are notoriously difficult. They are not written to
teach sed use or regexps to first-time users, but as a reference text
for those already acquainted with these tools.
QUOTING SYNTAX: The preceding examples use single quotes ('...')
instead of double quotes ("...") to enclose editing commands, since
sed is typically used on a Unix platform. Single quotes prevent the
Unix shell from intrepreting the dollar sign ($) and backquotes
(`...`), which are expanded by the shell if they are enclosed in
double quotes. Users of the "csh" shell and derivatives will also need
to quote the exclamation mark (!) with the backslash (i.e., \!) to
properly run the examples listed above, even within single quotes.
Versions of sed written for DOS invariably require double quotes
("...") instead of single quotes to enclose editing commands.
USE OF '\t' IN SED SCRIPTS: For clarity in documentation, we have used
the expression '\t' to indicate a tab character (0x09) in the scripts.
However, most versions of sed do not recognize the '\t' abbreviation,
so when typing these scripts from the command line, you should press
the TAB key instead. '\t' is supported as a regular expression
metacharacter in awk, perl, and in a few implementations of sed.
VERSIONS OF SED: Versions of sed do differ, and some slight syntax
variation is to be expected. In particular, most do not support the
use of labels (:name) or branch instructions (b,t) within editing
commands, except at the end of those commands. We have used the syntax
which will be portable to most users of sed, even though the popular
GNU versions of sed allow a more succinct syntax. When the reader sees
a fairly long command such as this:
sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d
it is heartening to know that GNU sed will let you reduce it to:
sed '/AAA/b;/BBB/b;/CCC/b;d'
In addition, remember that while many versions of sed accept a command
like "/one/ s/RE1/RE2/", some do NOT allow "/one/! s/RE1/RE2/", which
contains space before the 's'. Omit the space when typing the command.
OPTIMIZING FOR SPEED: If execution speed needs to be increased (due to
large input files or slow processors or hard disks), substitution will
be executed more quickly if the "find" expression is specified before
giving the "s/.../.../" instruction. Thus:
sed 's/foo/bar/g' filename # standard replace command
sed '/foo/ s/foo/bar/g' filename # executes more quickly
sed '/foo/ s//bar/g' filename # shorthand sed syntax
On line selection or deletion in which you only need to output lines
from the first part of the file, a "quit" command (q) in the script
will drastically reduce processing time for large files. Thus:
sed -n '45,50p' filename # print line nos. 45-50 of a file
sed -n '51q;45,50p' filename # same, but executes much faster
If you have any additional scripts to contribute or if you find errors
in this document, please send e-mail to the compiler. Indicate the
version of sed you used, the operating system it was compiled for, and
the nature of the problem. Various scripts in this file were written
or contributed by:
Dale Dougherty
Carlos Duarte
Eric Pement
S.G.Ravenhall
Greg Ubben
Lastly, look at a great online code cleaner and formatter (PRECAUTION: make sure you have backups of files, just in case):
http://www.decodephp.com/2007/12/19/php-code-cleaner-and-indenter/
Thursday, February 01, 2007
SSH key setup with PuttyGEN on Windoze and FreeBSD
2. Copy "Public key for pasting into OpenSSH authorized_keys file" that resides in the remote server at /.ssh/authorized_keys2
3. SSH into FreeBSD machine and run ssh-keygen -t dsa (to generate SSH-2 RSA keys) logged in as user you want to gain access to account. This also creates .ssh folder in user's ME with two files generated, i.e.:
$ pwd
/home/ME/.ssh
$ ls -la
total 8
drwx------ 2 ME ME 512 Feb 1 13:46 .
drwxr-xr-x 4 ME ME 512 Feb 1 13:46 ..
-rw------- 1 ME ME 1751 Feb 1 13:46 id_rsa
-rw-r--r-- 1 ME ME 404 Feb 1 13:46 id_rsa.pub
4. create public key file via $ vi myPUBkey.pub and then paste one line Public key that you copied earlier
5. ( OPTIONAL THOUGH NOT NECESSAY IN THIS CASE) --> On remote server convert public key to OpenSSH format:
$ ssh-keygen -i -f ~/.ssh/myPUBkey.pub > ~/.ssh/myPUBkey2.pub
6. Create authorized_keys file:
$ touch authorized_keys2 -> $ chmod 666 authorized_keys2
7. In .ssh folder cp (paste) myPUBkey2.pub generated into authorized_keys2 file:
cat ~/.ssh/myPUBkey2.pub >> ~/.ssh/authorized_keys2
8. $ chmod 600 authorized_keys2
9. Here is the entire process while shelled in:
$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/ME/.ssh/id_dsa):
Created directory '/home/ME/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ME/.ssh/id_dsa.
Your public key has been saved in /home/ME/.ssh/id_dsa.pub.
The key fingerprint is:
3D:56:D5:6H:45:BLAH BLAH BLAH ME@ME@web1.TESTSERVER.com
$ ls -la
total 22
drwxr-xr-x 3 ME ME 512 Feb 1 17:28 .
drwxr-xr-x 12 ME wheel 512 Jan 16 16:57 ..
-rw-r--r-- 1 ME ME 767 Jan 16 14:35 .cshrc
-rw-r--r-- 1 ME ME 248 Jan 16 14:35 .login
-rw-r--r-- 1 ME ME 158 Jan 16 14:35 .login_conf
-rw------- 1 ME ME 373 Jan 16 14:35 .mail_aliases
-rw-r--r-- 1 ME ME 331 Jan 16 14:35 .mailrc
-rw-r--r-- 1 ME ME 797 Jan 16 14:35 .profile
-rw------- 1 ME ME 276 Jan 16 14:35 .rhosts
-rw-r--r-- 1 ME ME 975 Jan 16 14:35 .shrc
drwxr-xr-x 6 ME ME 512 Feb 1 09:39 www
$ pwd
/usr/home/ME
$ cd
$ ls -la
total 24
drwxr-xr-x 4 ME wheel 512 Feb 1 17:30 .
drwxr-xr-x 12 ME wheel 512 Jan 16 16:57 ..
-rw-r--r-- 1 ME wheel 767 Nov 13 11:25 .cshrc
-rw-r--r-- 1 ME wheel 248 Nov 13 11:25 .login
-rw-r--r-- 1 ME wheel 158 Nov 13 11:25 .login_conf
-rw------- 1 ME wheel 373 Nov 13 11:25 .mail_aliases
-rw-r--r-- 1 ME wheel 331 Nov 13 11:25 .mailrc
-rw------- 1 ME wheel 0 Dec 6 13:35 .mysql_history
-rw-r--r-- 1 ME wheel 797 Nov 13 11:25 .profile
-rw------- 1 ME wheel 276 Nov 13 11:25 .rhosts
-rw-r--r-- 1 ME wheel 975 Nov 13 11:25 .shrc
drwx------ 2 ME wheel 512 Feb 1 17:29 .ssh
drwxr-xr-x 3 ME wheel 512 Jan 10 10:50 www
$ cd .ssh
$ ls -la
total 8
drwx------ 2 ME wheel 512 Feb 1 17:29 .
drwxr-xr-x 4 ME wheel 512 Feb 1 17:30 ..
-rw------- 1 ME wheel 1264 Feb 1 17:29 id_dsa
-rw-r--r-- 1 ME wheel 1126 Feb 1 17:29 id_dsa.pub
$ ~/.ssh/authorized_keys
/home/ME/.ssh/authorized_keys: not found
$ mkdir ~/.ssh/authorized_keys
$ ls -la
total 10
drwx------ 3 ME wheel 512 Feb 1 17:31 .
drwxr-xr-x 4 ME wheel 512 Feb 1 17:30 ..
drwxr-xr-x 2 ME wheel 512 Feb 1 17:31 authorized_keys
-rw------- 1 ME wheel 1264 Feb 1 17:29 id_dsa
-rw-r--r-- 1 ME wheel 1126 Feb 1 17:29 id_dsa.pub
$ vi rsa-key-20070201
ssh-rsa ENCRYPTED GOOBLE DI GOOP BLAH BLAH HIDDIE HO= rsa-key-20070201
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
rsa-key-20070201: new file: 1 lines, 226 characters
$ ls -la
total 12
drwx------ 3 ME wheel 512 Feb 1 17:32 .
drwxr-xr-x 4 ME wheel 512 Feb 1 17:30 ..
drwxr-xr-x 2 ME wheel 512 Feb 1 17:31 authorized_keys
-rw------- 1 ME wheel 1264 Feb 1 17:29 id_dsa
-rw-r--r-- 1 ME wheel 1126 Feb 1 17:29 id_dsa.pub
-rw-r--r-- 1 ME wheel 226 Feb 1 17:32 rsa-key-20070201
$ mkdir ~/.ssh/authorized_keys2
$ ls -la
total 14
drwx------ 4 ME wheel 512 Feb 1 17:33 .
drwxr-xr-x 4 ME wheel 512 Feb 1 17:30 ..
drwxr-xr-x 2 ME wheel 512 Feb 1 17:31 authorized_keys
drwxr-xr-x 2 ME wheel 512 Feb 1 17:33 authorized_keys2
-rw------- 1 ME wheel 1264 Feb 1 17:29 id_dsa
-rw-r--r-- 1 ME wheel 1126 Feb 1 17:29 id_dsa.pub
-rw-r--r-- 1 ME wheel 226 Feb 1 17:32 rsa-key-20070201
$ rm authorized_keys
rm: authorized_keys: is a directory
$ touch ~/.ssh/authorized_keys2
$ ls -la
total 14
drwx------ 4 ME wheel 512 Feb 1 17:33 .
drwxr-xr-x 4 ME wheel 512 Feb 1 17:30 ..
drwxr-xr-x 2 ME wheel 512 Feb 1 17:31 authorized_keys
drwxr-xr-x 2 ME wheel 512 Feb 1 17:34 authorized_keys2
-rw------- 1 ME wheel 1264 Feb 1 17:29 id_dsa
-rw-r--r-- 1 ME wheel 1126 Feb 1 17:29 id_dsa.pub
-rw-r--r-- 1 ME wheel 226 Feb 1 17:32 rsa-key-20070201
$ rm -r authorized_keys
$ rm -r authorized_keys2
$ touch ~/.ssh/authorized_keys2
$ ls -la
total 10
drwx------ 2 ME wheel 512 Feb 1 17:34 .
drwxr-xr-x 4 ME wheel 512 Feb 1 17:30 ..
-rw-r--r-- 1 ME wheel 0 Feb 1 17:34 authorized_keys2
-rw------- 1 ME wheel 1264 Feb 1 17:29 id_dsa
-rw-r--r-- 1 ME wheel 1126 Feb 1 17:29 id_dsa.pub
-rw-r--r-- 1 ME wheel 226 Feb 1 17:32 rsa-key-20070201
$ cat ~/.ssh/rsa-key-20070201 >> ~/.ssh/authorized_keys2