集群07 expect非互動式批量管理分發專案實戰

2021-08-20 13:42:18 字數 2418 閱讀 3005

架構圖

切換到demo使用者

[root@m01 ~]# su - demo

[root@backup ~]# su - demo

[root@nfs01 ~]# su - demo

[root@web01 ~]# su – demo

[demo@m01 ~]$ ssh-keygen -tdsa

檢視生成的私鑰和公鑰

[demo@m01 ~]$ ll .ssh/

總用量 8

-rw------- 1 demo demo 672 4月   814:44 id_dsa

-rw-r--r-- 1 demo demo 601 4月   814:44 id_dsa.pub

非互動式一鍵生成私鑰:

[demo@m01 .ssh]$ ssh-keygen-t dsa -p '' -f ~/.ssh/id_dsa &> /dev/null

yum –y install expect

(1)首先建立分發公鑰指令碼

#!/usr/bin/expect

set host [lindex $argv 0]

set password "000000"

set username "demo"

spawn ssh-copy-id -i/home/$username/.ssh/id_dsa.pub $username@$host

expect

"password:"

}

expect eof

(2)批量執行分發指令碼

#!/bin/bash

for i in 8 31 41; do

echo$

expect/script/fenfa_sshkey.sh 172.16.1.$

done

其他知識:

expect語法:

set 變數名 「 值 」 #即變數=值

set 變數名 [lindex $arg 0]   #傳遞引數給變數,變數=$arg 0(代表第乙個引數的值)

spawn + 命令   #互動的執行shell命令

expect ...send

對:expect等待希望出現的匹配串,對於匹配到的串,send傳送命令進行執行

interact

執行完成後保持互動狀態,把控制權交給控制台

如遠端自動登入指令碼:

#!/usr/bin/expect

set host "172.16.1.8"

set password "000000"

set username "demo"

spawn ssh $username@$host

expect

"password:"

}

interact

Expect 非互動式控制工具

1 一般需要安裝才能用 yun install y expect 2 是一種免費的非互動式工具 當執行有些命令還需我們輸入寫東西才能執行成功的就屬於互動式,例如 yum install 不加 y 時,我們還要輸入y才能安裝,就屬於互動式。3 基本引數 1 定義expect指令碼執行的shell us...

互動式命令 expect

shell儘管很強大。但是貌似無法完成互動式命令的操作,例項 ssh host 如果host而且該機沒有加入信任。手動輸入的時間需要password。這樣的情況下可以使用expect支援。下面舉個樣例來說明expect的功能與使用 功能 對集群各機器執行同樣指令 如 集群ip 為 192.168.6...

互動式 非互動式,登入式 非登入式Shell

互動式shell和非互動式shell 互動式模式 在終端上執行,shell等待你的輸入,並且立即執行你提交的命令。這種模式被稱作互動式是因為shell與使用者進行互動。這種模式也是大多數使用者非常熟悉的 登入 執行一些命令 退出。當你退出後,shell也終止了。非互動式模式 以shell scrip...