Posts tagged: shell script

Bash shell script for test the availability about commands in the filesystem

The objective is the reuse about variables and why not all GNU/Linux distributions installs the commands by default in the same place

I am going to allocate  a variable per each different command. This file will be included in other shell scripts.

preferences.cfg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
CMD_AWK="/usr/bin/awk"
CMD_CAT="/bin/cat"
CMD_CHGRP="/bin/chgrp"
CMD_CHMOD="/bin/chmod"
CMD_DD="/bin/dd"
CMD_DIFF="/usr/bin/diff"
CMD_ECHO="/bin/echo"
CMD_FIND="/usr/bin/find"
CMD_GREP="/bin/grep"
CMD_LAST="/usr/bin/last"
CMD_LASTB="/usr/bin/lastb"
CMD_LS="/bin/ls"
CMD_LSB_RELEASE="/usr/bin/lsb_release"
CMD_MKDIR="/bin/mkdir"
CMD_MKFS="/sbin/mkfs.ext2"
CMD_MKNOD="/bin/mknod"
CMD_MOUNT="/bin/mount"
CMD_MYSQL="/usr/bin/mysql"
CMD_PHP="/usr/bin/php5"
CMD_SED="/bin/sed"
CMD_SEQ="/usr/bin/seq"
CMD_SORT="/usr/bin/sort"
CMD_STAT="/usr/bin/stat"
CMD_TAIL="/usr/bin/tail"
CMD_TOUCH="/bin/touch"
CMD_TUNE2FS="/sbin/tune2fs"
CMD_UNAME="/bin/uname"
CMD_YES="/usr/bin/yes"
CMD_WC="/usr/bin/wc"

 

This shell script "preferences.bash" checks the availability about each command defined in the variables saved in the data file "preferences.cfg".

preferences.bash

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
# Check the availability about the commands that will be used
 
# Include global preferences
source $PWD/preferences.cfg
 
CMD=$($CMD_CAT $PWD/preferences.cfg)
 
echo -e "Check the availability about the commands that will be used \r"
 
# Checks if path is ok
for line in $CMD;
do
        TEST=$($CMD_ECHO "$line" | $CMD_AWK -F= '{ print $2 }' | $CMD_SED 's/"//g')
 
        echo -n ""
        if [ -e $TEST ]; then
                echo -n "[Passed]"
        else
                echo -n "[Failed]"
        fi
 
        echo -n " ... $TEST"
        echo -e "\r"
done;

 

Sample output

Check the availability about the commands that will be used
[Passed] … /usr/bin/awk
[Passed] … /bin/cat
[Passed] … /bin/chgrp
[Passed] … /bin/chmod
[Passed] … /bin/dd
[Passed] … /usr/bin/diff
[Passed] … /bin/echo
[Passed] … /usr/bin/find
[Passed] … /bin/grep
[Passed] … /usr/bin/last
[Passed] … /usr/bin/lastb
[Passed] … /bin/ls
[Passed] … /usr/bin/lsb_release
[Passed] … /bin/mkdir
[Passed] … /sbin/mkfs.ext2
[Passed] … /bin/mknod
[Passed] … /bin/mount
[Failed] … /usr/bin/mysql
[Failed] … /usr/bin/php5
[Passed] … /bin/sed
[Passed] … /usr/bin/seq
[Passed] … /usr/bin/sort
[Passed] … /usr/bin/stat
[Passed] … /usr/bin/tail
[Passed] … /bin/touch
[Passed] … /sbin/tune2fs
[Passed] … /bin/uname
[Passed] … /usr/bin/yes
[Passed] … /usr/bin/wc
 

bash shell script for set the memory RAM values of all the virtual machines availables (DMC dynamic range limits) in a Xen XCP domain

This bash shell script reads from file the configuration (Memory.pref) about the predefined virtual machines memory ram values and sets the values for each one virtual machines available (DMC dynamic and static range limits) in a Xen XCP domain.

