0
所以,我有以下腳本:獲取正在運行的進程的在bash輸出
#!/bin/bash
# IP address to cycle through (in order of priority)
ip=("192.168.20.102" "192.168.20.103")
# Check if synergy is already connected
if pgrep "synergyc"; then
# Synergy already connected
echo "Synergy is already running."
else
for i in "${ip[@]}"
do
# Ping ip and connect if successful
ping -c 1 -t 1 "$i" && /usr/bin/synergyc -n media -f "$i"
echo "Synergy connected to ${i}";
done
fi
其中就完事了其運行的cron
和一旦ip
可用它連接。如果兩者都可用,則根據數組的順序進行連接。
問題是,如果它連接到ip
並且該ip
變得不可用,則該進程只會掛起以下輸出。
[2016-08-03T22:04:53] NOTE: connecting to '192.168.20.102': 192.168.20.102:24800
[2016-08-03T22:04:53] WARNING: failed to connect to server: Connection refused
[2016-08-03T22:04:54] NOTE: connecting to '192.168.20.102': 192.168.20.102:24800
[2016-08-03T22:04:54] WARNING: failed to connect to server: Connection refused
我希望能夠做的就是以某種方式捕獲輸出檢查如果它包含文本WARNING
或Connection refused
等,並killall synergyc
根據是否存在該文本和推測的cron正常。
所以最終的目標我想synergyc
連接到第一個可用的ip
還要殺死自己如果ip
變得無法使用,並恢復尋找下一個可用的ip
。
這個腳本的目的是我們有一個媒體中心在家運行,我們使用兩臺筆記本電腦作爲遙控器唯一的協同作用只能有一個服務器與多個客戶端,而不是其他輪,因此需要這個腳本,只是試圖傳達這不是一個xy問題。
完美謝謝! –