Pułapka na sygnał DEBUG dla powłoki deski rozdzielczej?


9

Za pomocą powłoki bash możesz zainstalować pułapkę na syntetycznym DEBUGsygnale. Jest to przydatne i spowoduje wykonanie funkcji lub fragmentu kodu przy każdym poleceniu powłoki. Na przykład:

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

Chodzi o to, aby zainstalować pułapkę na przykład w upuszczonym pliku /etc/profile.d/bash-loggeri aby polecenia sesji powłoki użytkownika były automatycznie logowane do syslog, gdy tylko się pojawią. Jest to również przydatne do łatwego śledzenia poleceń zdalnych .

Patrząc na kod źródłowy powłoki Dasha, wydaje mi się, że rozumiem, że taki DEBUGsygnał nie jest dostępny.

Czy są jakieś obejścia lub alternatywy, aby osiągnąć ten sam wynik z powłoką deski rozdzielczej?


Co while read -r line; do logger -t shell "$line"; command "$line"; done < myscript.sh? Jeśli to działa, mogę dodać więcej linii w odpowiedzi.
Hastur

@Hastur Myślę, że masz na myślieval "$line"
Steven Penny,

@StevenPenny Tak, pisałem eval <command>i anulowałem niewłaściwą część, to się zdarza ... oczywiście, jeśli nie chcesz wymuszać na skrypcie używania poleceń na dysku zamiast aliasów / funkcji ...◉‿◉
Hastur

Przepraszam, ale to niewiele pomaga. Chodzi o to, aby zainstalować pułapkę na przykład w upuszczonym pliku /etc/profile.d/bash-loggeri automatycznie rejestrować wszelkie polecenia sesji powłoki użytkownika w syslog.
Cosimo,

2
To naprawdę nie jest odpowiednia strona dla tego pytania. Nie dodam więcej nagród, jeśli to nie działa. Powinieneś rozważyć usunięcie tego i ponowne opublikowanie
Steven Penny,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.