Wednesday, July 15, 2015

Windows command line Tricks for Better, Faster Administration

Windows CMD commands for life made easy for WebLogic, OFMW, WebSphere, Tomcat, JBoss Administrators.

Windows shortcuts will shave our time more. Especially working on Windows 8.1 is more complex than previous so I pulled out some of the important commands which will make your life easy.
Some of them are collected from the daily works in OFMW administrator.

Linux like commands in Windows
Mapping of SHELL command with CMD commands

How to set the proxy in CMD?


You need to run the following command in the CMD to set the proxy.
set HTTP_PROXY=http://your_proxy:your_port
set HTTPS_PROXY=https://your_proxy:your_port

How to add a IP, DNS to your Windows hosts file?

The Linux OS maintains /etc/hosts and it can be editable only by root user. Whereas, in Windows OS same file is available at c:\windows\system32\drivers\etc\hosts. This will be same for Windows 7 and Windows 8.1. You could also check in the hot Windows 10. Hence the command to edit this :
start notepad c:\windows\system32\drivers\etc\hosts
You can also use WindowKey + R and paste:
notepad c:\windows\system32\drivers\etc\hosts 
in the Open text box and click on 'Ok' button.

How do I open Environment Variables Windows   from command prompt?

When you work for installing OFMW product installation on Windows system you might setting the PATH, WL_HOME, CLASSPATH, JAVA_HOME in the environment variables to work more efficiently from the command prompt instead of setting in the command prompt. If you set these variables in the User defined environment variables we must open a fresh cmd prompt.

I've Windows 8.1 system on command prompt executed the following command
rundll32 sysdm.cpl,EditEnvironmentVariables

You could also run in the Run window :
 

Where is Java installed in Windows (which/where commands like in Linux)?

You can find the path where Java is installed using the following dir command with search option applied on java.exe file:

C:>dir /b /s java.exe

How to find WebLogic server PID with Port in Windows?


On Windows platform you can use netstat command with -n -a -o options which works same as in Linux platforms. Filter of the process id list can be done with ^| (cap followed by pipe).  Then you can use it for terminating by taskkill command.

FOR /F "tokens=4 delims= " %P IN ('netstat -a -n -o ^| findstr :7001') DO ^
@ECHO TaskKill /PID %P /f /t

In batch scripts you can use %%P if it is command line you can only use %P. If your system is Windows 7 then you need tokens=5. Above command only that matches :7001 port mapped pid with message taskkill command option. You can kill by copy paste out of them which are really matches to weblogic running process or you directly remove the @echo and execute, if that above command give accurate process list. Note: Double check the process list.

How to find the Free Available Memory from CMD as in Linux free -m?


In Windows about Total, Free, Virtual Memory info we can get from systeminfo, it is a command that will output system information, We can filter out Mem string using findstr
D:\>systeminfo |findstr Mem
Total Physical Memory:     16,294 MB
Available Physical Memory: 12,798 MB
Virtual Memory: Max Size:  20,390 MB
Virtual Memory: Available: 15,792 MB
Virtual Memory: In Use:    4,598 MB


Killing NodeManager in Windows using Taskkill command


In the Windows we can do this task from the task manager. Here I can get the PID of NodeManager using jps command.
It is Linux kill/pkill like command is taskkill for Windows. You need to know the options how to use it for terminating the process. You could get the help by typing the
 taskkill /? 

Sample taskkill example for killing NodeManager process.
C:\>jps
6312 NodeManager
2524 WLST
10376 Jps

C:\>taskkill /pid  6312 /f /t
SUCCESS: The process with PID 6312 (child process of PID 2524) has been terminated.

I use this whenever I want to force an immediate reboot:
shutdown -t 0 -r -f

For a more friendly "give them some time" [GRACEFUL SHUTDOWN] option, you can use option with time interval like this:
shutdown -t 30 -r
As you can see in the comments, the -f is implied by the timeout.

