避免在存储命令和函数输出的脚本上捕获输入
Avoid capturing input on a script that stores output of command and functions
我有一个脚本,用于将命令、函数和其他脚本的输出存储在日志文件中。
我想避免捕获用户输入。
负责将命令输出存储到日志文件的行是这一行:
$command 2>&1 | tee /dev/tty | ruby -pe 'print Time.now.strftime("[%s] ") if !$stdin.tty?' >> "$tempfile"
如果命令是要求用户输入并打印出这些数据的函数或脚本,则该输入将存储在临时文件中。我想避免这种情况,因为我不想捕获敏感数据。
我无法修改我正在包装的命令、函数。
您的命令只保存程序输出,不保存用户输入。您看到的问题是该命令已选择输出用户输入的任何内容,并将其合并到自己的输出中,然后显然会记录下来。
没有好的解决办法。请修复您的命令。
总之。这是一个不好的、脆弱的、hacky 的解决方法:
tempfile=test.txt
command='read -ep Enter_some_input: '
$command 2>&1 |
tee /dev/tty |
python3 -c $'import os\nwhile s:=os.read(0, 1024):\n if len(s) > 3: os.write(1, s)' |
ruby -pe 'print Time.now.strftime("[%s] ") if !$stdin.tty?' >> "$tempfile"
Python 命令丢弃所有 3 字节或更少字节的读取。这旨在消除字符回声,就像用户输入 readline
和类似内容的最基本情况一样,同时希望不会删除太多有意的输出。
我有一个脚本,用于将命令、函数和其他脚本的输出存储在日志文件中。
我想避免捕获用户输入。
负责将命令输出存储到日志文件的行是这一行:
$command 2>&1 | tee /dev/tty | ruby -pe 'print Time.now.strftime("[%s] ") if !$stdin.tty?' >> "$tempfile"
如果命令是要求用户输入并打印出这些数据的函数或脚本,则该输入将存储在临时文件中。我想避免这种情况,因为我不想捕获敏感数据。
我无法修改我正在包装的命令、函数。
您的命令只保存程序输出,不保存用户输入。您看到的问题是该命令已选择输出用户输入的任何内容,并将其合并到自己的输出中,然后显然会记录下来。
没有好的解决办法。请修复您的命令。
总之。这是一个不好的、脆弱的、hacky 的解决方法:
tempfile=test.txt
command='read -ep Enter_some_input: '
$command 2>&1 |
tee /dev/tty |
python3 -c $'import os\nwhile s:=os.read(0, 1024):\n if len(s) > 3: os.write(1, s)' |
ruby -pe 'print Time.now.strftime("[%s] ") if !$stdin.tty?' >> "$tempfile"
Python 命令丢弃所有 3 字节或更少字节的读取。这旨在消除字符回声,就像用户输入 readline
和类似内容的最基本情况一样,同时希望不会删除太多有意的输出。