1. 程式人生 > >使用expect批量修改使用者密碼

使用expect批量修改使用者密碼

以前批量管理服務都是通過ssh建立信任關係,也有人用puppet等集中管理軟體,只要寫好指令碼在控制端執行即可,但是現在這兩樣都沒有,讓你改10臺伺服器的密碼,可以手動修改,但是成百或上千臺呢,這工程量可想而知。

通過expect互動式指令碼,可以輕鬆解決這些問題,下面具體看如何實現

1、檢查系統是否安裝expect
rpm -qa | grep expect
若沒有用yum安裝,只需要在控制端這一臺機器裝就可以了
yum install -y expect

2、建立伺服器列表檔案,格式如下(前邊是IP,中間是當前登陸密碼,第三列是要修改的密碼)

vi iplist.txt

192.168.10.187 root

[email protected]# zhangwc 123456
192.168.10.188 root [email protected]# zhangwc 123456

3、建立指令碼
建立一個bash指令碼,通過for迴圈讀取IP和密碼,然後給expect指令碼
vi auto_login.sh



#!/bin/bash
for i in `awk '{print $1}' iplist.txt`
do
loginName=`awk /${i}/'{print $2}' iplist.txt`
loginPassword=`awk /${i}/'{print $3}' iplist.txt`
modifyName=`awk /${i}/'{print $4}' iplist.txt`
modifyPassword=`awk /${i}/'{print $5}' iplist.txt`
./expect.sh ${i} ${loginName} ${loginPassword} ${modifyName} ${modifyPassword}
done

建立expect互動式指令碼


vi expect.sh

#!/usr/bin/expect -f


set IP [lindex $argv 0]    
set LOGINUSER [lindex $argv 1]    
set PASSWORD [lindex $argv 2]
set MODIFYUSER [lindex $argv 3]    
set NEWPASSWORD [lindex $argv 4]  
spawn ssh [email protected]$IP " echo '$NEWPASSWORD'| passwd --stdin $MODIFYUSER"


expect {
   "(yes/no)" { send "yes\r"; exp_continue }   ##如果第一次登陸,就傳送yes
   "password:" { send "$PASSWORD\r";

exp_continue }    ##傳送登陸密碼
   
"*?" { send "\r" }  ##沒有互動直接發個回車
}
interact


exit

給可執行許可權
chmod 755 auto_login.sh expect.sh
執行
./auto_login.sh

通過這個指令碼,還可以實現很多功能,只要修改spawn後邊的命令就可以了。

備註:expect指令碼不能使用sh expect.sh這樣的執行方式,所以在寫bash的那個指令碼的時候要注意。

紅色部分說明:

紅色部分為新增部分,如果修改的機器中有部分使用了ssh信任,用之前的方法也可以更新,但後邊有報錯,加入紅色部分後,就不會有報錯了。

相關推薦

使用expect批量修改使用者密碼

以前批量管理服務都是通過ssh建立信任關係,也有人用puppet等集中管理軟體,只要寫好指令碼在控制端執行即可,但是現在這兩樣都沒有,讓你改10臺伺服器的密碼,可以手動修改,但是成百或上千臺呢,這工程量可想而知。通過expect互動式指令碼,可以輕鬆解決這些問題,下面具體

Ansible 批量修改系統密碼

rop pos get 阿裏 鏡像 .com always ansible pda 生成加密密碼:安裝python passlib 庫pip install passlib如果系統中沒有pip命令,則先安裝pip:下載epel yum repo文件(使用阿裏雲鏡像):wge

使用ansible-play的user模組批量修改使用者密碼

使用ansible批量修改使用者密碼的方法,因為在使用ansible修改使用者密碼的時候不能使用明文的方式,需要先加密,所以就需要使用一個方法對輸入的明文的密碼進行加密,操作方法如下: 方法一: 1.1、該方法適用於更改多個使用者;playbook寫法如下: vim userpas

linux系統批量修改使用者密碼

指令碼目的:批量修改linux系統使用者密碼 條件:必須是修改的使用者是root,因為只有root才有許可權使用passwd命令 說明:先把IP、使用者、密碼、埠資訊寫到old_info檔案中,指令碼從這個檔案讀取對應的資訊,利用expect免互動登陸系統。將隨機生成的8位

(轉)linux passwd批量修改用戶密碼

如果 快速 引號 ini out 運行 每次 pass 行修改 linux passwd批量修改用戶密碼 原文:http://blog.csdn.net/xuwuhao/article/details/46618913 對系統定期修改密碼是一個很重要的安全常識,通常,我們

Ansible playbook 批量修改服務器密碼 先普通後root用戶

