Перехватывает вывод из сервиса, который висит в ожидаемом скрипте

Я пишу ожидаемый скрипт для запуска команд bluetoothctl. Когда команды выполняются успешно, когда bluetoothctl работает хорошо. Но если есть проблема с сервисом bluetooth, он показывает "Ожидание подключения к bluetoothd...", и на этом этапе ожидаемый сценарий существует. Я хочу перехватить это исключение, перезапустить службу bluetooth, а затем снова запустить ожидающий сценарий. Вот сценарий:

#!usr/bin/expect -f
set prompt "#"
set address [lindex $argv 0]

spawn sudo bluetoothctl
expect{ 
   $prompt{
         send "scan on\r"
         sleep 5
         send "scan off\r"
         send "connect $address\r"
         expect "Connection successful" {send "pair $address\r"}
         expect "Pairing successful
    }
    timeout {
         send_user "\n----------\r"
         expect eof
    }
}

Я попытался с использованием тайм-аута, но тогда весь скрипт перестает работать после появления приглашения.

0 ответов

Другие вопросы по тегам