Memory.bash

      1 #!/bin/bash
      2 VM_NAMES=$(for i in `xe vm-list params=name-label | grep "name-label" | grep -v "Control" | sort | awk -F": " ‘{ print $2 }’`; do echo $i        ; done)
      3 for VM_NAME in $VM_NAMES;
      4 do
      5    UUID=$(xe vm-list name-label=$VM_NAME params=uuid | grep uuid | awk -F": " ‘{ print $2 }’)
      6    if [ $? -eq 0 ]; then
      7       LIMITS=$(cat Memory.prefs | grep $VM_NAME)
      8       if [ $? -eq 0 ]; then
      9          MINIMUM_DYN=$(echo $LIMITS | awk -F":" ‘{ print $2 }’)
     10          MINI_DYN=$[$MINIMUM_DYN * 1024 * 1024]
     11          MAXIMUM_DYN=$(echo $LIMITS | awk -F":" ‘{ print $3 }’)
     12          MAXI_DYN=$[$MAXIMUM_DYN * 1024 * 1024]
     13
     14          MINIMUM_ST=$(echo $LIMITS | awk -F":" ‘{ print $4 }’)
     15          MINI_ST=$[$MINIMUM_ST * 1024 * 1024]
     16          MAXIMUM_ST=$(echo $LIMITS | awk -F":" ‘{ print $5 }’)
     17          MAXI_ST=$[$MAXIMUM_ST * 1024 * 1024]
     18
     19          #echo "DYN: $MINIMUM_DYN as $MINI_DYN ….VS… $MAXIMUM_DYN as $MAXI_DYN"
     20          #echo "ST:  $MINIMUM_ST as $MINI_ST ….VS… $MAXIMUM_ST as $MAXI_ST"
     21
     22          CHECK1=false
     23          SETPARAM=$(xe vm-param-set uuid=$UUID memory-static-min=$MINI_ST)
     24          if [ $? -eq 0 ]; then
     25             CHECK1=true;
     26          fi
     27          SETPARAM=$(xe vm-param-set uuid=$UUID memory-static-max=$MAXI_ST)
     28          if [ $? -eq 0 ]; then
     29             CHECK2=true;
     30          fi
     31
     32          if [ $CHECK1 = true ]; then
     33             if [ $CHECK2 = true ]; then
     34                echo "The DMC static range ( $MINIMUM_ST … $MAXIMUM_ST ) about $VM_NAME virtual machine has been updated successfully"
     35             else
     36                echo "Can not update the maximun DMC static range about $VM_NAME virtual machine"
     37             fi
     38          else
     39             echo "Can not update the minimum DMC static range about $VM_NAME virtual machine"
     40          fi
     41
     42          SETPARAM=$(xe vm-memory-dynamic-range-set uuid=$UUID min=$MINI_DYN max=$MAXI_DYN)
     43          if [ $? -eq 0 ]; then
     44             echo "The DMC dynamic range ( $MINIMUM_DYN … $MAXIMUM_DYN ) about $VM_NAME virtual machine has been updated successfully"
     45          else
     46             echo "Can not update the DMC dynamic range about $VM_NAME virtual machine"
     47          fi
     48       fi
     49    fi
     50 done
 

Set the default memory ram values for each virtual machine in "Memory.prefs"

Fields:

1- Virtual machine name as "name-label"

2.- DMC’s dynamic lower limit value about  as "memory-dynamic-min"

3.- DMC’s dynamic higger limit value about  as "memory-dynamic-max"

4.- DMC’s static lower limit as "memory-static-min"

5.- DMC’s static higger as "memory-static-max"

