Linux ожидают в фоновом режиме - PullRequest
0 голосов
/ 05 июля 2019

Я использую следующий скрипт bash для подключения к pbx с помощью telnet:

Ожидаем .sh:

#!/usr/bin/expect 
    spawn telnet [ip] 2300
    expect -exact "-"
    send "SMDR\r";
    expect "Enter Password:"
    send "PASSWORD\r";
    interact

и создал другой скрипт для перенаправления результата в файл:

#!/bin/bash
    ./expect.sh | tee pbx.log

Я пытаюсь запустить wait.sh во время загрузки, поэтому я добавил его в systemd.Когда я добавляю его как службу в /etc/systemd/system, он запускается, но я не могу получить результаты в файле журнала, как если бы я запускал оба сценария вручную, есть ли какие-либо идеи о том, как запустить его во время загрузки?ТИА

1 Ответ

1 голос
/ 06 июля 2019

Если вы просто хотите постоянно выводить все, что получено после ввода пароля, просто замените ваш interactive на expect eof, то есть дождитесь окончания файла, которое произойдет, когда соединение будет закрыто другим концом.Вы, вероятно, также захотите изменить тайм-аут по умолчанию, равный 10 секундам, без данных, которые остановят команду:

set timeout -1 
expect eof
...