如何解决脚本命令:单独的输入和输出
我正在尝试监视Shell上的命令执行。 我需要分隔输入命令,例如:
input:
ls -l /
output:
total 76
lrwxrwxrwx 1 root root 7 Aug 11 10:25 bin -> usr/bin
drwxr-xr-x 3 root root 4096 Aug 11 11:18 boot
drwxr-xr-x 17 root root 3200 Oct 11 11:10 dev
...
此外,例如,如果通过ssh连接到另一台服务器后打开另一个外壳,我也想做同样的事情。 我一直在使用脚本命令来执行此操作,并且效果很好!
即使外壳发生更改(例如,通过ssh
或输入msfconsole),它也会记录所有命令的输入和输出。
尽管如此,我发现了两个主要问题:
- 对于我的项目,我需要将每个命令与其余命令分开(使用解码器),而且能够将命令的输入和输出分开也很棒,例如:
cmd1. pwd ---> /var/
cmd2. echo "hello world" ---> "hello world"
....
- 有时候,由于要过滤掉的外壳特殊字符(例如颜色),脚本命令可能会产生带有垃圾的输出。
所以我一直在考虑这个问题,我想我可以创建一个简单的脚本,该脚本从“ script ”命令编写的文件中读取并处理数据。 不过,我不确定执行此操作的最佳方法是什么。
我正在评估不同的解决方案,并且我想了解社区中的不同建议。 也许我正在丢失一些东西,而您知道一个比脚本命令更好的工具,或者有一些我没有考虑过的想法。
最诚挚的问候,
解决方法
用于区分 stdout 和 stderr 的有用工具是annotate-output
(安装"devscripts" package),它发送 stderr 和 stdin 都带有 stdout 以及有用的小前缀。例如,让我们尝试计算一个文件的字符,再加上一个不存在的文件:
annotate-output wc -c /bin/bash /bin/nosuchshell
输出:
00:29:06 I: Started wc -c /bin/bash /bin/nosuchshell
00:29:06 E: wc: /bin/nosuchshell: No such file or directory
00:29:06 O: 1099016 /bin/bash
00:29:06 O: 1099016 total
00:29:06 I: Finished with exitcode 1
可以使用sed
,awk
甚至是tee
和几个grep
来分别解析输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。