Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

script/scriptreplay wrapper script which allows you to record your SSH terminal commands and session and replay them. The resulting recorded plain text typescript based files are saved as gzip compressed cmds.gz and time.txt.gz files to save disk space and allows replaying of the saved compressed files via this wrapper script.

This wrapper script uses script and scriptreplay commands.

script --help
Usage:
script [options] [file]
Make a typescript of a terminal session.
Options:
-a, --append append the output
-c, --command <command> run command rather than interactive shell
-e, --return return exit code of the child process
-f, --flush run flush after each write
--force use output file even when it is a link
-q, --quiet be quiet
-t[<file>], --timing[=<file>] output timing data to stderr or to FILE
-h, --help display this help
-V, --version display version
For more details see script(1).
scriptreplay --help
Usage:
scriptreplay [-t] timingfile [typescript] [divisor]
Play back terminal typescripts, using timing information.
Options:
-t, --timing <file> script timing output file
-s, --typescript <file> script terminal session output file
-d, --divisor <num> speed up or slow down execution with time divisor
-m, --maxdelay <num> wait at most this many seconds between updates
-h, --help display this help
-V, --version display version
For more details see scriptreplay(1).

Installation

You can download the script-record.sh script and make it executable and run it that way. Or save it a globally executable command:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record
script-record Usage:
/usr/local/bin/script-record rec SESSION_NAME
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz 2
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt 2
/usr/local/bin/script-record list

Update

Updating globally executable command is the same installation:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record

Usage

  • rec - enter your SESSION_NAME. If you do not pass a session name, the script will automatically name the session as session.
  • play - pass the full paths to where the cmds.gz and time.txt.gz files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • play-nogz - pass the full paths to where the uncompressed non-gzip cmds and time.txt files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • list - list all previously saved cmds.gz and time.txt.gz files.
./script-record.sh
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz 2
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt 2
./script-record.sh list

script record SSH commands

record a SSH session named cmds which will be saved to date and timestamped directory like /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1. If you do not pass a session name, the script will automatically name the session as session i.e. /root/.script/2022-08-25/2022-08-25_23-01-40-session.

./script-record.sh rec cmds1
your_ssh_commands

To exit and save the recorded session, type exit command which will output the where the cmds.gz and time.txt.gz files are saved and used for scriptreplay playback:

exit
files saved:
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 1x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 2x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz 2

scriptreplay replay SSH commands

Running scriptreplay via play argument when you incorrectly leave out the script saved cmds.gz and time.txt.gz previously recorded files will also list all previously saved files for easier viewing.

./script-record.sh play
error: required file path(s) to cmds.gz or time.txt.gz do not exist
existing files detected:
/root/.script
└── /root/.script/2022-08-25
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
2 directories, 2 files
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz

Replay

Proper scriptreplay passing the previously saved cmds.gz and time.txt.gz files:

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz

Replay Speed

Pass a 3rd argument for playback speed i.e. 2x speed

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz 2

scriptreplay playback

list saved files

./script-record.sh list
saved files listing:
/root/.script
└── /root/.script/2022-08-25
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/time.txt.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1
├── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz
5 directories, 8 files

About

script and scriptreplay wrapper script

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

script/scriptreplay wrapper script which allows you to record your SSH terminal commands and session and replay them. The resulting recorded plain text typescript based files are saved as gzip compressed cmds.gz and time.txt.gz files to save disk space and allows replaying of the saved compressed files via this wrapper script.

This wrapper script uses script and scriptreplay commands.

script --help
Usage:
script [options] [file]
Make a typescript of a terminal session.
Options:
-a, --append append the output
-c, --command <command> run command rather than interactive shell
-e, --return return exit code of the child process
-f, --flush run flush after each write
--force use output file even when it is a link
-q, --quiet be quiet
-t[<file>], --timing[=<file>] output timing data to stderr or to FILE
-h, --help display this help
-V, --version display version
For more details see script(1).
scriptreplay --help
Usage:
scriptreplay [-t] timingfile [typescript] [divisor]
Play back terminal typescripts, using timing information.
Options:
-t, --timing <file> script timing output file
-s, --typescript <file> script terminal session output file
-d, --divisor <num> speed up or slow down execution with time divisor
-m, --maxdelay <num> wait at most this many seconds between updates
-h, --help display this help
-V, --version display version
For more details see scriptreplay(1).

Installation

