如何登录通过ssh发送非交互式bash命令(How to log non-interactive b

2019-10-22 06:32发布

我通过ssh发送一个命令:

ssh server.org 'bash -s' << EOF
ls -al
whoami
uptime
EOF

如何记录它在系统(远程服务器)? 我想在一些文件(.bash_history的或/ TMP /日志)来记录这些命令。

我尝试添加下面的sshd_config行:

ForceCommand if [[ -z $SSH_ORIGINAL_COMMAND ]]; then bash; else echo "$SSH_ORIGINAL_COMMAND" >> .bash_history; bash -c "$SSH_ORIGINAL_COMMAND"; fi

但它仅记录“庆典-s”。

我要感谢所有帮助。

Answer 1:

当bash shell退出时,bash读取并从〜/ .bash_logout中文件执行命令。 也许你可以在.bash_logout中(服务器)结束时运行的历史命令,并将其保存到某个位置。



Answer 2:

  • 如果有足够的指挥权交给了工作,我们可以把必要的补充,以使在开头和结尾,例如日志命令历史记录

     ssh server.org bash <<EOF set -o history ls -al whoami uptime history|sed 's/ *[0-9]* *//' >>~/.bash_history EOF 
  • 或者,我们可以把它们放进了相当长的ForceCommand行:

     … if [[ "$SSH_ORIGINAL_COMMAND" == bash* ]]; then echo "set -o history"; cat; echo "history|sed 's/ *[0-9]* *//' >>~/.bash_history"; else cat; fi | bash -c "$SSH_ORIGINAL_COMMAND"; fi 


文章来源: How to log non-interactive bash command sent through ssh