poor mans watch, watch for solaris

Here is a simple script that you can use as watch in Solaris as well.

    #Poor man's watch
    while (true)
        sleep 2;

Rekursive Grep on Solaris or AIX Systems without GNU egrep -r funcionality

If you work regularly on a Solaris or systems which do not have the “-r” (recursive grep) for grep, then you know what a lifesaver this command can be.

Here is one from command line fu:

find . -type f -exec awk '/linux/ { printf "%s %s: %s\n", FILENAME, NR, $0; }' {} \;

The benefit of using awk here is that you can print the line number also 🙂

There are other versions that you can use:

find . -type f -exec grep "string here" {}\;

Some prefer with xargs:

find . -type f |xargs -n 1 grep "string here" {}\;
Enhanced by Zemanta

Add ssh key to remote host

Example of tunnelling an X11 application over SSH
Image via Wikipedia

If you are working on recent versions of the *nix OS like Fedora or Ubuntu then you would know about the commad ssh-copy-id. But if you land up using one of the older versions like Solaris or something where the command is not present, then probably you need a simpler solution to this. One of the simplest solution is with a lot of assumtions, simply copy the id_rsa file to remote server and hope it works. And here is  a script to do just that:

#!/bin/bash -
#          FILE:  add_ssh_key.sh
#         USAGE:  ./add_ssh_key.sh
#   DESCRIPTION:  Add the ssh key
#       OPTIONS:  ---
#          BUGS:  ---
#         NOTES:  ---
#        AUTHOR: Amit Agarwal (aka), amit.agarwal@roamware.com
#       COMPANY: Roamware India Pvt Ltd
#       CREATED: 09/19/2011 11:02:08 AM IST
# Last modified: Mon Sep 19, 2011  11:02AM
#      REVISION:  ---
IFS=$"\n' key=$(cat .ssh/id_rsa.pub)
ssh $un@$ip "echo $key >> ~/.ssh/authorized_keys"

or the other option is to copy the ssh-copy-id script to the server in question. If you don’t have the script handy, I am pasting it here:


# Shell script to install your public key on a remote machine
# Takes the remote machine name as an argument.
# Obviously, the remote machine must accept password authentication,
# or one of the other keys in your ssh-agent, for this to work.


if [ "-i" = "$1" ]; then
  # check if we have 2 parameters left, if so the first is the new ID file
  if [ -n "$2" ]; then
    if expr "$1" : ".*\.pub" > /dev/null ; then
    shift         # and this should leave $1 as the target name
  if [ x$SSH_AUTH_SOCK != x ] && ssh-add -L >/dev/null 2>&1; then
    GET_ID="$GET_ID ssh-add -L"

if [ -z "`eval $GET_ID`" ] && [ -r "${ID_FILE}" ] ; then
  GET_ID="cat ${ID_FILE}"

if [ -z "`eval $GET_ID`" ]; then
  echo "$0: ERROR: No identities found" >&2
  exit 1

if [ "$#" -lt 1 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
  echo "Usage: $0 [-i [identity_file]] [user@]machine" >&2
  exit 1

# strip any trailing colon
host=`echo $1 | sed 's/:$//'`

{ eval "$GET_ID" ; } | ssh $host "umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys" || exit 1

cat <<EOF
Now try logging into the machine, with "ssh '$host'", and check in:


to make sure we haven't added extra keys that you weren't expecting.

Enhanced by Zemanta