You can download the script-record.sh script and make it executable and run it that way. Or save it a globally executable command:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record
script-record Usage:
/usr/local/bin/script-record rec SESSION_NAME
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz 2
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt 2
/usr/local/bin/script-record list

Update

Updating globally executable command is the same installation:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record

Usage

  • rec - enter your SESSION_NAME. If you do not pass a session name, the script will automatically name the session as session.
  • play - pass the full paths to where the cmds.gz and time.txt.gz files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • play-nogz - pass the full paths to where the uncompressed non-gzip cmds and time.txt files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • list - list all previously saved cmds.gz and time.txt.gz files.
./script-record.sh
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz 2
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt 2
./script-record.sh list

script record SSH commands

record a SSH session named cmds which will be saved to date and timestamped directory like /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1. If you do not pass a session name, the script will automatically name the session as session i.e. /root/.script/2022-08-25/2022-08-25_23-01-40-session.

./script-record.sh rec cmds1
your_ssh_commands

To exit and save the recorded session, type exit command which will output the where the cmds.gz and time.txt.gz files are saved and used for scriptreplay playback:

exit
files saved:
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 1x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 2x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz 2

scriptreplay replay SSH commands

Running scriptreplay via play argument when you incorrectly leave out the script saved cmds.gz and time.txt.gz previously recorded files will also list all previously saved files for easier viewing.

./script-record.sh play
error: required file path(s) to cmds.gz or time.txt.gz do not exist
existing files detected:
/root/.script
└── /root/.script/2022-08-25
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
2 directories, 2 files
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz

Replay

Proper scriptreplay passing the previously saved cmds.gz and time.txt.gz files:

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz

Replay Speed

Pass a 3rd argument for playback speed i.e. 2x speed

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz 2

scriptreplay playback

list saved files

./script-record.sh list
saved files listing:
/root/.script
└── /root/.script/2022-08-25
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/time.txt.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1
├── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz
5 directories, 8 files

About

script and scriptreplay wrapper script

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

script/scriptreplay wrapper script which allows you to record your SSH terminal commands and session and replay them. The resulting recorded plain text typescript based files are saved as gzip compressed cmds.gz and time.txt.gz files to save disk space and allows replaying of the saved compressed files via this wrapper script.

This wrapper script uses script and scriptreplay commands.

script --help
Usage:
script [options] [file]
Make a typescript of a terminal session.
Options:
-a, --append append the output
-c, --command <command> run command rather than interactive shell
-e, --return return exit code of the child process
-f, --flush run flush after each write
--force use output file even when it is a link
-q, --quiet be quiet
-t[<file>], --timing[=<file>] output timing data to stderr or to FILE
-h, --help display this help
-V, --version display version
For more details see script(1).
scriptreplay --help
Usage:
scriptreplay [-t] timingfile [typescript] [divisor]
Play back terminal typescripts, using timing information.
Options:
-t, --timing <file> script timing output file
-s, --typescript <file> script terminal session output file
-d, --divisor <num> speed up or slow down execution with time divisor
-m, --maxdelay <num> wait at most this many seconds between updates
-h, --help display this help
-V, --version display version
For more details see scriptreplay(1).

Installation

You can download the script-record.sh script and make it executable and run it that way. Or save it a globally executable command:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record
script-record Usage:
/usr/local/bin/script-record rec SESSION_NAME
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz 2
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt 2
/usr/local/bin/script-record list

Update

Updating globally executable command is the same installation:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record

Usage

  • rec - enter your SESSION_NAME. If you do not pass a session name, the script will automatically name the session as session.
  • play - pass the full paths to where the cmds.gz and time.txt.gz files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • play-nogz - pass the full paths to where the uncompressed non-gzip cmds and time.txt files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • list - list all previously saved cmds.gz and time.txt.gz files.
./script-record.sh
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz 2
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt 2
./script-record.sh list

script record SSH commands

record a SSH session named cmds which will be saved to date and timestamped directory like /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1. If you do not pass a session name, the script will automatically name the session as session i.e. /root/.script/2022-08-25/2022-08-25_23-01-40-session.

./script-record.sh rec cmds1
your_ssh_commands

To exit and save the recorded session, type exit command which will output the where the cmds.gz and time.txt.gz files are saved and used for scriptreplay playback:

exit
files saved:
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 1x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 2x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz 2

scriptreplay replay SSH commands

Running scriptreplay via play argument when you incorrectly leave out the script saved cmds.gz and time.txt.gz previously recorded files will also list all previously saved files for easier viewing.

