私は、ユーザーに彼らのためにプロンプトを表示するスクリプトを持っていますsudoのパスワードを入力し、ホストのリストを繰り返して、リモートホストでコマンドを実行します。私は自分のパスワードを静かに得るために "read -s"を行うことができますが、パスワードがリモートホストで使用されるたびに端末にエコーバックします。例:
#!/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に関する
回答:
回答№1は1試す expect
:
#!/bin/sh
echo "Enter sudo pass:"
read -s SUDOPASS
expect -c "spawn ssh -tt remote_host sudo cat /etc/cma.conf ; expect -re "\[sudo\] password for .*:"; send """$SUDOPASS""n";interact"
回答№2の場合は0
正直言って、私はここで問題を見つけられませんでしたが、出力を手動でリダイレクトして静かにすることがよくあります。
ssh -tt remote_host sudo cat /etc/cma.conf <<EOP >& /dev/null
これが助けになるかどうかわかりません。