2016-11-22 7 views
1

ルータのサブモジュールに接続しようとしていて、コマンドを実行して出力をファイルに保存しようとしています。私が持っている問題は、サブモジュールにはユーザー名とパスワードが必要であり、すべてのコマンドを1つのスクリプトに入れると、入力を求めるプロンプトが表示される前にユーザー名/パスの詳細が送信されるということです。コマンド間に遅延を設定する方法や、同じSSHセッションの下でバッチで実行する方法はありますか?Bash - SSHそれらの間に遅延を持つ複数のコマンド

私はEOFのアプローチを使用しても、別のファイル(推奨)でコマンドを持つ:

ssh [email protected] > file.log << EOF 
session slot 1 # command to connect to the subslot. 
        # a delay of about 3 sec would be required before the credentials are sent 
slot_username 
slot_password 
command1 
command2 
command3 
exit 
exit 
EOF 

また、第2の出口は、ルータの外に私を取る必要があり、それは単に無視されます。

+0

私は 'expect'を使うことを提案します。 – Cyrus

+0

ありがとうございます。最終的に私は期待を使ってスクリプトを作成しました。私はbashスクリプトと組み合わせて、メニューの入力を促し、ユーザーの入力を得ました。私はこれを行うために "スマート"な方法があると確信していますが、期待通りにユーザー入力を取得し、変数としてデータを使用する方法を見つけられていません.. –

答えて

1

これまで名前付きパイプを使っていました。名前付きパイプを作成し、その入力をsshコマンドに送信します。

mkfifo a=rw FOO 
cat FOO | ssh [email protected] > file.log 

あなたはその後、別のスクリプトからFOOにコマンドを書き込むことができます。

echo username >> FOO 
sleep 3 
echo password >> FOO 

は、しかし...ツールは、あなたがやっている正確に何をするために存在します。これはcloginと呼ばれています。 https://linux.die.net/man/1/clogin

+0

OPはまたローカルシステムがあるかどうかを確認することができます'expect'パッケージ/プログラムがインストールされています(私がQを正しく理解していれば)。皆さんお元気で。 – shellter

関連する問題