adiciona um comando a cada comando (por exemplo, proxychains cada comando por padrão)

1

Como posso executar cada comando pré-anexado com outro?

Exemplo quando eu corro:

nmap -p 80 host

Eu quero que ele seja executado

proxychains nmap -p 80 host

mesmo quando não adiciono proxychains intencionalmente.

Em outras palavras: posso aliasar todos os comandos de uma só vez com proxychains pré-anexado?

Bônus se isso é algo que eu posso ligar / desligar.

    
por AK_ 16.12.2017 / 15:11

2 respostas

5

Funcionaria apenas para executar um shell completo em proxychains ? Assumindo que ele pode lidar com processos iniciados pelo shell corretamente.

Você poderia fazer com apenas

$ proxychains bash

e saia do shell à vontade.

Mas se você realmente quiser, pode abusar da DEBUG trap (com extdebug set) para manipular os comandos que o shell executa. Isso executaria todos os comandos com time :

$ shopt -s extdebug
$ d() { eval "time $BASH_COMMAND"; return 1;  }
$ trap d DEBUG
$ sleep 2

real    0m2.010s
user    0m0.000s
sys     0m0.000s
$ trap - DEBUG         # turn it off, this still prints the 'time' output

Mas a parte complicada aqui é que isso também afetará os recursos internos, como trap ou shopt , então você provavelmente desejará adicionar algumas exceções para eles ... Além disso, coisas como cd somedir se tornariam em proxychains cd somedir , o que provavelmente não funcionará. Isso também afetaria tudo iniciado de dentro de funções, etc. Talvez seja melhor apenas usar a função proxychains apenas para os comandos conhecidos que precisam dela.

    
por 16.12.2017 / 15:55
1

Você pode criar um alias para sua sessão atual.

alias nmap="proxychains nmap"

Toda vez que você escreve nmap, seria como escrever "proxychains nmap". Você pode desativá-lo com:

unalias nmap

Você também pode criar um script de shell para gerenciar isso. Basta adicioná-lo ao seu bashrc

function prefix {
if [ $2 != "with" ]; then
    echo "You have to prefix something with something"
    return
fi
echo "alias $1 = $3 $1"

alias $1="$3 $1"
}
function unprefix {
    alias $(alias $1 | sed "s/=.\b.*\b /='/g")
}

Então você pode fazer:

prefix nmap with proxychains
unprefix nmap
    
por 16.12.2017 / 15:29