下面是来自老男孩培训初级第14期第六节课的批量分发管理服务器课程的女学生的作品(详细注释)
在大多数男同学还在迷糊的时候,该女同学已经完整的读懂并注释了全部的脚本,老男孩非常感慨,大家都有此努力的学习态度何愁运维不牛呢?
脚本内容及注释如下:

[binzai@ssh-server scripts]$ cat fenfa_host.sh   #→实现把脚本当前目录下的文件拷贝到所有服务器的任意目录
#!/bin/sh
. /etc/init.d/functions
file="$1"   #→传参文件
remote_dir="$2"   #→远程服务器目录
if [ $# -ne 2 ];then      #→如果传的参数不等于2个,那么就打印如下报错信息。
#→ $#:获取当前shell命令行中的参数的总个数
#→ -ne:不等于
echo "usage:$0 argv1 argv2"
#→$0:首个参数(fenfa_host.sh)
echo "must have two argvs."
exit
fi
for ip in $(cat /home/binzai/scripts/all_iplist.txt)
#→$():在脚本里引用全局变量
do
scp -P22 -r -p $file binzai@$ip:~ >/dev/null 2>&1 &&\
#→将hosts文件传到binzai家目录下,如果没有传递过去,将丢弃到/dev/null
ssh -p 22 -t binzai@$ip sudo rsync -avz -P $file $remote_dir >/dev/null 2>&1
#→通过ssh通道执行sudo命令将hosts文件拷贝到/etc目录下
if [ $? -eq 0 ];then   #→如果上次执行结果返回值等于0,则执行OK。如果不等于0,则执行NO
#→$?:上次执行结果的返回值
#→-eq:等于
action "$ip is successful." /bin/true
else
action "$ip is failure." /bin/false
fi
done
‍
补充shell变量知识:
$0 获取当前执行的shell脚本的文件名,包括路径
$n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9用大括号括起来 {10}
$* 获取当前shell的所有参数,将所有的命令行参数视为单个字符串,相当于“$1$2$3”…….注意与$#的区别
$# 获取当前shell命令行中参数的总个数
$@ 这个程序的所有参数”$1” “$2” “$3” “……” ,这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白。
$? 是上次执行结果的返回值
0是正确,非0是错误
$()是引用全局命令(在脚本里面引用命令)
执行效果:

老男孩老师补充:
1)以上为基础的脚本,没什么难度,主要是感慨下学生的努力态度。
2)本脚本需要借助SSH KEY或者补充expect实现。

同期其他同学作品
http://oldboy.blog.51cto.com/2561410/1206238

批量分发管理三种解决方案案例视频分享(老男孩主讲)
http://oldboy.blog.51cto.com/2561410/824931

轻松实现远程批量拷贝文件脚本(女学生作品)相关推荐

  1. linux批量拷贝文件脚本,把文件复制N份的2个Shell脚本代码

    测试时需要大量文件,所以写了脚本进行拷贝.有规律的文件名利于引用. #!/bin/sh # file name : batchcp.sh # author: zhouhh # Email: abloz ...

  2. linux自动批量拷贝文件

    如果有一批机器同在一个局域网,这批机器所在地址段为192.168.100.1-192.168.100.256,用户名均为test,密码123123,如何批量将某个文件拷贝到这批机器中. 首先请确保这批 ...

  3. 文件拷贝命令至服务器,远程服务器拷贝文件命令

    远程服务器拷贝文件命令 内容精选 换一换 在IntelliJ上选择"项目",找到".idea"文件夹,单击右键选择"新建>文件", 输 ...

  4. python copy文件_python批量拷贝文件

    普通批量拷贝文件 import os import shutil import logging from logging import handlers from colorama import Fo ...

  5. Linux使用shell脚本批量拷贝文件

    在日常工作中我们经常会碰到在linux下导出文件的工作,如果挨个拷贝就很麻烦也很不方便. 方法一:for循环的拷贝 这种方法适合轻量拷贝,我们把需要拷贝的文件名单独列出来,放在name.txt文件中, ...

  6. 关于Syncovery软件在windows下远程访问服务器批量拷贝文件的使用

    最近在进行更新远程服务器上的文件的操作,由于节点比较多,而且是在windows系统上,所以只能采用较为繁锁的不断远程登录每个节点,再在每台机器上不停使用复制和粘贴,效率低下的同时也特别容易出错,试想如 ...

  7. 指定路径列表批量拷贝文件+Windows批处理命令大全

    一.指定路径列表批量拷贝Windows文件 cat.bat @echo off set target = '' mkdir samples setloacal enabledelayedexpanss ...

  8. 服务器怎么拷贝文件夹下,Syncovery(数据备份工具)如何在windows下远程访问服务器批量拷贝文件?Syncovery图文教...

    Syncovery是一款数据备份工具,能够在pc.mac.服务器.在线存储空间之间同步,并自带FTP,是一款灵活的同步备份工具,并同步Mac电脑,服务器,笔记本电脑,以及在线存储空间,一起来看看具体的 ...

  9. 从远程服务器拷贝文件命令,远程拷贝文件命令Scp的使用

    scp通过网络在两台主机之间拷贝文件,数据在传输过程中是经过加密的,其底层使用ssh来进行数据传输,并且它和ssh有相同的验证机制和同样的安全级别.当使用scp拷贝一个文件到另一台主机上的时候,如果目 ...

最新文章

  1. 基础设施即代码:Terraform和AWS无服务器
  2. python读取nc文件并转换成csv_python3使用类型转换读取csv文件
  3. 域名怎么绑定ip_服务器怎么绑定域名?
  4. wxpython pyqt_python gui 中三大框架tkinter ,wxpython, pyqt如何选择
  5. linux限制ip带宽,apache如何限制并发数 IP 带宽?
  6. 计算机六级好考吗,计算机六级考什么?
  7. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_15-webpack研究-webpack-dev-server-程序调试...
  8. 图形数据库 Neo4j(2) ----Java
  9. 用计算机制作标准曲线的方法,如何制作标准曲线
  10. Vista 陪我过周末
  11. Rclone挂载SharePoint
  12. 3.3 伴随矩阵法求逆矩阵
  13. 0x0000001a蓝屏代码是什么意思 0x0000001a蓝屏代码怎么解决
  14. 2D横版游戏角色素材可商用
  15. 奇安信“科技冬奥”项目成果亮相国家科技计划成果路演行动
  16. vue引用iconfont图标
  17. 签千亿订单,中芯国际可量产3nm芯片?
  18. QT当中的【QSetting和.ini配置文件】以及【创建Resources.qrc】
  19. 【Latex】编辑公式效率太低?来看一些MathType的重要技巧
  20. 线性稳压器LDO的效率

热门文章

  1. scanner怎样回到文件开头_Radare2逆向分析dex/so/二进制等文件的使用方法
  2. 计算机启动太慢可以设置什么来加速启动速度,电脑开机速度慢怎么办 如何加速电脑开机速度慢【详细介绍】...
  3. python0.1+0.2不等于0.3_为什么0.1 + 0.2不等于0.3?
  4. Dockerfile实战之部署python网站
  5. java safevarargs_@SafeVarargs注解的使用
  6. java软件网络工程师面试题_170道Java工程师面试题,你敢挑战吗?
  7. aspx后台调用前台jquery_Jquery Ajax调用aspx页面方法
  8. 何时使用构造函数,构造函数使用new关键字
  9. vue-cli构建的vue项目中引入stylus文件
  10. 【算法总结】二分搜索