Ahoy there! This is my blog in which I jot down some of my experiences in IT (stuff related to my job and other random IT stuff). Hope you find something useful. My primary fields of interest in IT are Korn/Bash Shell Scripting, web/middleware/database technologies (ZXTM, Apache, WebLogic Server, Oracle, etc.), ICT Operations Management, ITIL and UNIX (any flavour/distribution).

Last weekend, I upgraded Windows Vista Ultimate to Windows 7 Ultimate on my Dell Studio xps laptop. I chose to upgrade, rather than perform a complete installation because I have too many programs and a lot of data on my laptop and I didn’t want any overhead in dealing with them. It’s just around seven months since I purchased my laptop and already my DVD drive isn’t working (will need to contact Dell Support and use the warranty). This is 2nd time I’m using the warranty on a Dell laptop to replace a DVD drive (the first time was with my Dell Inspiron 8500), but I still chose to buy Dell, only because Dell provided the most customization options when purchasing the laptop (now running out of patience with Dell).

So, with my DVD drive bust, I needed to perform the upgrade from a USB flash drive. I’ve been using USB flash drives for a few years and since the last couple of years, I’ve stuck with the retractable SanDisk Cruzer Titanium USB flash drives. I like the retractability and the solid build of these drives. I have the 2 GB and 8 GB capacities of the SanDisk flash drive and had to use the 8 GB  flash drive for the upgrade. The upgrade steps I performed are given below:

STEP 1: Choose the correct upgrade edition of Windows 7 Ultimate.

I first obtained the Windows 7 Ultimate N edition and then during installation, a window popped up telling me that I cannot upgrade from Windows Vista Ultimate to Windows 7 Ultimate N and need to do a complete install.

Refer to the Windows 7 upgrade paths to ensure you obtain the correct Windows 7 edition for your upgrade.

STEP 2: Download/Copy the Windows 7 Ultimate ISO image to your hard drive (use SSD if you have one for faster copying).

I downloaded the Windows 7 Ultimate ISO image (en_windows_7_ultimate_x64_dvd_x15-65922.iso – around 3 GB) to my laptop’s HDD.

If you’re downloading the ISO image, ensure that you have sufficient free space in your download location and you turn off your computer’s power saving feature so that your computer does not sleep.

Downloading the ISO frustrated me – my first attempt failed because Google Chrome simply balked after downloading 2.8 GB, my second attempt (using Mozilla Firefox) failed because my laptop went to sleep and I finally downloaded the entire ISO image successfully on my third attempt.

STEP 3: Create a Windows 7 Ultimate bootable USB flash drive

You cannot install/upgrade Windows 7 directly from the ISO. You first need to create Windows 7 bootable media. Popular media are DVDs and USB flash drives (USB 2.0 flash drives are faster than current DVDs for data reading/writing operations and this advantage will significantly increase with USB 3.0). Microsoft provides a free Windows 7 USB/DVD Download tool. If Microsoft removes this tool from their website (I believe there was an issue with using some open source code in the software), then you can get it from other websites or let me know and I can provide you with the tool. Screenshots of the tool are given below:

windows7 USB/DVD Download Tool - STEP 1

Windows 7 USB/DVD Download Tool - STEP 2

Windows 7 USB/DVD Download Tool - STEP 3 

Windows 7 USB/DVD Download Tool - STEP 4 

STEP 4: Prepare for Upgrade

Use the Windows 7 Upgrade Advisor to ensure you meet all the requirements for the upgrade. I had to install Windows Vista Ultimate updates and SP1 to meet the requirements.

 

STEP 5: Upgrade

Click the “setup” file on your Windows 7 Ultimate bootable flash drive and proceed with the upgrade. You will be required to reboot your computer a few times. I don’t remember how long this process took as I was doing it while half asleep at night. All I know, come dawn, I woke up to Windows 7 Ultimate on my laptop.

My first impressions of Windows 7 Ultimate:

So, I’ve used Windows 7 Ultimate only for a week and haven’t really explored much, but some of the good features that impressed me straight away:

(1) Very fast: Windows 7 Ultimate is the fastest Windows OS I have ever used. Perhaps, running the 64-bit version on a dual-core chip with 4 GB plays a major role, but I can perform routine operations quickly.

(2) Jump Lists: No more looking for “Recent Documents” and thinking about where you stored a specific resource. Just use the “jump list” on the appropriate program and you can jump right away to what you want. Given below is a screenshot of my Adobe Reader jump list displaying the recent pdf files I used.

AcrobatReader_JumpList

(3) Snap: Drag windows to screen edges and they resize appropriately. I found this especially useful when using programs that required me to “drag and drop” files from an explorer window into the program’s window (an example of such a program is the Samurai Thread Dump Analyzer).

Well, there is a lot more for me to explore in Windows 7 and I’m specifically interested in Windows 7 Ultimate features like SUA.

VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

Is service fine? What’s the impact to service? These are some of the key questions often asked by IT management in relation to their company’s IT services. In many cases, attempts are made to answer these questions by checking various system health monitors. In rare cases, these questions can be answered accurately by directly asking the customer(s) (although this will give an indication that you’re not in control). So, how do we know a customer’s experience of an IT service? The simple answer – by putting yourself in the customer’s shoes and trying to do what he/she does when using the service. However, implementation of this “customer experience” is not always straightforward, especially in enterprises having complex IT systems. Given below, is an illustration of Customer Experience Testing (CET).

 

CET.png

 

CET is testing a product or service from a customer perspective. CET contributes greatly towards helping you provide an excellent customer experience for your product or service.

Why would Organizations avoid CET?

  • Time
  • Money
  • Complexity

Time and money are the primary reasons why some organizations don’t implement CET even for business-critical services. Some organizations are put off by the complexity of their IT systems. However, this is a big mistake, because if CET is designed and implemented properly, it will actually save time and money.

How do you implement CET?

Design CET: CET is not just a process – it’s also a solution and so must be catered to in solution/system/end-to-end designs. A couple of reasons often given for not testing a particular service like a customer would do, are lack of test data and lack of a process for backend systems/implementers to identify a test. A few years ago, my colleagues and I were working on a problem with the payment fulfilment on a telecom giant’s website. Quite a few customers had reported problems with certain shopping journeys on the website. We wanted to simulate the problem and troubleshoot, but we did not have credit/debit card details to do so and staff were apprehensive of using their own cards due to the cumbersome process involved in getting a refund. We eventually fixed the problem, but had to rely heavily on customer feedback and that would not have made the customer comfortable. If we had test data and an end-to-end CET solution to place an order, then we could have been proactive and identified the fault before the customer reported it and we would have been able to fix the problem confidently and quickly and provide excellent customer satisfaction.

Know your use cases: A well-designed CET solution will use a CET Test Robot – a system that automates interaction with your product or service. In order to ensure that the CET test robot simulates a customer’s interaction with your product/service as closely as possible, you must know all your product’s use cases (what your product/service is designed to cater to) and setup the test robot to execute the use cases and validate responses regularly. Depending on your customer profile, using more than one CET robot and locating them across various locations in which your product/service has customers will provide you a better idea of customer experience.

Know your customer interaction: No matter how much time you spend on identifying use cases, at times, a customer will interact with your product/service in a way that you least expect (and consequently not covered by your use cases). So, how do you simulate these customer interactions in your CET testing? Well, you cannot simulate what you you cannot see. So, you need to know how your customers interact with your product/service. That’s why a solution which records customer interaction across all systems enabling a product/service must be implemented. This solution is sometimes part of “MIS” or “Business Intelligence” initiatives within organizations.