Memory.prefs

      1 Application-Server-01:256:512:192:576
      2 Application-Server-02:256:512:192:576
      3 Application-Server-03:256:512:192:576
      4 Debian-Desktop-1.0:256:384:224:416
      5 DNS-Server-1.0:64:88:48:104
      6 DNS-Server-2.0:64:88:48:104
      7 File-Server-1.0:128:192:96:224
      8 File-Server-2.0:128:192:96:224
      9 LDAP-Server-1.0:64:88:48:104
     10 LDAP-Server-2.0:64:88:48:104
     11 Log-Server-1.0:64:88:48:104
     12 Sql-Server-1.0:128:256:96:224
     13 Web-Server-1.0:88:152:72:168
     14 Web-Server-2.0:88:152:72:168
     15 Web-Server-3.0:88:152:72:168
 

Output

[root@thor ~]# bash Memory.bash

The DMC static range ( 192 … 576 ) about Application-Server-01 virtual machine has been updated successfully
The DMC dynamic range ( 256 … 512 ) about Application-Server-01 virtual machine has been updated successfully
The DMC static range ( 192 … 576 ) about Application-Server-02 virtual machine has been updated successfully
The DMC dynamic range ( 256 … 512 ) about Application-Server-02 virtual machine has been updated successfully
The DMC static range ( 192 … 576 ) about Application-Server-03 virtual machine has been updated successfully
The DMC dynamic range ( 256 … 512 ) about Application-Server-03 virtual machine has been updated successfully
The DMC static range ( 224 … 416 ) about Debian-Desktop-1.0 virtual machine has been updated successfully
The DMC dynamic range ( 256 … 384 ) about Debian-Desktop-1.0 virtual machine has been updated successfully
The DMC static range ( 48 … 104 ) about DNS-Server-1.0 virtual machine has been updated successfully
The DMC dynamic range ( 64 … 88 ) about DNS-Server-1.0 virtual machine has been updated successfully
The DMC static range ( 48 … 104 ) about DNS-Server-2.0 virtual machine has been updated successfully
The DMC dynamic range ( 64 … 88 ) about DNS-Server-2.0 virtual machine has been updated successfully
The DMC static range ( 96 … 224 ) about File-Server-1.0 virtual machine has been updated successfully
The DMC dynamic range ( 128 … 192 ) about File-Server-1.0 virtual machine has been updated successfully
The DMC static range ( 96 … 224 ) about File-Server-2.0 virtual machine has been updated successfully
The DMC dynamic range ( 128 … 192 ) about File-Server-2.0 virtual machine has been updated successfully
The DMC static range ( 48 … 104 ) about LDAP-Server-1.0 virtual machine has been updated successfully
The DMC dynamic range ( 64 … 88 ) about LDAP-Server-1.0 virtual machine has been updated successfully
The DMC static range ( 48 … 104 ) about LDAP-Server-2.0 virtual machine has been updated successfully
The DMC dynamic range ( 64 … 88 ) about LDAP-Server-2.0 virtual machine has been updated successfully
The DMC static range ( 48 … 104 ) about Log-Server-1.0 virtual machine has been updated successfully
The DMC dynamic range ( 64 … 88 ) about Log-Server-1.0 virtual machine has been updated successfully
The DMC static range ( 96 … 224 ) about Sql-Server-1.0 virtual machine has been updated successfully
The DMC dynamic range ( 128 … 256 ) about Sql-Server-1.0 virtual machine has been updated successfully
The DMC static range ( 72 … 168 ) about Web-Server-1.0 virtual machine has been updated successfully
The DMC dynamic range ( 88 … 152 ) about Web-Server-1.0 virtual machine has been updated successfully
The DMC static range ( 72 … 168 ) about Web-Server-2.0 virtual machine has been updated successfully
The DMC dynamic range ( 88 … 152 ) about Web-Server-2.0 virtual machine has been updated successfully
The DMC static range ( 72 … 168 ) about Web-Server-3.0 virtual machine has been updated successfully
The DMC dynamic range ( 88 … 152 ) about Web-Server-3.0 virtual machine has been updated successfully
 

Runtime RAM values

"xentop"

WordPress Themes