Shell History
Many Unix and Linux like systems provide a shell interface that allows a user to execute a command or application. Many of these shell interfaces keep a record of the command executed and depending on the configuration the timestamp when the command was executed. Popular shells include:
- bash
- zsh
- fish
- sh
- PowerShell
Artemis
supports parsing zsh
and bash
shell history. In addition, it
supports parsing Python
history (despite not being a shell).
Other parsers:
- Any program that read a text file
References:
TOML Collection
system = "macos" # or "linux"
[output]
name = "shellhistory_collection"
directory = "./tmp"
format = "json"
compress = false
endpoint_id = "abdc"
collection_id = 1
output = "local"
[[artifacts]]
artifact_name = "shell_history"
Collection Options
- N/A
Output Structure
An array of BashHistory
for bash
data, ZshHistory
for zsh
data, and
PythonHistory
for Python
data per user.
export interface BashHistory {
/**Array of lines associated with `.bash_history` file */
history: BashData[];
/**Path to `.bash_history` file */
path: string;
/**User directory name */
user: string;
}
/**
* History data associated with `.bash_history`
*/
export interface BashData {
/**Line entry */
history: string;
/**Timestamp associated with line entry in UNIXEPOCH. Timestamps are **optional** in `.bash_history`, zero (0) is returned for no timestamp */
timestamp: number;
/**Line number */
line: number;
}
export interface ZshHistory {
/**Array of lines associated with `.zs_history` file */
history: ZshData[];
/**Path to `.bash_history` file */
path: string;
/**User directory name */
user: string;
}
/**
* History data associated with `.zsh_history`
*/
export interface ZshData {
/**Line entry */
history: string;
/**Timestamp associated with line entry in UNIXEPOCH. Timestamps are **optional** in `.zsh_history`, zero (0) is returned for no timestamp */
timestamp: number;
/**Line number */
line: number;
/**Duration of command */
duration: number;
}
export interface PythonHistory {
/**Array of lines associated with `.python_history` file */
history: PythonData[];
/**Path to `.python_history` file */
path: string;
/**User directory name */
user: string;
}
/**
* History data associated with `.python_history`
*/
export interface PythonData {
/**Line entry */
history: string;
/**Line number */
line: number;
}