diff --git a/collect/resh-collect.go b/collect/resh-collect.go index a6cebbb..920dde2 100644 --- a/collect/resh-collect.go +++ b/collect/resh-collect.go @@ -44,6 +44,7 @@ func main() { login := flag.String("login", "", "$LOGIN") path := flag.String("path", "", "$PATH") pwd := flag.String("pwd", "", "$PWD - present working directory") + pwdAfter := flag.String("pwdAfter", "", "$PWD after command") shellEnv := flag.String("shellEnv", "", "$SHELL") term := flag.String("term", "", "$TERM") @@ -68,6 +69,14 @@ func main() { timezoneBefore := flag.String("timezoneBefore", "", "") timezoneAfter := flag.String("timezoneAfter", "", "") + osReleaseId := flag.String("osReleaseId", "", "/etc/os-release ID") + osReleaseVersionId := flag.String("osReleaseVersionId", "", + "/etc/os-release ID") + osReleaseIdLike := flag.String("osReleaseIdLike", "", "/etc/os-release ID") + osReleaseName := flag.String("osReleaseName", "", "/etc/os-release ID") + osReleasePrettyName := flag.String("osReleasePrettyName", "", + "/etc/os-release ID") + rtb := flag.String("realtimeBefore", "-1", "before $EPOCHREALTIME") rta := flag.String("realtimeAfter", "-1", "after $EPOCHREALTIME") rtsess := flag.String("realtimeSession", "-1", @@ -103,7 +112,12 @@ func main() { realPwd, err := filepath.EvalSymlinks(*pwd) if err != nil { - log.Println("err while handling realpath:", err) + log.Println("err while handling pwd realpath:", err) + realPwd = "" + } + realPwdAfter, err := filepath.EvalSymlinks(*pwdAfter) + if err != nil { + log.Println("err while handling pwdAfter realpath:", err) realPwd = "" } @@ -112,6 +126,16 @@ func main() { *gitRemote = "" } + if *osReleaseId == "" { + *osReleaseId = "linux" + } + if *osReleaseName == "" { + *osReleaseName = "Linux" + } + if *osReleasePrettyName == "" { + *osReleasePrettyName = "Linux" + } + rec := common.Record{ // core CmdLine: *cmdLine, @@ -128,19 +152,21 @@ func main() { Login: *login, Path: *path, Pwd: *pwd, + PwdAfter: *pwdAfter, ShellEnv: *shellEnv, Term: *term, // non-posix - RealPwd: realPwd, - Pid: *pid, - ShellPid: *shellPid, - WindowId: *windowId, - Host: *host, - Hosttype: *hosttype, - Ostype: *ostype, - Machtype: *machtype, - Shlvl: *shlvl, + RealPwd: realPwd, + RealPwdAfter: realPwdAfter, + Pid: *pid, + ShellPid: *shellPid, + WindowId: *windowId, + Host: *host, + Hosttype: *hosttype, + Ostype: *ostype, + Machtype: *machtype, + Shlvl: *shlvl, // before after TimezoneBefore: *timezoneBefore, @@ -160,6 +186,12 @@ func main() { GitOriginRemote: *gitRemote, MachineId: readFileContent(machineIdPath), ReshUuid: readFileContent(reshUuidPath), + + OsReleaseId: *osReleaseId, + OsReleaseVersionId: *osReleaseVersionId, + OsReleaseIdLike: *osReleaseIdLike, + OsReleaseName: *osReleaseName, + OsReleasePrettyName: *osReleasePrettyName, } sendRecord(rec, strconv.Itoa(config.Port)) } diff --git a/common/resh-common.go b/common/resh-common.go index 4653e62..a3fb6c0 100644 --- a/common/resh-common.go +++ b/common/resh-common.go @@ -15,11 +15,13 @@ type Record struct { Login string `json:"login"` Path string `json:"path"` Pwd string `json:"pwd"` + PwdAfter string `json:"pwdAfter"` ShellEnv string `json:"shellEnv"` Term string `json:"term"` // non-posix"` RealPwd string `json:"realPwd"` + RealPwdAfter string `json:"realPwdAfter"` Pid int `json:"pid"` ShellPid int `json:"shellPid"` WindowId int `json:"windowId"` @@ -48,6 +50,12 @@ type Record struct { GitOriginRemote string `json:"gitOriginRemote"` MachineId string `json:"machineId"` ReshUuid string `json:"reshUuid"` + + OsReleaseId string `json:"osReleaseId"` + OsReleaseVersionId string `json:"osReleaseVersionId"` + OsReleaseIdLike string `json:"osReleaseIdLike"` + OsReleaseName string `json:"osReleaseName"` + OsReleasePrettyName string `json:"osReleasePrettyName"` } type Config struct { diff --git a/shellrc.sh b/shellrc.sh index bc30240..ccc7c35 100644 --- a/shellrc.sh +++ b/shellrc.sh @@ -8,6 +8,11 @@ PATH=$PATH:~/.resh/bin export __RESH_RT_SESSION=$(date +%s.%N) export __RESH_RT_SESS_SINCE_BOOT=$(cat /proc/uptime | cut -d' ' -f1) export __RESH_SESSION_ID=$(cat /proc/sys/kernel/random/uuid) +export __RESH_OS_RELEASE_ID=$(source /etc/os-release; echo $ID) +export __RESH_OS_RELEASE_VERSION_ID=$(source /etc/os-release; echo $VERSION_ID) +export __RESH_OS_RELEASE_ID_LIKE=$(source /etc/os-release; echo $ID_LIKE) +export __RESH_OS_RELEASE_NAME=$(source /etc/os-release; echo $NAME) +export __RESH_OS_RELEASE_PRETTY_NAME=$(source /etc/os-release; echo $PRETTY_NAME) nohup resh-daemon &>/dev/null & disown __resh_preexec() { @@ -77,6 +82,7 @@ __resh_precmd() { # __RESH_RT_AFTER=$EPOCHREALTIME __RESH_RT_AFTER="$(date +%s.%N)" __RESH_TZ_AFTER=$(date +%:z) + __RESH_PWD_AFTER="$PWD" if [ ! -z ${__RESH_COLLECT+x} ]; then resh-collect -cmdLine "$__RESH_CMDLINE" -exitCode "$__RESH_EXIT_CODE" \ -shell "$__RESH_SHELL" \ @@ -88,6 +94,7 @@ __resh_precmd() { -login "$__RESH_LOGIN" \ -path "$__RESH_PATH" \ -pwd "$__RESH_PWD" \ + -pwdAfter "$__RESH_PWD_AFTER" \ -shellEnv "$__RESH_SHELL_ENV" \ -term "$__RESH_TERM" \ -pid "$__RESH_PID" -shellPid "$__RESH_SHELL_PID" \ @@ -106,7 +113,12 @@ __resh_precmd() { -realtimeSession "$__RESH_RT_SESSION" \ -realtimeSessSinceBoot "$__RESH_RT_SESS_SINCE_BOOT" \ -timezoneBefore "$__RESH_TZ_BEFORE" \ - -timezoneAfter "$__RESH_TZ_AFTER" + -timezoneAfter "$__RESH_TZ_AFTER" \ + -osReleaseId "$__RESH_OS_RELEASE_ID" \ + -osReleaseVersionId "$__RESH_OS_RELEASE_VERSION_ID" \ + -osReleaseIdLike "$__RESH_OS_RELEASE_ID_LIKE" \ + -osReleaseName "$__RESH_OS_RELEASE_NAME" \ + -osReleasePrettyName "$__RESH_OS_RELEASE_PRETTY_NAME" fi unset __RESH_COLLECT }