我有一个脚本提示用户输入他们的 sudo 密码,然后遍历主机列表并在远程主机上执行命令。我可以“读取 -s”以静默获取他们的密码,但是每次在远程主机上使用他们的密码时,它都会回显到终端。在本地主机上更改 stty 没有帮助。例子:
#!/bin/sh -x
echo "Enter sudo pass:"
read -s SUDOPASS
stty_orig=$(stty -g)
stty -echo
ssh -tt remote_host sudo cat /etc/cma.conf <<EOP
$SUDOPASS
EOP
stty $stty_orig
输出仍然包含密码:
+ ssh -tt remote_host sudo cat /etc/cma.conf
My_P4ssW0rd!
Password:
<?xml version="1.0" encoding="UTF-8"?>
...
在远程主机上使用 stty 也无济于事:
stty_orig=$(ssh -t remote_host stty -g)
ssh -t remote_host stty -echo
ssh -tt remote_host sudo cat /etc/cma.conf <<EOP
$SUDOPASS
EOP
ssh -t remote_host stty $stty_orig
FWIW,我主要关心 OSX bash/sh