대시 셸의 DEBUG 신호를 트랩 하시겠습니까?


9

bash 쉘을 사용하면 합성 DEBUG신호 에 트랩을 설치할 수 있습니다 . 이것은 유용하며 모든 쉘 명령에서 함수 또는 코드 비트를 실행합니다. 예를 들면 다음과 같습니다.

$ trap 'logger -t shell "${BASH_COMMAND}"' DEBUG

여기서의 아이디어는 예를 들어 드롭 된 파일에 트랩을 설치하고 /etc/profile.d/bash-logger사용자 셸 세션 명령이 발생할 때마다 syslog에 자동으로 기록되도록하는 것입니다. 또한 원격 명령쉽게 추적하는 데 유용 합니다 .

대시 셸 소스 코드를 보면 DEBUG사용할 수있는 신호 가 없다는 것을 이해하는 것 같습니다 .

대시 셸에서 동일한 결과를 얻을 수있는 해결 방법이나 대안이 있습니까?


무엇에 대해 while read -r line; do logger -t shell "$line"; command "$line"; done < myscript.sh? 작동하면 답변에 줄을 더 추가 할 수 있습니다.
Hastur

@Hastur 제 생각에는eval "$line"
Steven Penny

@StevenPenny 예, 글을 쓰고 eval <command>잘못된 부분을 취소했습니다. 물론, 별칭 / 함수 대신 디스크에서 명령을 사용하도록 스크립트를 강제 실행하지 않으려는 경우에는 항상 발생합니다.◉‿◉
Hastur

미안하지만 그다지 도움이되지 않습니다. 여기서 아이디어는 예를 들어 드롭 된 파일에 트랩을 설치하고 /etc/profile.d/bash-logger사용자 쉘 세션 명령을 syslog에 자동으로 기록하는 것입니다.
Cosimo

2
이것은 실제로이 질문에 대한 올바른 사이트가 아닙니다. 이것이 작동하지 않으면 더 이상 바운티를 추가하지 않을 것입니다. 이것을 삭제하고 unix.stackexchange.com
Steven Penny
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.