如果telnet输出包含执行操作

时间:2015-08-24 18:13:43

标签: bash telnet

我正在尝试用bash编写一个小脚本。我的目标是我的FritzBox上的电话会将我的电视静音或暂停。

我通过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

但我不会将我的telnet会话输出到字符串中。谁可以帮助我?

1 个答案:

答案 0 :(得分:0)

这是我的简短结论: 要查看对FritzBox的调用,您只需执行:     telnet fritz.box 1012 在你的终端。 输出应该如下:

24.08.15 14:03:05;RING;0;017mobilephonenumber;49304myhomenumber;SIP0;

我的情况我希望执行一个命令让我的电视静音。 以下是Compile Views in ASP.NET MVC我如何通过Web / RaspberryPi(飞利浦和谐中心)控制我的电视,如果有人感兴趣的话。

要在incomming调用上执行命令,请创建一个名为action.sh

的脚本
#!/bin/bash
while true;
do
  read logline
  for substr in 'alt' '\;RING\;'
  do
    if [[ "$logline" = *${substr}* ]]; then
      echo "Got a match"
      #here you can put the command you want to execute on an incoming call
    fi
  done
done

创建后,使用chmod +x action.sh使其可执行 之后,您可以使用nc 192.168.1.1 1012 | action.sh启动脚本 这就是你如何在一个接收电话上执行脚本! 特别感谢tgo !!