Answers:
这与一个小脚本无关紧要。例如:
for server in app0 app1 app4 app5 appN; do
scp user@$server:/path/to/log/file /local/path/to/"$server"_file
done
上面将依次从每个服务器复制文件并命名SERVERNAME_file
。因此,from中的文件app0
将为app0_file
etc。您显然可以将名称更改为所需的名称。
&
末尾,将scp
a wait
放在末尾,这样就可以并发,而不会产生任何额外费用。
使用GNU parallel:
parallel -j0 scp {}:/remote_path file_from_{} ::: host1 host2 host3 # and so on
与使用的解决方案不同for
,这将并行运行所有下载
remote_path="/path/to/file"
local_target_dir="/path/to/dir"
hosts=(app00 app01)
for host in "${hosts[@]}"; do
scp "$host":"$remote_path" "$local_target_dir"/filename."$host"
done
如果您能够使用python,则有一个有趣的模块可以简化称为Fabric的机器管理任务:http : //docs.fabfile.org/en/latest/tutorial.html
我想使用它,但也没有使用
这对我有用
#!/bin/bash
#Expect script
/usr/bin/expect -<<EOD
set SERVERS {1 2 3 .. N}
foreach SERVER \$SERVERS {
spawn scp user@\$SERVER:remote local/"\$SERVER"RESWeb.log
expect {
-re ".*es.*o.*" {
exp_send "yes\r"
exp_continue
}
-re ".*sword.*" {
exp_send "pswrd\r"
}
}
expect eof
}
EOD
echo "completed"