linux下使用expect+scp+shell实现分布式集群系统安装,升级,部署
生活随笔
收集整理的這篇文章主要介紹了
linux下使用expect+scp+shell实现分布式集群系统安装,升级,部署
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在分布式集群系統(tǒng)中,由于有很多的節(jié)點,如果手動的部署,將是一個很耗時的過程。
由于每個節(jié)點部署服務(wù)相同,第一想到的就是scp命令做批處理,不過有個問題,scp命令每次都是提示輸入密碼,正好expect工具可以處理命令交互的情況。
前面已經(jīng)講過如何將expect做成綠色工具了,將所有節(jié)點的主機(jī)地址寫入一個hosts-list文件中,循環(huán)讀取地址執(zhí)行scp拷貝。
升級包和expect工具的目錄結(jié)構(gòu)如下:
$ tree -L 3 . ├── done.sh ├── hosts-list └── tools├── bin│?? ├── expect│?? ├── libexpect5.45.so│?? └── libtcl8.4.so├── lib│?? └── tcl8.4└── sbin└── docker.sh5 directories, 6 files其中done是啟動腳本,tools里面是expect工具命令,docker是執(zhí)行scp命令腳本,hosts-list是節(jié)點主機(jī)地址。
done啟動腳本如下:
docke執(zhí)行scp命令腳本如下: $ cat tools/sbin/docker.sh #!/usr/bin/expect set timeout -1 set host [lindex $argv 0] set username [lindex $argv 1] set password [lindex $argv 2] set src_file [lindex $argv 3] set dest_file [lindex $argv 4] spawn scp -v -r $src_file $username@$host:$dest_file expect { "(yes/no)?" {send "yes\n"expect "*assword:" { send "$password\n"} } "*assword:" {send "$password\n" } } expect "100%" expect eof
需要注意的一點是要將上面的超時時間設(shè)置為最大值,否則使用默認(rèn)30秒后命令中斷。
hosts-list主機(jī)列表如下:
$ cat hosts-list 11.37.7.1 11.37.7.2 11.37.7.3 11.37.7.4 11.37.7.5 11.37.7.6 11.37.7.7 11.37.7.8 11.37.7.9 11.37.7.10 11.37.7.11 11.37.7.12 11.37.7.13 11.37.7.14 11.37.7.15 11.37.7.16 11.37.7.17 11.37.7.18 11.37.7.19 11.37.7.20總結(jié)
以上是生活随笔為你收集整理的linux下使用expect+scp+shell实现分布式集群系统安装,升级,部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下scp远程拷贝文件无需输入密
- 下一篇: Linux 设置core dump