Run a local script on remote machine with parameters

So you have a script on the local machine and you want to run it remotely and pass arguments to it :


ssh user@remote 'cat | bash /dev/stdin param1 param2 .. paramN' < /usr/scripts/localscript.sh

😉 nJoy

 

Progress bar in bash

a=0;
for i in `cat $FOLDERLIST`
do
((a++))
percentage=`awk -v a=$a -v b=$NUMBEROFFOLDERS 'BEGIN {printf "%3.0f", a / b * 100; exit } '`

arrow=`printf '=%.0s' $(seq 1 $percentage)`
headed=`printf '%s%s' $arrow '>'`
paddedarrow=`printf '%-102s' $headed`
echo -ne "$paddedarrow  $a/$NUMBEROFFOLDERS [$percentage] \r "
done
echo

njoy  😉

Magic SysRq key

The “magic SysRq key” provides a way to send commands directly to the kernel through the /proc filesystem. It is enabled via a kernel compile time option, CONFIG_MAGIC_SYSRQ, which seems to be standard on most distributions. First you must activate the magic SysRq option:

echo 1 > /proc/sys/kernel/sysrq

When you are ready to reboot the machine simply run the following:

echo b > /proc/sysrq-trigger

This does not attempt to unmount or sync filesystems, so it should only be used when absolutely necessary, but if your drive is already failing then that may not be a concern.

In addition to rebooting the system the sysrq trick can be used to dump memory information to the console, sync all filesystems, remount all filesystems in read-only mode, send SIGTERM or SIGKILL to all processes except init, or power off the machine entirely, among other things.

 

nJoy 😉

Get detailed debugging info Elasticsearch node

curl -o – “http://localhost:9200/_nodes/process?pretty”

 

{
“cluster_name” : “prod-escluster”,
“nodes” : {
“NUyPv6zIQDS3wo_u_8FUaw” : {
“name” : “es01”,
“transport_address” : “inet[/192.168.1.147:9300]”,
“host” : “es-01.streamuk.com”,
“ip” : “127.0.0.1”,
“version” : “1.4.2”,
“build” : “927caff”,
“http_address” : “inet[/192.168.1.147:9200]”,
“attributes” : {
“master” : “true”
},
“process” : {
“refresh_interval_in_millis” : 1000,
“id” : 2185,
“max_file_descriptors” : 500000,
“mlockall” : false
}
}
}
}

Using document here in Bash script for sending a message to all who is loaded.

 
#!/bin/bash

wall <<zzz23EndOfMessagezzz23
E-mail your noontime orders for pizza to the system administrator.
    (Add an extra dollar for anchovy or mushroom topping.)
# Additional message text goes here.
# Note: 'wall' prints comment lines.
zzz23EndOfMessagezzz23

# Could have been done more efficiently by
#         wall <message-file
#  However, embedding the message template in a script
#+ is a quick-and-dirty one-off solution.

exit

 

nJoy 😉

Sample parameter validation script.sh

#!/bin/bash


echo "`basename $0` Tool"


[[ $# != 3 ]] && echo "Invalid number of arguments" && echo "Sample Call : create_ftp.sh <numeric_partner_id> <username_alphanum> <password_alphanum>" && exit 128

#number re
re='^[0-9]+$'

if [[ $1 =~ $re ]] ; then
		PARTNERID=$1
                echo "Partner id set to $1"
        else
        	echo "Invalid param #1 should be numeric" 
        	echo "Sample Call : create_ftp.sh <numeric_partner_id> <username_alphanum> <password_alphanum>" 
         	exit 128
         	
fi

re='^[a-zA-Z0-9][-a-zA-Z0-9]{0,61}[a-zA-Z0-9]$'
if [[ $2 =~ $re ]] ; then
		USERNAME=$2
                echo "Username set to $2"
        else
        	echo "Invalid param #2 should be alphanumeric" 
        	echo "Sample Call : create_ftp.sh <numeric_partner_id> <username_alphanum> <password_alphanum>" 
         	exit 128
         	
fi

if [[ $3 =~ $re ]] ; then
		PASSWORD=$3
                echo "Password set to $3"
        else
        	echo "Invalid param #3 should be alphanumeric" 
        	echo "Sample Call : create_ftp.sh <numeric_partner_id> <username_alphanum> <password_alphanum>" 
         	exit 128
         	
fi


 

njoy 😉