0

インタラクティブ モードのリモート マシンで ssh 経由でヒア ドキュメント スクリプトを実行できますか?

コード例は次のとおりです。

ssh -t xijing@ggzshop.com 'bash -s' <<EOF
sudo ls
......Other big scripts......
EOF

double -t も適切に機能しません。

------------------------------ 考えられる解決策の 1 つ:----------------- --

いろいろ試した結果、以下の答えにたどり着きました。

Script=`cat <<'EOF'
sudo ls
.....Big scripts.....
EOF`

ssh -t user@host ${Script}

これにより、ユーザーはパスワードを入力できます。

4

3 に答える 3

1

Xijingのソリューションは私にとってはうまくいくようです。ただし、外観の変更をいくつか行いました。まず、読みやすくするために、バッククォートの代わりに「ドル括弧」を使用しました。もう 1 つの説明はありません。コマンドが別々の行に記述されていても、スクリプト スニペットでは複数のコマンドを区切るためにセミコロンが必要でした。私のテスト:

Script=$( cat <<'HERE'
hostname;
cat /etc/issue;
sudo id
HERE
)

ssh -t user@host ${Script}

Sudo パスワードは通常の方法で尋ねられるので、省略する必要はありません。

于 2013-07-25T19:06:39.810 に答える
0

いいえ、そのようなインタラクティブなスクリプトを実行できるとは思いません。

sudo目的を達成するために、パスワードなしで管理コマンドを実行できる一般的な管理タスク専用のユーザーを作成できます。次に、ssh キー認証をセットアップして専用ユーザーとしてログインし、必要なタスクを実行します。

于 2013-02-23T14:49:22.600 に答える
0

引用符で囲まれている場合、セミコロンを使用して複数のコマンドを区切る必要はありませんScript

Script="$( cat <<'HERE'
hostname;
cat /etc/issue;
sudo id
HERE
)"


- ssh -t user@host ${Script}
+ ssh -t user@host "${Script}"

# alternative (not recommended)
# set IFS variable to null string to avoid deletion of newlines \n in unquoted variable expansion
export IFS=''
ssh -t user@host ${Script}
于 2014-02-11T18:14:33.697 に答える