Функция оболочки, чтобы получить счетчик от двух хостов и вернуть сумму wc - PullRequest
0 голосов
/ 06 февраля 2020

Я написал один сценарий оболочки, который подключается к двум хостам и записывает слово на обоих серверах по определенному пути. Мне нужно присвоить вывод grep переменной и вернуть вывод. PFB моя функция

f_count ()
{
ssh ebi@hostname_A /bin/bash <<EOF
v_id=$1
cd /var/log/cluster/
add=$(grep -ri $v_id . | wc -l)
echo $add
exit
EOF
ssh ebi@hostname_B /bin/bash <<EOF
v_id=$1
cd /var/log/cluster/
add2=$(grep -ri $v_id . | wc -l)
echo $add2
exit
EOF
sum=$add+$add2
echo $sum
}

Я хочу, чтобы переменная суммы возвращалась вышеуказанной функцией. Я пробовал приведенный выше код, но я не получаю никаких выходных данных от переменных $ add, $ add2, $ sum. Пожалуйста, сообщите.

Ответы [ 3 ]

0 голосов
/ 06 февраля 2020

Это должно дать вам представление о том, что вы должны сделать:

get_host_count () {
   ssh ebi@"$1" "grep -ri '$2' /var/log/cluster/ | wc -l"
}

f_count() {
   echo $(($(get_host_count hostname_A $1) + $(get_host_count hostname_B $1)))
}

Примечание: не проверено

Ваши ошибки:

  • вы не захватываете вывод s sh, переменные добавления, которые вы определяете, определены на стороне сервера, и они не попадут на клиент
  • вы не используете правильный синтаксис для bash выражений $(())
  • вы не должны вслепую вводить ввод bash / s sh, используйте -c, если вам нужно запустить оболочку
0 голосов
/ 06 февраля 2020

Вы также можете попробовать

sum=`expr $add + $add2 `
0 голосов
/ 06 февраля 2020

Строка в вашем скрипте

sum=$add+$add2

должна быть переписана как

sum=$(( $add + $add2 ))
...