別のコマンドが事前に追加された各コマンドを実行するにはどうすればよいですか?
私が実行したときの例:
nmap -p 80 Host
走らせたい
proxychains nmap -p 80 Host
意図的にproxychains
を追加しなくても。
言い換えると、proxychains
を事前に追加して、すべてのコマンドに一度にエイリアスを設定できますか?
これが私がオン/オフを切り替えることができるものであればボーナス。
proxychains
の下で完全なシェルを実行するだけで機能しますか?シェルによって開始されたプロセスを適切に処理できると仮定します。
あなたはただで行うことができます
$ proxychains bash
シェルを自由に終了します。
ただし、本当に必要な場合は、DEBUG
トラップ(extdebug
を設定)を悪用して、シェルが実行するコマンドをマングルすることができます。これにより、すべてのコマンドが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
ただし、ここで注意が必要なのは、trap
やshopt
自体などの組み込み関数にも影響するため、それらにいくつかの例外を追加することをお勧めします...また、cd somedir
などはproxychains cd somedir
になり、おそらく機能しません。これは、関数内などから開始されるすべてにも影響します。関数にproxychains
を必要とすることがわかっているコマンドに対してのみ使用させる方がよい場合があります。
現在のセッションのエイリアスを作成するだけです。
alias nmap="proxychains nmap"
Nmapを作成するたびに、「proxychainsnmap」を作成するようになります。あなたはそれをオフにすることができます:
unalias nmap
これを管理するシェルスクリプトを作成することもできます。 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")
}
だからあなたはすることができます:
prefix nmap with proxychains
unprefix nmap