2014-06-14 34 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