Know your customer: Machines can never completely replace humans (at least I’d like to think so!). While CET Test robots automate use case tests and MIS solutions record customer interaction, there is the possibility of not covering/recording every possible customer interaction. So, that’s why human intelligence is a also a key part of CET Testing – a CET Test Analyst. Rather than just execute a document of standard use cases and recorded customer interactions, the test analyst must think “out-of-box” and try to test the product/service as if he/she were a customer using that product/service. To enable this, the test analyst must work closely with the Support staff (and the customers) to understand the various problems reported by customers and customers’ inclinations. Over time, an experienced CET test analyst will be able to test an almost exhaustive list of customer interactions, thereby playing a vital role in ensuring customer satisfaction.

Use Dashboards: It will be enormously useful to feed the results of CET testing performed by robots and analysts to a dashboard application, so that at any time, the service’s stakeholders can view the status of various services, closely, if not accurately reflecting the usability of these services by the customers. To be useful, the dashboard must be simple, clear and provide the required information about services in an instant to its viewers. You may also choose to make such dashboards public so that in addition to the maintenance pages, you can provide one clear view of the status of all the services your organization provides.

What are the benefits of CET?

  • Tests the end-to-end business process from a customer perspective
  • Gives you a good idea (almost WYSIWYCS – What you see is what your customer sees) of the customer’s experience of a product/service at all times
  • Enables you identify problems with a product/service quickly, take proactive action to notify customers and fix the problem

In large enterprises, CET may not be easy to implement. However, given its huge benefits, CET is a must-have for customer-centric organizations and is definitely a worthwhile investment.

VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

Today, most enterprise systems are complex, requiring several systems to implement services, thereby creating several system interfaces. A basic monitoring requirement is to check if the system stack is broken. i.e. whether system interfaces are broken. Although almost all software products have some sort of "health monitor" to test connectivity with an interfacing system, it can be handy to have a standard utility to test all interfaces. Well, there is the wonderful "netcat" utility which can easily meet this requirement. Unfortunately, netcat is not standard on all UNIX systems (e.g. Solaris) and you may have constraints (e.g. company policy) which prevent you from installing netcat.

sconn is a simple korn shell script which helps you monitor socket connectivity for system interfaces. It’s basically a wrapper around a perl script which tests the connectivity. A simple script in perl alone would have sufficed, but as I’m not familiar with perl, I used the korn shell to meet my requirements. More people will be familiar with shell scripting than with perl and so if others have similar requirements, sconn could be used as-is or tweaked.

How sconn works:

sconn.png

 

Screenshots:

(1) Configuration

Configuring sconn

(2) Execution

Executing sconn 

(3) Output

sconn output files

Recommendations:

  • Execute sconn regularly as a cron job for continual monitoring.
  • Feed sconn data and/or statusnow files to a dashboard or graphing program.

 

Version 1: Last updated – 22:56 GMT, 24th November 2009

Download sconn v1.0

 

NOTE:

(1) sconn has been scanned and is safe to download.

(2) sconn has been tested. If you wish to use sconn, I recommend you also test it before deploying it on a Production system.

(3) Your rating of this post/software will be greatly appreciated. Also, feel free to leave comments.

VN:F [1.6.5_908]
Rating: +1 (from 1 vote)

Shmon is a bash script (which uses a teeny weeny bit of perl) that monitors a Solaris (versions 8,9 and 10) host. When executed as a cron job, Shmon provides basic, but vital monitoring of key system parameters.

 

How Shmon works:

 Shmon.png

 

Version 1: Last updated – 6:44 PM GMT, 2nd December 2009

Download Shmon v1.0 Download Shmon v1.0 User Guide

 

NOTE:

(1) Shmon is a basic bespoke software developed to meet my specific requirements.

(2) Shmon has been scanned and is safe to download.

(3) Shmon has been tested. If you wish to use Shmon, I recommend you also test it before deploying it on a Production system.

(4) Your rating of this post/software will be greatly appreciated. Also, feel free to leave comments.

VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

UNIX shell commands return exit statuses or exit codes upon completion, irrespective of whether successful or not. In UNIX, an exit status of 0 indicates successful execution of a command and a non-zero exit status indicates a failure. Some shells (e.g. ksh93) document the various exit statuses and their meanings. So, checking exit statuses of commands is typically done in programs like shell scripts to decide further action to be taken by the script.

