hatimerun – provides a time-out mechanism for shell scripts
Hello Everyone,
In day to day System Admin activities many times, you stuck to connect to any remote server, due to non-supporting timeout setting, here is the perfect solution for that ‘hatools’ – Thanks ‘MARKUS WINAND’, You can find this tool at http://www.fatalmind.com/software/hatools/
This tool will help you to manage your application and code with the specific timeout and lock, and you will be assure and go for sleep 😀
Download hatools from www.fatalmind.com (http://www.fatalmind.com/software/hatools/hatools-2.14.tar.bz2)
[root@testbed ~]# wget http://www.fatalmind.com/software/hatools/hatools-2.14.tar.bz2
[root@testbed ~]# tar xjvf hatools-2.14.tar.bz2 && cd hatools-2.14
The installation should be very seamless by just doing (Find the doc ‘README’)
[root@testbed hatools-2.14]# ./configure
[root@testbed hatools-2.14]# make && make install
Now test the hatimerun command
[root@testbed ~]# hatimerun -h
usage: hatimerun [-a] [-e exitcode] [-k signame] -t secs command [args]
hatimerun [-l|-h|-?]
Options:
-a Async mode. Starts hatimerun in the background
-e exitcode Changes the exitcode returned by hatimerun on fail
-k signame Specifies the signal witch will be sent to the process group
if a timeout occures
-t secs Specifies the timeout in seconds
-l Print list of available signals on this platform and exit.
Version:
V2.00
Copyright (c) 2001,2003,2005-2007 by Markus Winand <mws@fatalmind.com>
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
[root@testbed ~]# hatimerun -k TERM -t 15 -t 1 ssh testbed140 uptime
04:36:23 up 3:24, 0 users, load average: 0.51, 0.40, 0.31
Check with wrong or any ssh port blocked server and get timeout watch. 🙂
Here I am written small script for testing purpose, you can change and use as you want.
#!/bin/bash
# if you want to check and debug , run this script in following way
# bash -x script name <servername> <cmd>
server=$1 # server name or IP
cmd=$2 # command
sec=15 #Timeout seconds change as per your need
test -z $server && echo “server not found ” && echo “Usage: $0 {servername} {command}” && exit 1
test -z $cmd && echo “command not found ” && echo “Usage: $0 {servername} {command}” && exit 1
echo “connecting to $server, timewait set for connection is $sec Sec…….”
hatimerun -k TERM -t $sec -t 1 ssh $server $cmd
if [ $? != 0 ] ; then
echo “$server connection timeout …”
fi
-Ravi