对于运维来说,同时管理多台机器是很辛苦的事情,特别是CDN运维需要把1000台机器上的日志下载到一台机器上,靠人工一个个下载非常费劲,为此我写了一个从多台机器批量下载到本机的小程序。
下载完后把文件放到自动按照ip生成的目录。
其中用到了expect:
Expect在这个程序里就是用来帮助自动输入scp的密码,Expect主要用于把需要人工交互的程序变为程序自动化完成,这个对于运维批量部署系统,批量无人值守安装,批量执行命令,批量上传下载
现代的Shell对程序提供了最小限度的控制(开始,停止,等等),而把交互的特性留给了用户。 这意味着有些程序,你不能非交互的运行,比如说passwd。 有一些程序可以非交互的运行,但在很大程度上丧失了灵活性,比如说fsck。这表明Unix的工具构造逻辑开始出现问题。Expect恰恰填补了其中的一些裂痕,解决了在Unix环境中长期存在着的一些问题。
Expect使用Tcl作为语言核心。不仅如此,不管程序是交互和还是非交互的,Expect都能运用。
1.multi_scp_download.sh的源代码
2.scp_download.sh的源代码
3.配置文件格式scp.conf
- ssh_hosts=("1.1.1.1" "2.2.2.2")
- ssh_ports=("22" "22")
- ssh_users=("root" "root")
- ssh_passwords=(’abc' 'efg')
4.运行代码
找一台机器可以和要上传的机器联通,安装好expact
把scp_download.sh,multi_download.sh,scp.conf放到同一个目录下,运行multi_scp_download.sh即可
5.运行效果
《scp批量上传文件到多台机器上》:
大家多多支持,下周我会再发《scp批量在多台机器上执行命令》
阅读(3515) | 评论(0) | 转发(0) |