bash 쉘을 사용하면 합성 DEBUG
신호 에 트랩을 설치할 수 있습니다 . 이것은 유용하며 모든 쉘 명령에서 함수 또는 코드 비트를 실행합니다. 예를 들면 다음과 같습니다.
$ trap 'logger -t shell "${BASH_COMMAND}"' DEBUG
여기서의 아이디어는 예를 들어 드롭 된 파일에 트랩을 설치하고 /etc/profile.d/bash-logger
사용자 셸 세션 명령이 발생할 때마다 syslog에 자동으로 기록되도록하는 것입니다. 또한 원격 명령 을 쉽게 추적하는 데 유용 합니다 .
대시 셸 소스 코드를 보면 DEBUG
사용할 수있는 신호 가 없다는 것을 이해하는 것 같습니다 .
대시 셸에서 동일한 결과를 얻을 수있는 해결 방법이나 대안이 있습니까?
@Hastur 제 생각에는
—
Steven Penny
eval "$line"
@StevenPenny 예, 글을 쓰고
—
Hastur
eval <command>
잘못된 부분을 취소했습니다. 물론, 별칭 / 함수 대신 디스크에서 명령을 사용하도록 스크립트를 강제 실행하지 않으려는 경우에는 항상 발생합니다.◉‿◉
미안하지만 그다지 도움이되지 않습니다. 여기서 아이디어는 예를 들어 드롭 된 파일에 트랩을 설치하고
—
Cosimo
/etc/profile.d/bash-logger
사용자 쉘 세션 명령을 syslog에 자동으로 기록하는 것입니다.
이것은 실제로이 질문에 대한 올바른 사이트가 아닙니다. 이것이 작동하지 않으면 더 이상 바운티를 추가하지 않을 것입니다. 이것을 삭제하고 unix.stackexchange.com
—
Steven Penny
while read -r line; do logger -t shell "$line"; command "$line"; done < myscript.sh
? 작동하면 답변에 줄을 더 추가 할 수 있습니다.