我想知道如何在piped命令中使用 stdout ,然后在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)如何在此帖子中使用grep command
的结果作为nc
命令?
2)我是否可以说grep
ip 的结果仅用于以下整个声明中,就像我在这里所做的那样?
(echo "exit" | nc <IP-HERE> 23 -w 5 \
if [ "$?" -eq "0" ]; then
(
<SomeCommandsHERE>
) | nc <IP-HERE> 23 1>>$file 2>&1 )
到目前为止我尝试了什么:
<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
语句不正确,我怎么能改变它?
答案 0 :(得分: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