0

今後のコマンドで使用できるように、ストリームで「Generating foo- [pattern] .tgz」のようなものを探してパターンを返すように指示するにはどうすればよいですか?

同じアクションを繰り返し実行していることに気づき、expect を使用してそれらを自動化したいと考えています。1 つのシステムに ssh し、ファイルを生成するスクリプトを実行します。次に、そのシステムから別の 2 つのシステムにファイルを scp します。

ssh を生成して、ファイル ビルドを正常にトリガーできます。生成されたファイルの名前を取得してコピーを実行する方法がわかりません。スクリプトは、「Generating foo- timestamp .tgz... Done.」のようなものを出力します。そして、タイムスタンプscp foo-*tgzは明らかに実行ごとに異なります。古い foo ファイルが存在する可能性があるため (つまり、タイムスタンプ)、scp をグロブしたくありません。

私は期待するのが初めてで、まだ例などにつまずいていて、時にはまだ少し手を握る必要があります. どんな提案/助けも大歓迎です。

4

1 に答える 1

2

パターンをキャプチャできるかどうかはわかりませんが、そのような状況で通常行うことは、出力を変数に格納してから、この出力を使用することです。たとえば、send -- "./executeSomeScript\r"「Generating foo-timestamp.tgz ... Done」のような出力が得られる場合、send コマンドを次のように置き換えます。

send -- "output=`./executeSomeScript`\r"
send -- "filename=`echo \$output | awk '{ print \$2 }'\r"

そして最後に

send -- "scp \$filename user@server:path\r"

$スクリプト レベルで解釈されず、リテラルとしてリモート シェルに送信されるように、エスケープが必要であることに注意してください。

于 2013-01-01T18:04:47.110 に答える