Here's how to do the shutdown functions via a batch file:
·        shutdown -r — restarts
·        shutdown -s — shutsdown
·        shutdown -l — logoff
·        shutdown -t xx — where xx is number of seconds to wait till shutdown/restart/logoff
·        shutdown -i — gives you a dialog box to fill in what function you want to use
·        shutdown -a — aborts the previous shutdown command....very handy!
·         
Additional options:
·        -f — force the selected action
·         -m -- option for remote shutdown:
shutdown -r -f -m \\machinename
Note that:

  • The -r parameter causes a reboot (which is usually what you want on a remote machine, since physically starting it might be difficult).
  • The -f parameter option forces the reboot.
  • You must have appropriate privileges to shut down the remote machine, of course.
What is the CMD line continuation character?
A. The caret (^) symbol is the cmd.exe line-continuation character that allows you to continue a command on multiple lines

Java silent mode installation in Command line in Windows


This would be typical requirement where you could do the automation for your Window box installations of your OFMW produtcts. Where JDK is pre-requisites for all products. Hence lets know this awesome trick JDK installation from command :


c:\OFMW\jdk-7u79-windows-x64.exe /s /v /qn  ADDLOCAL=ToolsFeature INSTALLDIR=C:\Java /L C:\jdk.log





The above command will install the JDK at give INSTALLDIR here it is C:\Java. Normally JDK installer will run a wizard and ask questions in GUI, when you use /qn it will off the UI for installer.

where this also include the installation of tools.jar, locale features also installed with ADDLOCAL option.


Note: The INSTALLDIR cannot be overridden, if one time JDK installed you cannot install in other path. You need to uninstall from control panel.

RDP

Remote Desktop starting from CMD
You can run with ‘mstsc’ command utility
start mstsc

Run Services

·        Type "start services.msc" to open services Window

Windows Tools

Daily works sometimes we need boost up our work with using external tools that won’t be available with Windows OS. Here I’ve collected some of the useful links for everyone.

ProcessExplorer

This works like Linux utility ‘top’ command gives us the clear sorted process related info. You could kill a process or manage them to avoid issues.

bareTail

tail command like tool with effective UI for Windows.

Gow

GNU on Windows people who are more habituated with Linux/Unix platforms feel uncomfortable to work on Windows CMD. Here is a alternative. After downloading this update your environment variable PATH with this will give Linux commands outputs from C++ compiled code.

Everything

Microsoft search sometimes makes us stuck, no worries we have Everything’’  search tool helps you to find faster way for searching files.

TCPView

To see the TCP ports in use on a Windows
https://download.sysinternals.com/files/TCPView.zip



Wednesday, April 1, 2015

WebLogic Wrapper Scripts

Administrators with automation skill would perform than many admins. Requirement makes you to write automation scripts. I was working on Oracle Virtual Box, which is running SSH service. Hence I am able to connected thru PUTTy to the ubuntu Guest Linux server. By making Static IP configuration on the additional network adapter this was happen to possible.

 Everything going good! when I ran the WebLogic server from the PuTTY. It is working until when it is connected and alive. Once I went for break/Lunch the Windows system went to sleep then WebLogic server stopped due to PuTTY session inactive. To avoid this we can use the Wrapper start scripts.

 Idea behind the wrapper script/ psuedo code

  1. Using the startWebLogic.sh script in background using &
  2. use the nohup -- no hungup to run the process even the PuTTY inactive or closed
  3. The log file generated by starting WebLogic server redirected to a separate file.
  4. The Standard error file also merged with standard output log 
  5. Display the tail command after doing the above
  6. Additionally you can add back up of old WebLogic file with a time stamp this can be applicable in Production environments.
Startup Wrapper Scripts

Start WebLogic Admin Server with wrapper script

Here is the nohup usage sample:
$ nohup /domain/path/startscript.sh &

No hangup

The nohup UNIX command only writes to nohup.out if the output is otherwise to the terminal. If you redirect the output of the command somewhere else - including /path/redirect or some casees you can use /dev/null - that's where it goes instead.

nohup startWebLogic.sh >/path/redirect 2>&1   # doesn't create nohup.out

In modern bash and zsh (but not ksh) SHELLs you can shorten that to >&/path/redirect.

You can also use as follows:

nohup startWebLogic.sh >/path/redirect 2>&1&


Applying the above ideas into the wrapper scripts you can write a sample startAdmin.sh script in your WebLogic Domain.

