2016-10-18 13 views
0

リストから取得したサーバにsshのスクリプトを書き込んで、サブスクリプションマネージャの情報を報告しています。ここで私が持っているスクリプトですが、問題があります。シェルスクリプトからリモートでRed Hatのサブスクリプション情報を取得する

そのOutput.logですを見て、起こっているように見える何
#!/bin/bash 

SERVERLIST=`cat $HOME/Documents/RHEL_servers.txt | awk '{print $1}'` 
SUBCOMMAND='sudo subscription-manager list --available' 

#for HOSTS in $SERVERLIST; do echo $HOSTS; 
#done 

for HOSTS in $SERVERLIST; do ssh -t $HOSTS "($SUBCOMMAND)" > output.log; 
done 

、スクリプトは、サブスクリプション-managerコマンドを起動するために、私のパスワードを入力するステップにぶら下がっているということですがしかし私はそれを見ない。私の想定は、リモートマシン上の接続にそれを渡しているのではなく、自分のパスワードを入力するオプションが表示されないということです。 これを回避する方法はありますか? 私が望む最終結果は、サブスクリプションマネージャのリスト--availableコマンドの出力をコンピュータ上のoutput.logファイルにパイプさせることです。

+0

私はそれが固まっていると思うことを明確にするために、output.logにリダイレクトします。私はリダイレクトせずにssh -t経由で同じコマンドを実行し、私の端末上で出力を得ることができます。 – t3kg33k

+0

'(...)'は不要です。 – chepner

答えて

0

sudoは、パスワードのプロンプトをデフォルトで制御端末に直接書き込んでいますが、その端末はローカルのssh stdoutに接続されています。あなたのスクリプトは、パスワードが入力されるのを待っているという意味でぶら下がります。プロンプトが出力ログに書き込まれました。

sshからsudoに直接パスワードを送ることができるはずです。 -Sオプションを使用して、代わりにsudoに標準入力からのパスワードの読み取りを強制することもできます。

リモートホスト上のsudoは、パスワードを要求せずにコマンドを実行することが理想的です。

+0

これには方法がありますか? – t3kg33k

+0

私の他の考えは、teeコマンドを使って出力することでした。 – t3kg33k

+0

私は '-t'がどのように動作するかを正確には思い出せません。 'sudo'が読むためにあなたのパスワードを単に' ssh'にパイプすることができます。可能であれば、リモートホスト上で 'sudo'を設定して、パスワードなしで正確なコマンドを実行できるようにする方がよいでしょう。 – chepner

関連する問題