Get status of your servers with perl script.

Monitoring the servers could be well – “not difficult” but boring and monotonous. And since this is something that you should ideally do on daily basis, so why not have a script for the same.

You can’t possibly copy your ssh-keys to all the servers that you are monitoring, better if you can, then you need to do ssh to server with password. So, here is link to my github repo for monitoring servers with perl script. Preety straight forward script and you can schedule this in cron to get a daily mail.

Link to repo.

The script covers solaris and Linux ( i.e. Ubuntu/Fedora/Debian/ideally any distro)

Do let me know in comments, if you feel something is missnig.

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:
#         USAGE:  ./
#   DESCRIPTION:  Add the ssh key
#       OPTIONS:  ---
#          BUGS:  ---
#         NOTES:  ---
#        AUTHOR: Amit Agarwal (aka),
#       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/
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

ss – utility to investigate sockets.

Sometimes, you find some interesting application/command by accident, and that is just what happened a few days back. Well, I was doing a ssh and as usual made my share of mistake in typing and missed the “h” from the ssh command and saw a list of options instead of my prompt on remote server.

Now, that set me thinking and fond that its a very interesting command that comes with iproute on Fedoara, so if you want this command, then install iproute like this

 sudo yum install iproute

and then you can see the help with

man ss


By default, without any options you will see a list of all open sockets on your system.

There are a lot of options that you can use and couple of them are very interesting a useful.

-m — shows the memory

p — process associated with the socket.

-i — shows the TCP internal information

There are some other options which you might find useful.

Enhanced by Zemanta