完全吸收历史

简要概括

在shell中,可以使用“history -c”命令来清除历史记录。但是,历史记录还会存储在内存中,在注销时会从内存中恢复。因此,当再次登录时,历史记录又会重新显示出来。

命令行

执行下面的脚本将被完全删除。

cat /dev/null > ~/.bash_history && history -c && exit

安智能

目录结构

~/ansible
  |- server
     |- erase_history.yml
~/scripts
  |- server
     |- erase_script.sh

Ansible剧本

删除历史记录.yml

---
- name: check firewall setting
  hosts: "{{ host | default('network') }}"
  gather_facts: no

  tasks:
    - name: erase history
      shell:  "cat /dev/null > ~/.bash_history && history -c && exit"
      args:
        executable: /bin/bash

Bash脚本

擦除历史.sh

#!/bin/bash

HOST=""

usage() {
  echo "Usage: erase_history.sh [-n ホスト名] [-h ヘルプ]\nhistoryを初期化する" 1>&2
}

exit_abnormal() {
  usage
  exit 1
}

call_ansible_script() {
  cd ~/ansible/server/
  CMD="ansible-playbook erase_history.yml --ask-vault-pass"
  ARG=""
  if [ ! -z "$HOST" ]; then
    ARG="host=$HOST"
  fi
  ARG="$(echo -e "${ARG}" | sed -e 's/^[[:space:]]*//')"
  if [ ! -z "$ARG" ]; then
    CMD+=" -e \"$ARG\""
  fi
  eval ${CMD}
}

while getopts ":n:h" OPT; do
  case $OPT in
  n) HOST=${OPTARG};;
  h) usage
    exit 0
    ;;
  :) echo "-$OPTARGはホスト名が必須です"
    exit_abnormal;;
  esac
done
call_ansible_script
exit 0

以上 (yǐ 直接用法语法句表达

广告
将在 10 秒后关闭
bannerAds