規則 user -s 服務器密碼 部署 cin name task 是你 fsckzy Ansible playbook 批量修改服務器密碼 客戶的需求:修改所有服務器密碼,密碼規則為Rfv5%+主機名後3位 背景:服務器有CentOS6、7,S

使用paramiko模塊批量修改Linux主機的密碼

格式 host 地址 修改密碼 mis shc utf-8 shel 功能 1、paramiko介紹 paramiko是基於python實現的一個SSH遠程安全連接,支持認證及秘鑰方式。可實現遠程命令執行、文件傳輸、中間SSH代理等功能。 2、安裝paramiko模塊 sh

linux批量添加用戶和批量修改密碼

enabled 批量創建用戶 mice 有用 wrapper nbsp 修改用戶 文件 lin 一、批量創建用戶通過命令newusers可以實現批量的創建用戶。這個命令的用法為 newusers file.txt(一個文本文件)文本文件內存放需要批量添加的用戶信息但是對格式

金蝶k3密碼批量修改

pda 密碼 font TE ID 引號 pre bsp 不用 該字段含有單引號,直接使用查詢語句,需要轉義其中的單引號。select * from t_User where FSID = ‘) F ", ,P T #8 *P!D &D 80!N &@

Ploysh批量修改linux主機密碼

地址 分享 端口 需要 進行 生成 tle size ssh命令 Polysh的使用 Polysh是一個交互式命令,可以批量對服務器進行處理,它非常適合應用在需要交互處理的場景,例如修改root密碼。使用Polysh命令可以很快的完成批量修改服務器root密碼

使用ansible批量修改ubuntu系統密碼

src ash yam 修改 bash 系統 mode ech user 使用ansible批量修改ubuntu系統密碼 1.在對應的ubuntu服務器上傳ansible服務器的公鑰,確保能夠無密登錄2.編寫密碼設置腳本#vim pw.sh#!/bin/bashecho &

linux批量修改密碼&建立使用者

偷個懶少寫幾行,邏輯不清晰,未優化,迴圈判斷浪費時間…歡迎指正 #!/bin/bash change_pass=1 #修改密碼為1,建立使用者為0 file=user.info #使用者名稱密碼檔案路徑,檔案內容逗號隔開 dat_e=$(date +[%F--

使用linux批量修改xshell設定的大量主機密碼

場景:我的裡面的主機都是一臺一臺加上去的包括密碼,但是某一天這些主機的密碼全都改成了其他一致的密碼,這時候怎麼辦,難道一個一個去修改,不可能吧所以,最後使用linux修改這麼密碼首先登陸linux,新建一個檔案將這些主機的ip就加進去假設這個檔名字為test2.txt.其次從

定期批量修改遠端伺服器root密碼

一、背景很多時候運維或安全工作人員需要維護大量的伺服器,其中就包括判斷是否存在root弱口令,如果伺服器數量很多一一修改的話的確是要好花費不少時間精力的。如果通過指令碼來實現密碼更改,再做一個定期任務的話,會節省很多人力。二、設計思路 1. 配置伺服器使用公鑰登入 2. 編寫遠端密碼更改指令碼 3. 配置定時

python批量修改linux主機密碼

open fail 通過 paramiko 如果 policy 文件 主機 指導 +++++++++++++++++++++++++++++++++++++++++++標題:python批量修改Linux服務器密碼時間:2019年2月24日內容:基於python實現批量修改

ansible 批量修改密碼

批量修改密碼 rem etc swd task ansi become remote -s - hosts: group #需要更改密碼的組 remote_user: user1 #ssh登錄的普通用戶 become: yes become_met

通過expect免自動輸入密碼登陸遠程服務器

新建 文件 安裝 nbsp exp 輸入密碼 spa 執行 0.10 通過expect免自動輸入密碼登陸遠程服務器 1、前提必須已經安裝expect 2、新建login.sh,文件內容如下 #!/usr/bin/expect -f spawn ssh [email 

Discuz常見小問題2-如何修改管理員密碼修改admin賬戶密碼

scu pan image family 詳情 點擊 用戶管理 admin src 進入後臺,點擊用戶,用戶管理,搜索admin這個用戶找到,然後點擊詳情 ?輸入新密碼即可(無需驗證老的密碼) ? ? ? ? ?Discuz常見小問題

使用expect 批量分發ssh公鑰

expect#!/usr/bin/expect if {$argc != 2} { #首先註意大話號,彼此之間需要空格 send_user "USAGE:expect_sshkey.exp file host" exit } #define var set file [lindex $argv 0

mac 修改mysql 密碼, navicat 連接失敗原因

amp 權限 ftw replace using 客戶端 target test href 1、cd /usr/local/mysql/bin/?2、sudo su輸入之後會要求輸入你的計算機密碼,輸入的時候是什麽都不顯示的,輸完後回車3、 ./mysqld_safe --