日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下使用expect+scp+shell实现分布式集群系统安装,升级,部署

發布時間:2025/3/21 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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啟動腳本如下:

$ cat done.sh #!/bin/bash usrname=ubuntu passwd=ubuntu src_dir=../xtrouter dst_dir=/home/$usrname expect_bin=./tools/bin/expect docker_shl=./tools/sbin/docker.sh hosts_file=hosts-list for line in $(cat $hosts_file) doecho "=================> start update host:$line"$expect_bin $docker_shl $line $usrname $passwd $src_dir $dst_dir doneecho "all host update success!"
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实现分布式集群系统安装,升级,部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。