源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

expect实现单台、多台服务器批量scp传输文件

  • 时间:2022-04-18 14:37 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:expect实现单台、多台服务器批量scp传输文件
今天公司同事要在一台服务器上对另外两台同机房的服务器进行文件传输,两台服务器的文件存放地址一致,密码和key也一致(我们公司在安全上做得有点变态的),为了效率写了下面这个脚本. [b]1.单台传输脚本[/b] cat /root/soft_shell/allscp.sh
[u]复制代码[/u] 代码如下:
#!/usr/bin/expect if {$argc < 2} {         send_user "usage: $argv0 src_file username ip dest_file password\n" exit } ##set key [lindex $argv 0] set src_file [lindex $argv 0] set username [lindex $argv 1] set host_ip [lindex $argv 2] set dest_file [lindex $argv 3] set password [lindex $argv 4] ##spawn scp -i $key $src_file $username@$host_ip:$dest_file spawn scp  $src_file $username@$host_ip:$dest_file expect {         "(yes/no)?"                 {                         send "yes\n"                         expect "password:" {send "$password\n"}                 }         "password:"                 {                         send "$password\n"                 } } expect "100%" expect eof
[b]2.多台传输脚本[/b] cat /root/soft_shell/mainscp.sh
[u]复制代码[/u] 代码如下:
#!/bin/bash host_list="server_list.conf" cat $host_list | while read line do   host_ip=`echo $line|awk '{print $1}'`   username=`echo $line|awk '{print $2}'`   password=`echo $line|awk '{print $3}'`   src_file=`echo $line|awk '{print $4}'`   dest_file=`echo $line|awk '{print $5}'`   ##key=`echo $line|awk '{print $6}'`   ##./allscp.sh $key $src_file $username $host_ip $dest_file $password   ./allscp.sh $src_file $username $host_ip $dest_file $password done
[b]3.服务器信息文件[/b]
[u]复制代码[/u] 代码如下:
cat /root/soft_shell/server_list.conf
格式为:
[u]复制代码[/u] 代码如下:
ip 用户名 密码 源文件 目标文件地址
ps:以上3个文件,相信大家都看出来了,都是放在同一文件夹下面的.我本地测试只用ssh密码,没有加上ssh key,如果要用上跟我们公司正式环境一样的安全方式(ssh密码+key,才能登录服务器),那么请自己修改脚本文件,我比较懒这里就不说得那么详细了. 最后来张效果图吧,免得大家说我脚本有问题. [img]http://files.jb51.net/file_images/article/201412/20141231111150107.jpg?2014113111124[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部