当前位置: 首页 > news >正文

perl模块Net::SCP::Expect批量下发文件

作用一:可以分发一台机器,可以在线上测试用;

作用二:可以批量分发多台机器,统一部署;

见码:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/perl
use  Getopt::Std;
use  Net::SCP::Expect;
use  strict;
use  vars  qw($opt_s $opt_u $opt_H $opt_d $opt_p $opt_h) ;
getopts( 's:u:H:d:p:h' );
my  ( $src_file , $username , $Hostname , $dest_file , $passwd , $help , $jd );
&main ();
sub  main {
         get_args();
         scp_auto();
         }
sub  get_args {
         $src_file  $opt_s  if  $opt_s ;
         $username  $opt_u  if  $opt_u ;
         $Hostname  $opt_H  if  $opt_H ;
         $dest_file  $opt_d  if  $opt_d ;
         $passwd  $opt_p  if  $opt_p ;
         $help  $opt_h  if  $opt_h ;
         &Usage ()  if  (! defined ( $src_file ) || ! defined ( $username ) || ! defined ( $Hostname )
|| ! defined ( $dest_file ) || ! defined ( $passwd ));
         }
sub  scp_auto {
         if  (-f  $Hostname ) {
         open  (HD, "$Hostname" ) ||  die  "Cannot find file :$!\n" ;
         my  @jd =<HD>;
         close  (HD);
         foreach  $jd ( @jd ) {
         chomp  ( $jd );
  my   $scpe  = Net::SCP::Expect->new( host => $jd , user => "$username" , password => "$passwd" ,
auto_yes =>1, timeout =>200, verbose =>1, recursive =>1);
           print  "$jd ---------------------\n" ;
                 $scpe ->scp( "$src_file" , "$dest_file" );
         }
         else  {
my   $scpe  = Net::SCP::Expect->new( host => $Hostname , user => "$username" , password => "$passwd"
, auto_yes =>1, timeout =>200, verbose =>1, recursive =>1);
           print  "$Hostname ---------------------\n" ;
                 $scpe ->scp( "$src_file" , "$dest_file" );
         }
         }
sub  Usage{
         print  <<  "END" ;
           ./scp_patch.pl -s <src_file> -u <username> -H <Hostname or ip> -d <dest_file> -p <password>
END
         exit  2;
}
#############################################END##############################################

实例一:

1
./scp_batch.pl -s /root/install.log -u root -H  192.168 . 100.144  -d /tmp/c -p  123456

实例二:

1
2
3
4
5
./scp_batch.pl -s /root/install.log -u root -H t -d /tmp/c -p  123456
###t为文件######
[root@master test]# cat t
192.168 . 100.145
192.168 . 100.144



本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1325272

相关文章:

  • Exchange部署与管理体系结构
  • 傲游云浏览器测评
  • 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.15. MPFR-3.1.2...
  • 506554897automation正文 Ansible 四(ansible命令参数)
  • 使用exp导出报错EXP-00091
  • 职场上不能惹的八种人!
  • linux 下查看硬件信息(mac,IP地址,硬盘型号,序列号等)
  • ghost错误代码大全
  • Android应用程序组件Content Provider应用实例(1)
  • 尝试N种低格工具失败,采用MP Tool量产工具完成U盘修复
  • Android——使用LruCache缓存图片
  • 那点你不知道的XHtml(Xml+Html)语法基础(DTD、XSD)
  • [译] 调试 RxJS 第1部分: 工具篇
  • shell分割字符串函数(支持特殊字符和不可见字符)
  • JSP中动态include与静态include的区别介绍
  • ES6--对象的扩展
  • ES6核心特性
  • Invalidate和postInvalidate的区别
  • Java编程基础24——递归练习
  • Node 版本管理
  • NSTimer学习笔记
  • ReactNativeweexDeviceOne对比
  • Vue2.0 实现互斥
  • 订阅Forge Viewer所有的事件
  • 多线程 start 和 run 方法到底有什么区别?
  • 记一次用 NodeJs 实现模拟登录的思路
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 码农张的Bug人生 - 见面之礼
  • 前端知识点整理(待续)
  • 如何进阶一名有竞争力的程序员?
  • 使用putty远程连接linux
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 探索 JS 中的模块化
  • 微信开放平台全网发布【失败】的几点排查方法
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 无服务器化是企业 IT 架构的未来吗?
  • 用jquery写贪吃蛇
  • 【干货分享】dos命令大全
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • #if #elif #endif
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (¥1011)-(一千零一拾一元整)输出
  • (2020)Java后端开发----(面试题和笔试题)
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)计算机毕业设计高校学生选课系统
  • (四) 虚拟摄像头vivi体验
  • (四)Linux Shell编程——输入输出重定向
  • (四)汇编语言——简单程序
  • (四)图像的%2线性拉伸
  • (一)基于IDEA的JAVA基础1
  • (原)Matlab的svmtrain和svmclassify
  • (转)setTimeout 和 setInterval 的区别