对于需要输入密码的命令,通常我们不能简单地通过重定向输入(如使用 <
或 <<
)来避免手动输入密码。这是因为这些命令通常会直接从终端读取密码,以确保密码的安全性,不会从标准输入(stdin)读取。但是我们可以使用expect工具来自动输入密码。下面是自动实现kinit认证的步骤。
安装homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 然后设置环境变量
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> $HOME/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
安装expect
brew install expect
编写expect脚本
cat > ~/bin/work <\EOF
#!/usr/bin/expect -f
set username "user@EXAMPLE.COM"
set password "passwd"
spawn kinit --keychain -l 100d $username
expect {
"password:" {
send "$password\r"
}
timeout {
puts "Error: Timeout waiting for password prompt."
exit 1
}
eof {
puts "kinit command end."
exit 0
}
}
interact
EOF
chmod +x ~/bin/work
配置MacOS快捷指令
可以配置快捷指令,并固定到菜单栏