New thoughts implemented that is logs path would be automatically created by the script now. I had this for long time but today 01-April-2015 came to improved version as 0.2 as published now!
#!/bin/bash
# Purpose : WebLogic AdminServer wrapper script which redirects logs to admin.out
# Author : Pavan Devarakonda  ver 0.2
# Category  : WebLogic Best Practices
# Override  : Yes, You can modify LOGDIR, LOGPATH values 

clear
DOMAIN_HOME=${PWD}
SERVER_NAME=`ls $DOMAIN_HOME/servers/|grep -i adm`
echo $SERVER_NAME
LOGDIR=$DOMAIN_HOME/$SERVER_NAME/logs
LOGPATH=$LOGDIR/$SERVER_NAME.log


if [ -d $LOGDIR ]; then
 nohup bash -c "$DOMAIN_HOME/startWebLogic.sh 2>&1 >>$LOGPATH" &
 echo .
 echo "Starting admin server..."
 echo "tail -f $LOGPATH"
 exit 0
else
 echo "Log path doesn't exists... creating directory now!!"
 mkdir -p $LOGDIR
 ./$0
fi 

Similarly you can write the wrapper codes for WebLogic Managed servers, NodeManager start scripts, so that you keep running your WebLogic related services without any hangs :)

 ii. Customized start managed server script

The above wrapper scripts there must inclusion of domain name recommended for non-production or multiple domains running on the same machines. There is a need to specify speparate standard output file path, if it is pre-production or Performance load testing environment you must also include GC logs path. Some of the WebLogic managed servers must include PRE_CLASSPATH that need to be processed before weblogic.jar in the CLASSPATH and some of the library jar files must be processed after the weblogic.jar, set them in a separate directories pre and post. Add them to CLASSPATH and it must be exported before startWebLogic.sh or startManagedWebLogic.sh called.

The following start wrapper script saved as "startms.sh" assuming that you might need few instance specific properties need to refer in startWebLogic.sh script. 


#==================================================
# The managed server name as argument for this script
# File : startms.sh  
# Usage: ./startms.sh mymanaged01  
#====================================================
INSTANCE=$1
export INSTANCE # not mandatory 
SOURCE=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
cp $INST_HOME/$INSTANCE/logs/$INSTANCE.out $INST_HOME/$INSTANCE/logs/$INSTANCE.out.bkp
nohup $SOURCE/startManagedWebLogic.sh $INSTANCE >$INST_HOME/$INSTANCE/logs/$INSTANCE.out 2>&1 &
echo tail -f $INST_HOME/$INSTANCE/logs/$INSTANCE.out

Here $INST_HOME is defined in the user profile script.

These customized start scripts for admin server and managed servers. In the script make a copy of the last server instance log to instance.out_bkp. Some times due to some panic situations servers might crashed, after monitoring you found that it happen so restarting server should not loss that lost logs. If you maintain the backup of logs file automatically before starting the instance, then you are saved with that backup log file for further analysis about that crash.

Here in the above script, most of the UNIX/Linux environments it would work fine. Your script could use "nohup" that means no hung up when the remote machine is accessed with tools like SSH/PuTTY.

Some older environments (before WebLogic 12c) using JRockit as Java vendor. Better you include the following lines in the wrapper scripts will run in JRockit JVM.

JAVA_VENDOR="BEA"
export JAVA_VENDOR



If you create this script in development/QA environment same script can be used for UAT/PRE-Production or Production because keeping it more portable and flexible with SDIR (source directory path).

WebLogic NodeManager log generation


Node manager gives standard out file which can be collected by redirecting to a file nm.out.
#!/bin/bash
clear
nohup ./startNodeManager.sh  >> nm.out 2>&1 &
tail -f nm.out

# To run the NodeManger wrapper script give permissions
chmod +x startNM.sh

#Run the NM
./startNM.sh

Keep writing us your comments for betterment in this blog.

Blurb about this blog

Blurb about this blog

Essential Middleware Administration takes in-depth look at the fundamental relationship between Middleware and Operating Environment such as Solaris or Linux, HP-UX. Scope of this blog is associated with beginner or an experienced Middleware Team members, Middleware developer, Middleware Architects, you will be able to apply any of these automation scripts which are takeaways, because they are generalized it is like ready to use. Most of the experimented scripts are implemented in production environments.
You have any ideas for Contributing to a Middleware Admin? mail to me wlatechtrainer@gmail.com
QK7QN6U9ZST6