2013-06-11 20 views
2

我有一個我在工作中使用的腳本,我想稍微擴展一下。我目前使用的腳本將IP地址作爲參數,並將zip文件壓入該設備上的特定目錄。該設備是Android設備,我推送的特定目錄用於使用推送的新數據觸發設備恢復。如何一次返回一行grep結果以便在另一個腳本中使用解析的數據?

我在試圖找到一種方法來掃描網絡,識別所有連接的Android設備,然後將新固件推送到它們中的每一個。由於推送部分已經很容易完成,我需要找到一種方法來掃描和識別每個連接設備的IP。

我想出:

nmap -sL 10.111.1.0/24 | grep android | grep -oE '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' 

將通過網絡反彈,找到在該行的「Android」什麼,然後解析出來,並返回這些線路的IP地址。問題是,我不知道如何一次獲取一個IP地址,並將它們從這裏提供給腳本。有任何想法嗎?

回答

2

您可以使用一個for循環,你有這個模式的子shell隨時要作用於管道的結果:

for ip in $(nmap -sL 10.111.1.0/24 | grep android | grep -oE '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'); do 
    echo "W00t! I found this ${ip}" 
    /path/to/script "${ip}" 
done 
2

我會用while循環和解析無論你從一開始grep一套。

(nmap -sL 10.111.1.0/24 | grep android | grep -oE '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' | \ 
while read -a device; do 
    echo ${device[0]} 
    echo ${device[1]} 
    ... 
    /path/to/script ${device[2]} #the number that represents the ip address (I don t know wich one it will be depends what your grep gives) 
done) 

現在你可以獲取IP地址,並將它推腳本

+0

誠然,閱讀-a是一個更好的解決方案!謝謝! – Franko

1

讀入一個數組:

read -a devices < <(nmap -sL 10.111.1.0/24 | grep android | grep -oE '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}') 

然後將其發送到該腳本:

/path/to/script "${devices[@]}" 
相關問題