ユーザーに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に関心があります