ssh 経由でリモート スクリプトを実行しているときにユーザーが「読み取り」コマンドを実行する

ssh 経由でリモート スクリプトを実行しているときにユーザーが「読み取り」コマンドを実行する

まず私の状況を説明させてください。.bashrc にエイリアスがあります:

doscript () { ssh root@server$1 -p2202 "bash -s" < ~/scripts/$2 $3; }

基本的に次のようないくつかのアクションで構成されるスクリプトがあります。

check current settings
read comment
do actions
write $comment in a file
restart service

そこでコマンドを実行します

doscript server scriptname parameter

しかし、「コメントの読み取り」部分は機能しません。コメントを入力するまで待つ代わりに、すぐに実行され、コメント ファイルに何も追加されません。

その場合、変数を入力する方法はありますか?

答え1

あまり変更せずにこれを行う通常の方法は、ファイルをリモートにコピーしてから実行し、tty入力にstdinを利用できるようにすることです。例:

scp -P 2202 ~/scripts/$2 root@server$1:./myscript
ssh -t root@server$1 -p2202 bash ./myscript $3

または、scpその行を

ssh root@server$1 -p2202 'cat >./myscript' <~/scripts/$2

関連情報