./script-record.sh play
error: required file path(s) to cmds.gz or time.txt.gz do not exist
existing files detected:
/root/.script
└── /root/.script/2022-08-25
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
2 directories, 2 files
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz

Replay

Proper scriptreplay passing the previously saved cmds.gz and time.txt.gz files:

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz

Replay Speed

Pass a 3rd argument for playback speed i.e. 2x speed

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz 2

scriptreplay playback

list saved files

./script-record.sh list
saved files listing:
/root/.script
└── /root/.script/2022-08-25
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/time.txt.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1
├── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz
5 directories, 8 files

About

script and scriptreplay wrapper script

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

script/scriptreplay wrapper script which allows you to record your SSH terminal commands and session and replay them. The resulting recorded plain text typescript based files are saved as gzip compressed cmds.gz and time.txt.gz files to save disk space and allows replaying of the saved compressed files via this wrapper script.

This wrapper script uses script and scriptreplay commands.

script --help
Usage:
script [options] [file]
Make a typescript of a terminal session.
Options:
-a, --append append the output
-c, --command <command> run command rather than interactive shell
-e, --return return exit code of the child process
-f, --flush run flush after each write
--force use output file even when it is a link
-q, --quiet be quiet
-t[<file>], --timing[=<file>] output timing data to stderr or to FILE
-h, --help display this help
-V, --version display version
For more details see script(1).
scriptreplay --help
Usage:
scriptreplay [-t] timingfile [typescript] [divisor]
Play back terminal typescripts, using timing information.
Options:
-t, --timing <file> script timing output file
-s, --typescript <file> script terminal session output file
-d, --divisor <num> speed up or slow down execution with time divisor
-m, --maxdelay <num> wait at most this many seconds between updates
-h, --help display this help
-V, --version display version
For more details see scriptreplay(1).

Installation

You can download the script-record.sh script and make it executable and run it that way. Or save it a globally executable command:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record
script-record Usage:
/usr/local/bin/script-record rec SESSION_NAME
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz 2
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt 2
/usr/local/bin/script-record list

Update

Updating globally executable command is the same installation:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record

Usage

  • rec - enter your SESSION_NAME. If you do not pass a session name, the script will automatically name the session as session.
  • play - pass the full paths to where the cmds.gz and time.txt.gz files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • play-nogz - pass the full paths to where the uncompressed non-gzip cmds and time.txt files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • list - list all previously saved cmds.gz and time.txt.gz files.
./script-record.sh
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz 2
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt 2
./script-record.sh list

script record SSH commands

record a SSH session named cmds which will be saved to date and timestamped directory like /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1. If you do not pass a session name, the script will automatically name the session as session i.e. /root/.script/2022-08-25/2022-08-25_23-01-40-session.

./script-record.sh rec cmds1
your_ssh_commands

To exit and save the recorded session, type exit command which will output the where the cmds.gz and time.txt.gz files are saved and used for scriptreplay playback:

exit
files saved:
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 1x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 2x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz 2

scriptreplay replay SSH commands

Running scriptreplay via play argument when you incorrectly leave out the script saved cmds.gz and time.txt.gz previously recorded files will also list all previously saved files for easier viewing.

./script-record.sh play
error: required file path(s) to cmds.gz or time.txt.gz do not exist
existing files detected:
/root/.script
└── /root/.script/2022-08-25
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
2 directories, 2 files
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz

Replay

Proper scriptreplay passing the previously saved cmds.gz and time.txt.gz files:

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz

Replay Speed

Pass a 3rd argument for playback speed i.e. 2x speed

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz 2

scriptreplay playback

list saved files

./script-record.sh list
saved files listing:
/root/.script
└── /root/.script/2022-08-25
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/time.txt.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1
├── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz
5 directories, 8 files

About

script and scriptreplay wrapper script

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

script/scriptreplay wrapper script which allows you to record your SSH terminal commands and session and replay them. The resulting recorded plain text typescript based files are saved as gzip compressed cmds.gz and time.txt.gz files to save disk space and allows replaying of the saved compressed files via this wrapper script.

This wrapper script uses script and scriptreplay commands.

