SSH를 통해 원격 서버에서 df를 사용하고 사용 가능한 크기를 가져옵니다.

SSH를 통해 원격 서버에서 df를 사용하고 사용 가능한 크기를 가져옵니다.

나는 사용하려고이 코드(로컬 서버에서 작동) SSH를 통한 원격 서버에서

df |tail -n +2 | awk '{if ($6 == "/var") print $2; }'

내 코드는 다음과 같습니다

function dst_request {
# Effectue une requete sur la destination
local RESULT
if [ ${hostssh} ]
then # Destination SHH
  RESULT=$( ssh ${userssh}@${hostssh} "eval ${1}" )
else # Destination locale
echo "APPEL LOCAL"
  RESULT=$( eval ${1} )
fi
echo ${RESULT}
}

#place utilisée sur le disque distant
dddistantsize=$(dst_request "df")
echo ${dddistantsize}
dddistantsize_n=`echo ${dddistantsize} |tail -n +2 | awk '{if ($6 == "/var") print $2; }'`
echo "dddistantsize_n="${dddistantsize_n}
dddistantsize_mb=$(($dddistantsize_n/1024))

dddistantused=$(dst_request "df")
echo ${dddistantused}
dddistantused_n=`echo ${dddistantused} |tail -n +2 | awk '{if ($6 == "/var") print $3; }'`
echo "dddistantused_n="${dddistantused_n}
dddistantused_mb=$(($dddistantused_n/1024))

dddistantdispo=$(dst_request "df")
echo ${dddistantdispo}
dddistantdispo_n=`echo ${dddistantdispo} |tail -n +2 | awk '{if ($6 == "/var") print $4; }'`
echo "dddistantdispo_n="${dddistantdispo_n}
dddistantdispo_mb=$(($dddistantdispo_n/1024))

dddistantprcused=$(dst_request "df")
dddistantdispo_n=`echo ${dddistantprcused} |tail -n +2 | awk '{if ($6 == "/var") print $5; }'`

echo "Disque distant : "${dddistantused_mb}"Mb"/${dddistantsize_mb}"Mb plein à "${dddistantdispo_n}" (Libre ${dddistantdispo_mb}Mb)"

문제는 원격 호출이 (로컬 여러 줄 결과 대신) 한 줄의 결과를 다시 보내는데 awk가 이를 구문 분석할 수 없다는 것입니다.

내가 정확히 말하는 것은 원격 df가 --output 옵션을 지원하지 않는다는 것입니다...

답변1

해결책을 찾았습니다

dddistantdf=$(dst_request "df /var")
#echo $dddistantdf | grep -o '[0-9]* [0-9]* [0-9]* *[0-9]*%'
dddistantsize_n=`echo $dddistantdf | grep -o '[0-9]* [0-9]* [0-9]* *[0-9]*%' | awk '{print $1;}'`
dddistantused_n=`echo $dddistantdf | grep -o '[0-9]* [0-9]* [0-9]* *[0-9]*%' | awk '{print $2;}'`
dddistantdispo_n=`echo $dddistantdf | grep -o '[0-9]* [0-9]* [0-9]* *[0-9]*%' | awk '{print $3;}'`
dddistantdispo_prc=`echo $dddistantdf | grep -o '[0-9]* [0-9]* [0-9]* *[0-9]*%' | awk '{print $4;}'`

영어 서버나 프랑스어 서버에서 작동합니다. ;)

관련 정보