Saltstack [SOLVED]: Removing character from variable in BASH script

Saltstack [SOLVED]: Removing character from variable in BASH script

Home Forums Automation Tools Saltstack Tutorials Saltstack [SOLVED]: Removing character from variable in BASH script

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #170465

    Cloudy Point
    Keymaster

    QuestionQuestion

    I have a script which utilises SaltStack’s command-line as well as BASH commands. The script is used to gather data from multiple Linux servers (hence SaltStack), one of the checks which I would like to gather is disk space.

    I have done this by using the following command:

    salt $i cmd.run 'df -Ph / | tail -n1 | awk '"'"'{ print $4}'"'"'' | grep -v $i
    

    $i = hostname and the use of the ugly ‘”‘”‘ is so that my command can run via SaltStack as Salt’s remote execution functionality requires single quotes around the command, if I left them in my command wouldn’t run inside my BASH script.

    Example syntax:

    salt $hostname cmd.run 'command here'
    

    After many questions on here and with colleagues I have this section of the script sorted. However I now the problem of stripping the output of my above command to remove the ‘G’ so that my script can compare the output with a threshold I have defined and turn the HTML which this script is piping to red.

    Threshold:

    diskspace_threshold=5
    

    Command:

    while read i ; do
    diskspace=`salt $i cmd.run 'df -Ph / | tail -n1 | awk '"'"'{ print $4}'"'"'' | grep -v $i`
    

    Validation check:

    if [[ "${diskspace//G}" -lt $diskspace_threshold ]]; then
        ckbgc="red"
    fi
    

    The method I have used for stripping the G works on the command line but not within my script so it must be something to do with the syntax or just the fact that it is now within a script. Any ideas/thoughts would be helpful.

    Cheers!

    EDIT: Here is the error message I receive when running my script:
    serverdetails.sh: line 36: p
    : 2.8: syntax error: invalid arithmetic operator (error token is “.8”)

    #170466

    Cloudy Point
    Keymaster

    Accepted AnswerAnswer

    I assume the error is coming from here (is this line 36?)

    if [[ "${diskspace//G}" -lt $diskspace_threshold ]]; then
    

    Note the error message:

    serverdetails.sh: line 36: p : 2.8: syntax error: invalid arithmetic operator (error token is “.8”)

    bash does not do floating point arithmetic

    $ [[ 2.8 -lt 3 ]] && echo OK
    bash: [[: 2.8: syntax error: invalid arithmetic operator (error token is ".8")
    

    You’ll need to do something like this:

    result=$( bc <<< "${diskspace%G} < $diskspace_threshold" )
    if [[ $result == 1 ]]; then
      echo OK
    else
      echo Boo
    fi
    

    Source: https://stackoverflow.com/questions/45590652/removing-character-from-variable-in-bash-script
    Author: glenn jackman
    Creative Commons License
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.