【发布时间】:2015-11-18 06:28:44
【问题描述】:
我正在尝试用 bash 编写一个小脚本。我的目标是我的 FritzBox 上的电话将使我的电视静音或暂停。
我通过 RaspberryPi 上的 telnet (telnet fritz.box 1012) 获取呼叫信息,如果有来电,我会得到以下输出:
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
但我没有将我的 telnet 会话的输出放入字符串中。谁能帮帮我?
【问题讨论】:
-
尝试从命令行使用您的
telnet。通常,您必须键入quit或exit(等)来终止会话。您甚至可能必须使用 Ctrl-C(现在无法访问 telnet)。祝你好运。 -
bash更简单的签入是if [[ $string = *$reqsubstr* ]];那么 -
用
expect标记这个,我怀疑@GlennJackman 会知道答案:-)