Obtendo valor do comando ssh

2

Eu tenho um script para limpar alguns arquivos de um host (Host_1). Em outro host (Host_2), estou fazendo um ssh para o script no Host_1.

Script no Host_1:

if [ condition here ]
then
    rm -r /folder #command to remove the files here
    b=$(df -k /folder_name| awk '{print $4}' | tail -1) #get memory after clearing files.
    echo "$b"
else
    return 1
fi

No Host_2, estou fazendo um ssh para Host_1.

mail_func()
{
val=$1
host=$2
if [ $val -ne 1 ]
        then
        echo "$host $val%" >> /folder/hostnames1.txt #writing host and memory to text file
else
        exit
fi
}
a=$(ssh -q Host_1 "/folder/deletefile.sh")
mail_func a Host_1

Ele retorna em branco aqui. Sem saída. Eu tentei ver se alguma saída estava chegando ao Host_2 apenas fazendo um

echo $a

Isso me devolveu em branco. Não tenho certeza do que senti falta aqui. Por favor, sugira para obter o espaço de memória também de um único comando ssh.

    
por Ayush Anand 01.11.2017 / 18:26

1 resposta

1

A instrução return é usada para definir um código de saída; não é usado como saída para uma atribuição de variável. Se você quiser capturar uma string como saída, provavelmente precisará escrevê-la para a saída padrão. Uma correção rápida seria a seguinte modificação do seu script:

#!/bin/bash

#    Script in Host_1

if [ condition here ]
then
    rm -r /folder #command to remove the files here
    b=$(df -k /folder_name| awk '{print $4}' | tail -1) #get memory after clearing files.
    echo "$b"
else
    # NOTE:
    #     This return statement sets the exit-code variable: '$?'
    #     It does not return the value in the usual sense.
    # return 1

    # Write the value to stdout (standard output),
    # so it can be captured and assigned to a variable.
    echo 1
fi
    
por 01.11.2017 / 19:11

Tags