我想在bash中編寫一個小腳本。我的目標是我的FritzBox上的電話會靜音或暫停我的電視。如果telnet輸出包含某些執行操作
我得到通過telnet呼叫的信息(遠程登錄fritz.box 1012)對我的樹莓派,如果有即將到來的電話中我得到這樣的輸出:
15年8月24日14時03分05秒;環; 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'(etc)來終止會話。你甚至可能不得不使用Ctrl-C(現在不能訪問telnet)。祝你好運。 – shellter
在'bash'中簡單的檢查是'if [[$ string = * $ reqsubstr *]]';然後 – chepner
用'expect'標記此標記,我懷疑@GlennJackman會知道答案:-) –