场景:将A服务器上面的cc.jar包,复制到B服务器上面:
实现方法1:
1、写脚本cp.sh:
内容为:
#!/bin/bash
ip=$1 (注释:这里参数化了目标服务器的ip,执行脚本时候将参数加在后面)
./scp.exp ./cc.jar root@$1:/root/tools
写完后给权限:chmod 777 cp.sh
执行命令为:./cp.sh 10.179.23.43 (目标地址是以参数传进去的)
这个时候发现执行出错,做步骤2:
2、保证服务器已经安装了expect,安装命令为:
yum install expect
新建文件scp.exp文件,内容为:
#!/usr/bin/expect
set timeout 20
if { [llength $argv] < 2} {
puts "Usage:"
puts "$argv0 local_file remote_path"
exit 1
}
set local_file [lindex $argv 0]
set remote_path [lindex $argv 1]
set passwd 目标服务器的密码
set passwderror 0
spawn scp $local_file $remote_path
expect {
"*assword:*" {
if { $passwderror == 1 } {
puts "passwd is error"
exit 2
}
set timeout 1000
set passwderror 1
send "$passwd\r"
exp_continue
}
"*es/no)?*" {
send "yes\r"
exp_continue
}
timeout {
puts "connect is timeout"
exit 3
}
}
修改权限:chmod 777 scp.exp
3、再次执行脚本,发现copy成功。

本文介绍了如何通过shell脚本配合scp命令,实现从A服务器到B服务器的cc.jar文件的远程拷贝。主要内容包括脚本编写、参数化目标服务器IP、利用expect解决交互式认证问题以及安装和使用expect的步骤。
3735

被折叠的 条评论
为什么被折叠?



