How to maintain currency of SOPs

SOP (Standard Operating Procedures) Optimization

  • Conduct a workshop to assess your SOP documentation and derive an action plan
  • Develop a risk management plan and associated procedures covering your IT-related operations
  • Implement risk-based methods in key processes and procedures, like validation planning, testing, change control
  • Streamline SOP’s pre-checks, implementation steps and post-checks. Automate wherever applicable to reduce the manual efforts and, importantly, to avoid human errors; whilst adhering to process resulting in improved turnaround time
  • Optimize selected processes using proven methods and techniques, deploy fully developed pre-filled templates, e.g. for testing or change tickets
  • Identify processes where automated tool support is highly beneficial and define business requirements for software tools. Remember to follow the approach    People >> Process >> Tools and avoid the reverse approach
  • Evaluate whether vendor support required for the chosen tools based on your business requirements. Support increases maintainence cost but there is always experts to help you out in burning situations
  • Manage the implementation and validation of selected software tools
  • Maintain the SOPs and knowledge objects in a repository which should be ease of use for end users with no frills and fancies.
  • Train your employees in applying the revised SOPs and seek feedback to make continuous improvement
  • Setup a quarterly review meeting with all stake holders including end users to make timely amendments and release SOPs by following standard approval process

Friendship Day

Once upon a time there were three best friends named Rosie, Lily and Shimmer; they were fighting. Rosie wanted to go to park but Lily wanted to go to the zoo but Shimmer wanted to go to shopping mall. Rosie got angry and went to a forest. She got trapped in a cave. After a while Rosie thought about her friends so she felt sad. Her friends missed her a lot. Rosie went deep into the cave she saw a bird she made it as her pet. Next day Rosie and her pet came out of cave. She saw a waterfall and saw her face and her friends faces. Then her friends came to her they hugged her. Suddenly Rosie fell down from her bed and said it’s just a dream then she went to play with her friends.

Moral – friends are always with us



(‘Byron’ – 3rdGrade, Mount Litera Zee School, Bangalore)

P.S: My 8 year old wrote this story for Friendship Day. I’m posting here without making changes 🙂

Happy Friendship Day!!

Telnet (NetCat) and Ping Script

Nowadays most of the Linux distros do not include Telnet. If needed we can install it using the usual methods.

Let’s embrace Netcat which is a best alternative to Telnet. Earlier I had written a Perl script which did Telnet and Ping checks across multiple hosts.

This script requires two input files ips.csv and ports.csv. As the name suggest all target host IP’s to be placed in ips.csv file and the ports to which to netcat is placed in ports.csv. Output is in HTML format and user receives an email with colour coded results.

Replace ips.csv & ports.csv file contents and change SMTP IP and email address.

Here is the Python script which replaces Telnet with Netcat.

Continue reading “Telnet (NetCat) and Ping Script”

Integrate Rundeck notifications with Slack

There are many plugins available for Rundeck to integrate with Slack. In this blog, I’ve explained in simple steps to configure Rundeck Job Notifications with Slack. This blog is useful for the use-cases like audit, monitor and maintain logs of Rundeck job executions.

I spent many hours of searching and fixing unexpected errors/issues in different version of Rundeck, which are all covered and documented as simple steps in this blog.

I’m using Higanworks’s plugin downloadable from GitHub


  • Single window to view all notifications from Rundeck {better than pile of emails}
  • Multiple users/groups can be notified by adding them to the notifications channel {no need to mess with distribution lists etc}
  • Logging and Auditing now made easier by using the powerful search options available in Slack


  • Rundeck 2.10.x or above {Running on CentOS 7}
  • openjdk version “1.8.0_171”
    OpenJDK Runtime Environment (build 1.8.0_171-b10)
    OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)
  • Rundeck-slack-incoming-webhook-plugin or above
  • Working Slack user account,
  • Dedicated channel for Rundeck notifications with webhook app enabled


Pre-Installation Steps

  • Create a new private channel in slack {e.g: rundeck_notifications}
  • Webhook URL for the newly created channel. Refer Slack guide

Install and Configuration Steps

By now server is ready with installation of Rundeck and plugin downloaded from the Github. Make sure Rundeck server has internet access to connect and send messages to slack.

  • Copy rundeck-slack-incoming-webhook-plugin-x.y.z.jar executable file to Rundeck’s libext directory {/var/lib/rundeck/libext}

2018-06-17 11_11_23-Mint [Running] - Oracle VM VirtualBox

  • After the above file is placed in the libext directory, Rundeck automatically configure the plugin and no further user actions required. No need to restart Rundeck service. Please refer Rundeck Plugins Installation Guide for further details.
  • Below screenshot show new option ‘Slack Incoming Webhook’ available while Creating/Editing jobs in Rundeck. Paste here the webhook generated for new rundeck_notifications channel


  • Sample output for reference. Slack channel rundeck_notifications showing notifications generated by Rundeck Job executions



Image Courtesy:

If you are facing any problem let me know by using ‘Comments’ section below and I will try my best to help you.

Rundeck SSL Configuration

Rundeck is an OSS that automate routine operational procedures in data center or cloud environments. Here is the blog to configure SSL on Rundeck for secure transaction within intranet and internet. This blog is a reference to configure SSL for Rundeck running on Linux (CentOS/Debian)

Phase 1:

Steps to generate self-signed PKCS#12 SSL certificate and export its keys:

  • Create PKCS#12 keystore (.pfx file)
#keytool -genkeypair -keystore myKeystore.pfx -storetype PKCS12 -storepass password -alias KEYSTORE_ENTRY -keyalg RSA -keysize 2048 -validity 99999 -dname "CN=My SSL Certificate, OU=Sustaining, O=Virtustream, L=McLean, ST=VA, C=US" -ext,dns:localhost,ip:,ip:xx.xx.xx.xx

Replace with FQDN of the Rundeck server and xx with Rundeck server IP address Continue reading “Rundeck SSL Configuration”

Convert Python 2.x code to 3.x

If you got a Python code written in 2.x version and need an easy way to convert to 3.x. Then use the online Python Code converter. Click here

This online converter saved me a lot of time and efforts by the conversion of a good number of scripts.

Python Script to Validate VMAX3 Hot Spare Drives Compliance

In VMAX3 or any enterprise-class storage arrays, hot spares are used to replace failing or failed disks in the storage array. Hot Spare drives need to be of the same configuration and size (can be larger) as that of the failing/failed disk. VMAX3 with Hypermax use Direct Sparing to automatically replace a failing disk. Please click here to know more…

This script would fetch hot spare drives count per VMAX3 array and generates a dash. This dash shows compliance report across all DCs.

Continue reading “Python Script to Validate VMAX3 Hot Spare Drives Compliance”