Linux自動化命令工具expect

2022-08-19 13:45:11 字數 2173 閱讀 6755

expect是unix系統中用來進行自動化控制和測試的軟體工具,應用在互動式軟體中如telnet,ftp,passwd,fsck,rlogin,tip,ssh等等。

linux中我們經常寫指令碼處理一些繁瑣的任務,但不幸的是很多互動式的命令我們不得不人肉響應。

expect可以代替我們實現與系統的互動。

我們可以通過expect實現遠端自動更改使用者密碼,而不需要手動輸入舊密碼和新密碼:

#!/bin/bash

usr_passwd='

old_passwd

'new_passwd='

new_passwd

'while

read ip

do /usr/bin/expect <

set timeout -1

spawn

ssh -t mina.xiang@$ip

expect

"*assword:" }

expect

"*~]$*

" expect

"*~]$*

" expect

"(current)*password:

" expect

"new password:

" expect

"retype*password:

" expect

"*~]$*

" expect eof

eofdone

< /home/mina.xiang/serverip.txt

change-passwd

最近做得稍微複雜一點的,普通使用者解除安裝軟碟機floppy模組,普通使用者許可權不夠時需要通過sudo執行。

#!/bin/bash

usr_passwd='

passwd

'while

read ip

do /usr/bin/expect <

set timeout -1

spawn

ssh -t mina.xiang@$ip

expect

"*assword:" }

expect

"*~]$*

" expect

"*~]$*

" expect

"*~]$*

" expect

"*~]$*

" expect

"\[sudo\]*mina.xiang:

" expect

"*~]$*

" expect

"*~]$*

" expect

"*~]$*

" expect

"*~]$*

" expect

"*~]$*

" expect

"*~]$*

" expect

"*~]$*

" expect

"*~]$*

" expect

"*~]$*

" expect

"*~]$*

" expect

"*~]$*

" expect eof

eofdone

< /home/mina.xiang/serverip.txt

remove-floppy

--永久解除安裝floppy流程

--指令碼中呼叫得serverip.txt檔案內存放目標機器ip位址,每行乙個ip

進入expect環境後主要使用的內部命令有三個

建立乙個新程序,並執行給定的程式,它的主要功能是給執行程序加個殼,用來傳遞互動指令,expect可以通過spawn監聽程序的輸出。

此expect非彼expect,它是expect的內部命令,在expect環境中使用,它用來匹配spawn中程序輸出,匹配上了就執行後面的body部分。

用於執行互動動作,改密碼時可以send密碼,與手工輸入密碼的動作等效。

expect內部命令會等待目標程序的輸出,等待時間預設10秒,沒有得到期望值且等待超時後執行下一條命令,也可通過"set timeout number"手動設定時長,「set timeout -1」為永不超時。

expect eof是在等待結束標誌。由spawn啟動的命令在結束時會產生乙個eof標記,expect eof即在等待這個標記.

自動化部署工具

1.puppet puppet是開源的基於ruby的系統配置管理工具,基於c s的部署架構。是乙個為實現資料中心自動化管理而設計的配置管理軟體,它使用跨平台語言規範,管理配置檔案 使用者 軟體包 系統服務等。客戶端預設每隔半小時會和伺服器通訊一次,確認是否有更新。當然也可以配置主動觸發來強制客戶端更...

linux自動化互動工具expect簡單配置使用

1 掛載 mount t iso9660 o loop dev cdrom mnt cd 2 查詢expect安裝包 yum list grep expect 3 安裝 yum install expect.i686 y 4 新建並編輯expect配置檔案vi expectdemo.sh 配置內容如...

自動化運維工具 ansible系列命令

列出所有已安裝的galaxy ansible galaxy list 安裝galaxy ansible galaxy install geerlingguy.redis 刪除galaxy 推送命令至遠端,效率無線提公升,對運維要求較高管理加密解密yml檔案ansible vault create d...