【发布时间】:2021-11-27 12:58:31
【问题描述】:
我有一个 bash 脚本,它使用 expect 包到 ssh 到远程服务器中。
我的脚本如下所示:
#!/bin/bash
while getopts "p:" option; do
case "${option}" in
p) PASSWORD=${OPTARG};;
esac
done
/usr/bin/expect -c "
spawn ssh my.login.server.com
expect {
\"Password*\" {
send \"$PASSWORD\r\"
}
}
interact
"
我像 ./login.sh -p <my-confidential-password>
现在,一旦你运行它并成功登录并从远程服务器退出,我可以从键盘上点击up-arrow-key,并且仍然可以在终端中看到我的带有密码的命令。或者我只是运行history 它会出现。一旦我退出终端,它也会出现在bash_history。
我需要在我的脚本中添加一些可以从历史记录中清除它并且不留下我在任何地方运行的命令(或密码)的痕迹。
我试过了:
- 使用
history -c && history -r清除它,这不起作用,因为脚本会创建自己的会话。 - 另外,
echo $HISTCMD在脚本中返回 1,因此我无法使用history -d <tag>清除。
附:我正在使用 macOS
【问题讨论】:
标签: bash macos terminal expect password-protection