запись в crontab для ночного планирования

Переменная varв вашем коде используется до того, как цикл начнет создавать выходной файл.

Если вы хотите вывести результат команды sshв файл, имя которого вы составляете из $var, сделайте следующее:

#!/bin/bash

while read -r server; do
    if [ "$server" = "198.162.1.3" ]; then
        var='apple'
    else
        var='unknown'
    fi

    ssh -n "test@$server" 'uname -n' >"/tempout/uname_$var.txt"
done <servers

Здесь я также изменил цикл, чтобы он считывал входной файл построчно (, игнорируя начальные и конечные пробелы в каждой строке ), и я заставил varполучить значение unknownесли оператор ifне принимает "истинную" ветвь.

Кроме того, вам нужно -nдля ssh. В противном случае sshиспользовал бы все доступные входные данные (, перенаправленные сюда из файла servers).

Другое изменение, которое можно было бы внести, заключается в использовании оператора case... esacвместо оператора if, особенно если число проверяемых IP-адресов превышает пару:

#!/bin/bash

while read -r server; do
    case $server in
        198.162.1.3) var=apple ;;
        198.162.1.5) var=cottage ;;
        198.162.1.7) var=bumblebee ;;
        *) var=unknown
    esac

    ssh -n "test@$server" 'uname -n' >"/tempout/uname_$var.txt"
done <servers
1
16.06.2021, 17:38
0 ответов

Теги

Похожие вопросы