script --help
Usage:
script [options] [file]
Make a typescript of a terminal session.
Options:
-a, --append append the output
-c, --command <command> run command rather than interactive shell
-e, --return return exit code of the child process
-f, --flush run flush after each write
--force use output file even when it is a link
-q, --quiet be quiet
-t[<file>], --timing[=<file>] output timing data to stderr or to FILE
-h, --help display this help
-V, --version display version
For more details see script(1).
scriptreplay --help
Usage:
scriptreplay [-t] timingfile [typescript] [divisor]
Play back terminal typescripts, using timing information.
Options:
-t, --timing <file> script timing output file
-s, --typescript <file> script terminal session output file
-d, --divisor <num> speed up or slow down execution with time divisor
-m, --maxdelay <num> wait at most this many seconds between updates
-h, --help display this help
-V, --version display version
For more details see scriptreplay(1).

Installation

You can download the script-record.sh script and make it executable and run it that way. Or save it a globally executable command:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record
script-record Usage:
/usr/local/bin/script-record rec SESSION_NAME
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz 2
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt 2
/usr/local/bin/script-record list

Update

Updating globally executable command is the same installation:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record

Usage

  • rec - enter your SESSION_NAME. If you do not pass a session name, the script will automatically name the session as session.
  • play - pass the full paths to where the cmds.gz and time.txt.gz files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • play-nogz - pass the full paths to where the uncompressed non-gzip cmds and time.txt files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • list - list all previously saved cmds.gz and time.txt.gz files.
./script-record.sh
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz 2
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt 2
./script-record.sh list

script record SSH commands

record a SSH session named cmds which will be saved to date and timestamped directory like /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1. If you do not pass a session name, the script will automatically name the session as session i.e. /root/.script/2022-08-25/2022-08-25_23-01-40-session.

./script-record.sh rec cmds1
your_ssh_commands

To exit and save the recorded session, type exit command which will output the where the cmds.gz and time.txt.gz files are saved and used for scriptreplay playback:

exit
files saved:
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 1x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 2x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz 2

scriptreplay replay SSH commands

Running scriptreplay via play argument when you incorrectly leave out the script saved cmds.gz and time.txt.gz previously recorded files will also list all previously saved files for easier viewing.

./script-record.sh play
error: required file path(s) to cmds.gz or time.txt.gz do not exist
existing files detected:
/root/.script
└── /root/.script/2022-08-25
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
2 directories, 2 files
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz

Replay

Proper scriptreplay passing the previously saved cmds.gz and time.txt.gz files:

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz

Replay Speed

Pass a 3rd argument for playback speed i.e. 2x speed

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz 2

scriptreplay playback

list saved files

./script-record.sh list
saved files listing:
/root/.script
└── /root/.script/2022-08-25
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/time.txt.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1
├── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz
5 directories, 8 files

About

script and scriptreplay wrapper script

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

script/scriptreplay wrapper script which allows you to record your SSH terminal commands and session and replay them. The resulting recorded plain text typescript based files are saved as gzip compressed cmds.gz and time.txt.gz files to save disk space and allows replaying of the saved compressed files via this wrapper script.

This wrapper script uses script and scriptreplay commands.

script --help
Usage:
script [options] [file]
Make a typescript of a terminal session.
Options:
-a, --append append the output
-c, --command <command> run command rather than interactive shell
-e, --return return exit code of the child process
-f, --flush run flush after each write
--force use output file even when it is a link
-q, --quiet be quiet
-t[<file>], --timing[=<file>] output timing data to stderr or to FILE
-h, --help display this help
-V, --version display version
For more details see script(1).
scriptreplay --help
Usage:
scriptreplay [-t] timingfile [typescript] [divisor]
Play back terminal typescripts, using timing information.
Options:
-t, --timing <file> script timing output file
-s, --typescript <file> script terminal session output file
-d, --divisor <num> speed up or slow down execution with time divisor
-m, --maxdelay <num> wait at most this many seconds between updates
-h, --help display this help
-V, --version display version
For more details see scriptreplay(1).

Installation

You can download the script-record.sh script and make it executable and run it that way. Or save it a globally executable command:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record
script-record Usage:
/usr/local/bin/script-record rec SESSION_NAME
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz 2
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt 2
/usr/local/bin/script-record list

Update

Updating globally executable command is the same installation:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record

Usage

  • rec - enter your SESSION_NAME. If you do not pass a session name, the script will automatically name the session as session.
  • play - pass the full paths to where the cmds.gz and time.txt.gz files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • play-nogz - pass the full paths to where the uncompressed non-gzip cmds and time.txt files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • list - list all previously saved cmds.gz and time.txt.gz files.
