Я пытаюсь написать небольшой скрипт в bash. Моя цель в том, что телефонный звонок на моем FritzBox отключит или приостановит мой телевизор.Если вывод telnet содержит что-то выполнить действие
я получаю информацию о вызове через Telnet (Telnet fritz.box 1012) на моем RaspberryPi и если придет телефонный звонок в я получаю этот выход:
24.08.15 14:03:05; RING; 0; 017mobilephonenumber; 49304myhomenumber; SIP0;
Единственная часть, которая каждый раз совпадает с RING перед номером вызова. Мне нужен сценарий, который проверяет вывод telnet, и если в выводе telnet есть кольцо, чем выполнение действия в моем случае, мне просто нужно выполнить HTTP-запрос на внутреннем сайте или запустить другой скрипт.
Это то, что я попытался это:
#!/bin/bash
#string='echo "My string"'
string=$(telnet –e p fritz.box 1012)
for reqsubstr in 'alt' 'RING';do
if [ -z "${string##*$reqsubstr*}" ] ;then
echo "String '$string' contain substring: '$reqsubstr'."
else
echo "String '$string' don't contain substring: '$reqsubstr'."
fi
done
Но я Don `T получить выход моей телнет сессии в строку. Кто может мне помочь?
попробуйте использовать «telnet» из командной строки. Обычно для завершения сеанса вам нужно набрать 'quit' или' exit' (и т. Д.). Возможно, вам даже придется использовать Ctrl-C (теперь у меня нет доступа к telnet). Удачи. – shellter
Более простая проверка в 'bash' есть' if [[$ string = * $ reqsubstr *]] '; затем – chepner
Отметьте это «ожидаем», и я подозреваю, что @GlennJackman узнает ответ :-) –