0

すべてのリモート サーバー名をシェル スクリプトの引数として渡し、スクリプトで指定されたファイル/ディレクトリをすべてのリモート サーバーにコピーしたいと考えています。以下は私のコードです。

#!/bin/bash
/usr/bin/expect <<EOD

#connect via scp

usr=Joe
pwd=Password
file_location=/home/file1.txt

for a in $@
do
  spawn scp -r $file_location  "$usr@$a:$file_location"

expect -nocase "password: "

send "$pwd\r"

expect eof
EOD

ユーザー名とパスワードは、すべてのリモート サーバーで同じです。そのため、当面はそれらをハードコーディングしていますが、スクリプトの実行中に問題が発生します..

>./scp1.sh server1 server2
invalid command name "usr=Joe"
while executing
"usr=Joe"

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

1

コマンドライン引数をexpectから読み取るには:

$argc - number items of arguments passed to a script.
$argv - list of the arguments.
$argv0 - name of the script.

これはこのサイトからの引用でした

さらにヘルプが必要な場合は、言語の拡張機能であるためexpect、グーグルで検索してくださいtclexpecttcl

于 2013-08-26T22:56:29.680 に答える