我正在寻找一种运行SSH(特别是但不一定是OpenSSH)并将针对远程运行的所有命令记录到本地文件中的方法。
运行每个命令作为一个独立的SSH命令的确会记录每个命令我当地的历史,但它通常是不可取的运行如
ssh [email protected] -- foo -a --bar baz
每一个命令。
我宁愿ssh到正常方式的服务器,或者通过ssh本身,或通过包装指令,如“SSH-记录”。
我设想的方案节省输入的命令通过SSH到本地客户机上的文件,以同等炮弹如何做到这一点,如〜/ .ssh_history似乎是个不错的默认,也许每个用户+主机的组合排列,但我不真正关心它保存在这一刻。
简而言之,我希望发生以下情况:
~ $ ssh [email protected]
[user@host ~]$ foo --bar
[user@host ~]$ exit
~ $ cat .ssh_history_user@host
foo --bar
exit
~ $
是否这样的事情存在,无论是作为晦涩OpenSSH客户端配置,或作为另一开源/自由SSH客户端的一部分,或作为一个瘦包装程序,可以简单地将自己的用户的标准输入的输入的方式,以及透明地发送他们正在运行的程序的标准输入,而记录呢?(我听到SecureCRT的具有记录功能,这也许是大致是这样的,但至少在我的个人生活我不希望使用非FLOSS工具)。
如果你是在UNIX中,标准的工具script
是专为这一目的。如果运行script
不带参数,它开始你的shell的副本并记录会话到一个名为“打字稿”文件:
~ jdoe$ script
Script started, output file is typescript
bash-3.2$ date
Fri May 8 16:29:44 EDT 2015
bash-3.2$ exit
exit
Script done, output file is typescript
~ jdoe$ cat typescript
Script started on Fri May 8 16:29:42 2015
bash-3.2$ date
Fri May 8 16:29:44 EDT 2015
bash-3.2$ exit
exit
Script done on Fri May 8 16:29:45 2015
~ jdoe$
您可以指定文件日志和命令来运行,而不是外壳。这部分尚未完全标准化。在我的OSX系统,你会像这样运行:
script name-of-log-file command arg...
eg
script ssh-log ssh user@somehost
对于普通的linux版本,您可以这样运行它:
script -c 'command arg...' name-of-log-file
eg
script -c 'ssh user@somehost' ssh-log
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句