However, piped commands or a pipeline (cmd A | cmd B), add a twist to checking exit statuses as by default, most UNIX shells adhere to the POSIX requirement of returning the exit status of the last command in the pipe. Refer the example below:

 

#
# Two commands piped and both commands are successful.
#
$ grep MemTotal /proc/meminfo | awk '{print $2}'; echo "EXIT STATUS = $?"                                                                      
1056836
EXIT STATUS = 0
#
# Two commands piped and first command throws an error.
# Note that the EXIT STATUS is still 0
#
$ grep MemTotal /proc/meminf | awk '{print $2}'; echo "EXIT STATUS = $?"
grep: /proc/meminf: No such file or directory
EXIT STATUS = 0

 

So, checking the exit status of a pipeline as in the above example will cause problems for your script if any of the piped commands other than the last command throw an error. Given below are two solutions (using ksh93 and bash) to solve this problem and ensure a valid exit status check for a pipeline:

SOLUTION 1: Using ksh93 and the pipefail option

The Korn Shell 1993 version ‘g’ point release (ksh93g) introduced a pipefail option which ensures that the exit status of a pipeline will be that of the first command in the pipe that has failed (of course, the exit status of the pipeline will be 0 if all commands in the pipe succeed). Unfortunately, ksh88 is distributed as the default Korn Shell with most UNIX systems (with all Solaris versions I believe) because ksh93 is owned by Lucent and AT&T and there were licensing restrictions. Refer I (Q.14) and III (Q.8) of the Korn shell FAQs at http://kornshell.com/doc/faq.html

An example of how the pipefail option is used is shown below:

 

#
# Check ksh version
#
$ ksh --version
  version         sh (AT&T Research) 93s+ 2008-01-31
#
# Set pipefail option on (it's off by default)
#
$ set -o pipefail
#
# Now, notice the non-zero exit status due to the error in the first command
#
$ grep MemTotal /proc/meminf | awk '{print $2}'; echo "EXIT STATUS = $?"
grep: /proc/meminf: No such file or directory
EXIT STATUS = 2

 

Note: There are other solutions using ksh88 with co-processes and file descriptor manipulation, but those solutions are not script-friendly.

 

SOLUTION 2: Using bash and the PIPESTATUS array

The bash shell uses an array called PIPESTATUS to store the exit statuses of commands in a pipeline.

 

#
# Using the PIPESTATUS array to display exit statuses of both commands in the pipe
#
mrkips@mrkips-laptop:~$ grep MemTotal /proc/meminf | awk '{print $2}'; echo "EXIT STATUS = ${PIPESTATUS[0]}"
 
grep: /proc/meminf: No such file or directory
 
EXIT STATUS = 2
 
 
mrkips@mrkips-laptop:~$ grep MemTotal /proc/meminf | awk '{print $2}'; echo "EXIT STATUS = ${PIPESTATUS[1]}"
 
grep: /proc/meminf: No such file or directory
 
EXIT STATUS = 0

 

Be aware of SIGPIPE

SIGPIPE is a signal sent to a process (that causes the process to terminate) that writes to a pipe when there is nothing to read from the pipe. If you use any of the above mthods to check the exit status of a pipeline and a SIGPIPE is received by one of the commands in the pipeline, then your exit status may not correlate with the success/failure of the pipeline.

For example, in the command,

ls -lrt | head -1

“ls -lrt” writes to a pipe and “head -1″ reads from that pipe. Now, “head -1″ only requires the first line from the pipe and as soon as it gets it, it terminates and sends a SIGPIPE (signal 13) to “ls -lrt” causing “ls -lrt” to terminate with a non-zero exit code.

 

NOTE:

(1) The how-to above describes how I implemented something and may not be the only method of implementation.

(2) Your rating of this post will be much appreciated. Also, feel free to leave comments.

VN:F [1.6.5_908]
Rating: +2 (from 2 votes)

 Page 3 of 12 « 1  2  3  4  5 » ...  Last »