2014-06-14 31 views
0

我想NC連接和命令從管道命令標準輸出使用知道我怎麼可以使用標準輸出從管道命令,然後在NC連接使用它:在括號

<COMMAND> | \ 
grep -oE '((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])' | \ 
(echo "exit" | nc <IP-HERE> 23 -w 5 \ 
if [ "$?" -eq "0" ]; then 
(
<SomeCommandsHERE> 
) | nc <IP-HERE> 23 1>>$file 2>&1) 

問題:

1)如何在此線程中使用我的nc命令的grep command的結果?

2)可以說grep這個結果是ip只能用在下面的語句中,就像我在這裏做的那樣?

(echo "exit" | nc <IP-HERE> 23 -w 5 \ 
    if [ "$?" -eq "0" ]; then 
    (
    <SomeCommandsHERE> 
    ) | nc <IP-HERE> 23 1>>$file 2>&1) 

UPDATE

我試了一下,到目前爲止:

<COMMAND> | \ 
grep -oE '((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])' | \ 
while read ip; do 
    (echo "exit" | nc "$ip" 23 -w 5 
    [[ "$?" -eq "0" ]] 
     (
      echo "hello" 
     ) | nc "$ip" 23 1>>$file 2>&1 
    ); done 

這是正確的嗎?如果它不正確,我如何更改if聲明?

回答

1

如果你通過了<COMMAND>的輸出循環,你可以一條線同時評價它:

<COMMAND> | while read text; do 
    ipaddr=`echo $text | grep -oE '((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])'` 
    if [ $? -eq 0 ]; then 
    (echo "exit" | nc $ipaddr 23 -w 5 
     if [ $? -eq 0 ]; then 
     (
     <SomeCommandsHERE> 
     ) | nc $ipaddr 23 1>>$file 2>&1 
     fi 
    )   
    fi 
done 
+0

謝謝... :) ...請看我的更新是...更新是否正確? – MLSC

+0

實際上,這隻會在''輸出一行IP地址本身沒有其他文本或標點符號時才起作用。 – Joe

+0

謝謝。我是你的解決方案......讓其他人知道請在grep命令末尾添加''' – MLSC