linux下使用expect+scp+shell实现分布式集群系统安装,升级,部署
生活随笔
收集整理的這篇文章主要介紹了
linux下使用expect+scp+shell实现分布式集群系统安装,升级,部署
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在分布式集群系統中,由于有很多的節點,如果手動的部署,將是一個很耗時的過程。
由于每個節點部署服務相同,第一想到的就是scp命令做批處理,不過有個問題,scp命令每次都是提示輸入密碼,正好expect工具可以處理命令交互的情況。
前面已經講過如何將expect做成綠色工具了,將所有節點的主機地址寫入一個hosts-list文件中,循環讀取地址執行scp拷貝。
升級包和expect工具的目錄結構如下:
$ 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是執行scp命令腳本,hosts-list是節點主機地址。
done啟動腳本如下:
docke執行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
需要注意的一點是要將上面的超時時間設置為最大值,否則使用默認30秒后命令中斷。
hosts-list主機列表如下:
$ 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總結
以上是生活随笔為你收集整理的linux下使用expect+scp+shell实现分布式集群系统安装,升级,部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下scp远程拷贝文件无需输入密
- 下一篇: Linux 设置core dump