./script-record.sh
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz 2
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt 2
./script-record.sh list

script record SSH commands

record a SSH session named cmds which will be saved to date and timestamped directory like /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1. If you do not pass a session name, the script will automatically name the session as session i.e. /root/.script/2022-08-25/2022-08-25_23-01-40-session.

./script-record.sh rec cmds1
your_ssh_commands

To exit and save the recorded session, type exit command which will output the where the cmds.gz and time.txt.gz files are saved and used for scriptreplay playback:

exit
files saved:
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 1x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 2x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz 2

scriptreplay replay SSH commands

Running scriptreplay via play argument when you incorrectly leave out the script saved cmds.gz and time.txt.gz previously recorded files will also list all previously saved files for easier viewing.

./script-record.sh play
error: required file path(s) to cmds.gz or time.txt.gz do not exist
existing files detected:
/root/.script
└── /root/.script/2022-08-25
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
2 directories, 2 files
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz

Replay

Proper scriptreplay passing the previously saved cmds.gz and time.txt.gz files:

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz

Replay Speed

Pass a 3rd argument for playback speed i.e. 2x speed

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz 2

scriptreplay playback

list saved files

./script-record.sh list
saved files listing:
/root/.script
└── /root/.script/2022-08-25
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/time.txt.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1
├── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz
5 directories, 8 files

About

script and scriptreplay wrapper script

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

script/scriptreplay wrapper script which allows you to record your SSH terminal commands and session and replay them. The resulting recorded plain text typescript based files are saved as gzip compressed cmds.gz and time.txt.gz files to save disk space and allows replaying of the saved compressed files via this wrapper script.

This wrapper script uses script and scriptreplay commands.

script --help
Usage:
script [options] [file]
Make a typescript of a terminal session.
Options:
-a, --append append the output
-c, --command <command> run command rather than interactive shell
-e, --return return exit code of the child process
-f, --flush run flush after each write
--force use output file even when it is a link
-q, --quiet be quiet
-t[<file>], --timing[=<file>] output timing data to stderr or to FILE
-h, --help display this help
-V, --version display version
For more details see script(1).
scriptreplay --help
Usage:
scriptreplay [-t] timingfile [typescript] [divisor]
Play back terminal typescripts, using timing information.
Options:
-t, --timing <file> script timing output file
-s, --typescript <file> script terminal session output file
-d, --divisor <num> speed up or slow down execution with time divisor
-m, --maxdelay <num> wait at most this many seconds between updates
-h, --help display this help
-V, --version display version
For more details see scriptreplay(1).

Installation

You can download the script-record.sh script and make it executable and run it that way. Or save it a globally executable command:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record
script-record Usage:
/usr/local/bin/script-record rec SESSION_NAME
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz 2
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt 2
/usr/local/bin/script-record list

Update

Updating globally executable command is the same installation:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record

Usage

  • rec - enter your SESSION_NAME. If you do not pass a session name, the script will automatically name the session as session.
  • play - pass the full paths to where the cmds.gz and time.txt.gz files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • play-nogz - pass the full paths to where the uncompressed non-gzip cmds and time.txt files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • list - list all previously saved cmds.gz and time.txt.gz files.
./script-record.sh
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz 2
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt 2
./script-record.sh list

script record SSH commands

record a SSH session named cmds which will be saved to date and timestamped directory like /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1. If you do not pass a session name, the script will automatically name the session as session i.e. /root/.script/2022-08-25/2022-08-25_23-01-40-session.

./script-record.sh rec cmds1
your_ssh_commands

To exit and save the recorded session, type exit command which will output the where the cmds.gz and time.txt.gz files are saved and used for scriptreplay playback:

exit
files saved:
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 1x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 2x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz 2

scriptreplay replay SSH commands

Running scriptreplay via play argument when you incorrectly leave out the script saved cmds.gz and time.txt.gz previously recorded files will also list all previously saved files for easier viewing.

./script-record.sh play
error: required file path(s) to cmds.gz or time.txt.gz do not exist
existing files detected:
/root/.script
└── /root/.script/2022-08-25
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
2 directories, 2 files
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz

Replay

Proper scriptreplay passing the previously saved cmds.gz and time.txt.gz files:

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz

Replay Speed

Pass a 3rd argument for playback speed i.e. 2x speed

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz 2

scriptreplay playback

list saved files

