LINUX.ORG.RU

Вывод из bash передать скрипту expect

 ,


0

1

Доброго всем добрым людям!

Стоит задача по опросу из таблицы mariadb (здесь получаю ip-адреса коммутаторов) выполнить на каждом ряд операций. Могу в bash-скрипте выполнить поток expect, но иначе как через аргумент командной строки передать ему каждый из полученных ip-адресов не нашел как. В этом случае тоже проблема , например, надо переменной HOSTS присвоить значение итога выполнения всего скрипта:

HOSTS=$(expect -c '
spawn /usr/bin/mysql -u sa -pAccessp
expect ">"
send "Use Cisco;\n"
expect ">"
send "select IP_switch from Commutator;\n "
expect ">"
set results $expect_out(buffer)
send "exit\n"')

for H in $HOSTS
./expect.exp $H
done

И конечно, оно так не присваивается. Я прям не ожидал, что между bash и expect внутри него не предусмотрели передачу общей «глобальной» переменной. И экспорт полученного results непонятно как выполнить.

Как же решить это?



Последнее исправление: DrBim (всего исправлений: 1)

Потыкал кнопки. У меня как-то так выходит:

#!/bin/bash
HOSTS=$(/usr/bin/mysql -u 1 -p1111111 -D Cisco -e "SELECT GROUP_CONCAT(IP_switch SEPARATOR ' ') FROM Commutator;" -N -B)
for H in $HOSTS
do
    echo  $H
done
)

Toxo2 ★★★★
()
Ответ на: комментарий от Toxo2

Toxo2

[code] #!/bin/bash HOSTS=$(/usr/bin/mysql -u 1 -p1111111 -D Cisco -e «SELECT GROUP_CONCAT(IP_switch SEPARATOR ’ ’) FROM Commutator;» -N -B) for H in $HOSTS do echo $H done [/code]

Понял, спасибо.

DrBim
() автор топика
Последнее исправление: DrBim (всего исправлений: 3)
Ответ на: комментарий от Toxo2

не знаю почему, но всегда каноничным считал такой вариант, хотя сути это не меняет, но если придут старшие и не сделаешь так - заругают)

while read -r Host; do
         
 echo $Host
         
done < <(mysql --login-path=bla-bla -Nse \
            "use database; SELECT bla-bla;")
nerve ★★
()
18 февраля 2023 г.
Ответ на: комментарий от nerve

сути это не меняет

Поменяет, если хостов будет очень много. В первом варианте надо будет сначала их все вычитать и положить в $HOSTS, а тут можно сразу обрабатывать их по мере поступления из базы.

kmeaw ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.