Procura uma string em arquivos recursivamente no BusyBox 1.0? [duplicado]

5

Como posso procurar uma string em um arquivo recursivamente no BusyBox 1.0 se find e grep não estiverem disponíveis?

(Eu quero fazer o telnet no roteador e descobrir onde as regras iptables estão armazenadas.)

BusyBox v1.00 (2011.01.13-12:30+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.

# help

Built-in commands:
-------------------
        . : break cd continue eval exec exit export help login newgrp
        read readonly set shift times trap umask wait [ busybox cat chmod
        cp date dmesg echo expr false ftpget ftpput hostname ifconfig
        init insmod kill killall klogd linuxrc ln logger logread ls mkdir
        mknod mount msh mv ping ps pwd reboot renice rm rmmod route sed
        sendarp sh sysinfo syslogd test tftp top traceroute true tty
        umount vconfig wget
    
por John Nash 13.08.2012 / 13:55

1 resposta

7

Eu rolei esse script que faz uma pesquisa de padrão recursiva no diretório atual. Ele usa sh e sed do busybox. Testado com o busybox 1.17.1; sua milhagem pode variar em 1,00.

#!/bin/busybox sh

sed="busybox sed"

search_in()
{
    searchterm="$1"
    searchdir="$2"
    prefix="$3"

    (
        cd "$searchdir"
        for file in *
        do
            if [ -d "$file" ]
            then
                # recurse into subdirectory
                search_in "$searchterm" "$file" "$prefix\/$file"
            else
                # use sed like grep
                $sed -rn '/'"$searchterm"'/s/(.*)/'"$prefix\/$file"': /gp' "$file"
            fi
        done

    )
}

# search for command-line search term, starting in current directory ('.')
search_in "$1" . "."
    
por 13.08.2012 / 15:37