./script-record.sh list
saved files listing:
/root/.script
└── /root/.script/2022-08-25
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/time.txt.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1
├── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz
5 directories, 8 files

About

script and scriptreplay wrapper script

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

script/scriptreplay wrapper script which allows you to record your SSH terminal commands and session and replay them. The resulting recorded plain text typescript based files are saved as gzip compressed cmds.gz and time.txt.gz files to save disk space and allows replaying of the saved compressed files via this wrapper script.

This wrapper script uses script and scriptreplay commands.

script --help
Usage:
script [options] [file]
Make a typescript of a terminal session.
Options:
-a, --append append the output
-c, --command <command> run command rather than interactive shell
-e, --return return exit code of the child process
-f, --flush run flush after each write
--force use output file even when it is a link
-q, --quiet be quiet
-t[<file>], --timing[=<file>] output timing data to stderr or to FILE
-h, --help display this help
-V, --version display version
For more details see script(1).
scriptreplay --help
Usage:
scriptreplay [-t] timingfile [typescript] [divisor]
Play back terminal typescripts, using timing information.
Options:
-t, --timing <file> script timing output file
-s, --typescript <file> script terminal session output file
-d, --divisor <num> speed up or slow down execution with time divisor
-m, --maxdelay <num> wait at most this many seconds between updates
-h, --help display this help
-V, --version display version
For more details see scriptreplay(1).

Installation

You can download the script-record.sh script and make it executable and run it that way. Or save it a globally executable command:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record
script-record Usage:
/usr/local/bin/script-record rec SESSION_NAME
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz
/usr/local/bin/script-record play /path/to/cmds.gz /path/to/time.txt.gz 2
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt
/usr/local/bin/script-record play-nogz /path/to/cmds /path/to/time.txt 2
/usr/local/bin/script-record list

Update

Updating globally executable command is the same installation:

curl -sL https://github.com/centminmod/scriptreplay/raw/master/script-record.sh -o /usr/local/bin/script-record
chmod +x /usr/local/bin/script-record

Usage

  • rec - enter your SESSION_NAME. If you do not pass a session name, the script will automatically name the session as session.
  • play - pass the full paths to where the cmds.gz and time.txt.gz files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • play-nogz - pass the full paths to where the uncompressed non-gzip cmds and time.txt files are saved. You can optionally pass a 3rd arugument for playback speed i.e. pass 2 for 2x playback speed.
  • list - list all previously saved cmds.gz and time.txt.gz files.
./script-record.sh
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz 2
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt
./script-record.sh play-nogz /path/to/cmds /path/to/time.txt 2
./script-record.sh list

script record SSH commands

record a SSH session named cmds which will be saved to date and timestamped directory like /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1. If you do not pass a session name, the script will automatically name the session as session i.e. /root/.script/2022-08-25/2022-08-25_23-01-40-session.

./script-record.sh rec cmds1
your_ssh_commands

To exit and save the recorded session, type exit command which will output the where the cmds.gz and time.txt.gz files are saved and used for scriptreplay playback:

exit
files saved:
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
/root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 1x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
to replay 2x speed:
./script-record play /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz 2

scriptreplay replay SSH commands

Running scriptreplay via play argument when you incorrectly leave out the script saved cmds.gz and time.txt.gz previously recorded files will also list all previously saved files for easier viewing.

./script-record.sh play
error: required file path(s) to cmds.gz or time.txt.gz do not exist
existing files detected:
/root/.script
└── /root/.script/2022-08-25
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
2 directories, 2 files
Usage:
./script-record.sh rec SESSION_NAME
./script-record.sh play /path/to/cmds.gz /path/to/time.txt.gz

Replay

Proper scriptreplay passing the previously saved cmds.gz and time.txt.gz files:

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz

Replay Speed

Pass a 3rd argument for playback speed i.e. 2x speed

./script-record.sh play /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz 2

scriptreplay playback

list saved files

./script-record.sh list
saved files listing:
/root/.script
└── /root/.script/2022-08-25
├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_22-44-10-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-01-40-cmds1/time.txt.gz
├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1
│ ├── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/cmds.gz
│ └── /root/.script/2022-08-25/2022-08-25_23-40-10-cmds1/time.txt.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1
├── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/cmds.gz
└── /root/.script/2022-08-25/2022-08-25_23-42-06-cmds1/time.txt.gz
5 directories, 8 files

About

script and scriptreplay wrapper script

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages