다른 명령을 앞에 두고 각 명령을 실행하는 방법은 무엇입니까?
내가 실행할 때의 예:
nmap -p 80 host
나는 그것이 실행되기를 원한다
proxychains nmap -p 80 host
proxychains
일부러 넣지 않았는데도 말이죠 .
즉, 모든 명령에 미리 추가된 별칭을 한 번에 추가할 수 있습니까 proxychains
?
켜고 끌 수 있는 기능이면 정말 좋을 것 같아요.
답변1
에서 완전한 쉘을 실행할 수 있습니까 proxychains
? 쉘에서 시작된 프로세스를 올바르게 처리한다고 가정합니다.
당신은 이것을 할 수 있습니다
$ proxychains bash
마음대로 쉘을 종료하십시오.
그러나 정말로 원한다면 DEBUG
트랩( extdebug
set 사용)을 남용하여 쉘이 실행하는 명령을 손상시킬 수 있습니다. 그러면 각 명령이 실행됩니다 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
필요한 것으로 알려진 명령에만 이 기능을 사용할 수 있도록 하는 것이 더 나을 것입니다 .
답변2
현재 세션에 대한 별칭을 만들기만 하면 됩니다.
alias nmap="proxychains nmap"
nmap을 작성할 때마다 "proxychains nmap"을 작성하게 됩니다. 다음 방법으로 끌 수 있습니다:
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