[root@localhost ~]# vim mvpasswd.expect #遠端更改密碼指令碼#!/usr/bin/expect#使用指令碼遠端命令列執行命令
set host [lindex $argv 0] #第1個引數
set passwd "root"
set password [lindex $argv 1] #第2個引數
spawnsshroot@$host #進入expect環境後才可以執行的expect內部命令,功能是給ssh執行加殼,用來傳遞互動指令
expect # 判斷是否包含yes/no,第一次ssh連線會提示yes/no,繼續
"password:" # 以上ssh並輸入密碼登入 ,初始密碼為root
}expect "]*"
send "passwd\r" #初始密碼passwd為root
expect ":"
send "$password\r" #更改密碼為第2個引數
expect ":"
send "$password\r" #再次確認,更改密碼為第2個引數
expect "]*"
send "exit\r"
interact #執行完成後保持互動狀態,把控制權交給控制台
[root@localhost ~]#vim mvpasswd.sh #呼叫指令碼#!/bin/bash
for ip in `cat $1` # 第乙個引數儲存ip列表的檔案
do./mvpasswd.expect $ip $2 # 第二個引數是需要修改的密碼
done
[root@localhost ~]# sh mvpasswd.sh /root/ip.txt "lri35krjf;ba" #以上指令碼使用範例
[root@localhost ~]# vim cmd.expect#!/usr/bin/expect
set user [lindex $argv 0] # 系統使用者
set host [lindex $argv 1] # 伺服器位址
set passwd [lindex $argv 2] # 密碼
set cm [lindex $argv 3] # 需要執行的命令
spawn ssh $user@$host
set timeout -1
expect
"password:"
}expect "]#"
send "$cm\r"
expect "]#"
send "exit\r"
interact
[root@localhost ~]# chmod a+x cmd.expect
[root@localhost ~]# vim cmd.sh # 呼叫指令碼
#!/bin/bash
user=$2
password=$3
cm=$4
for ip in `cat $1`
do./cmd.expect "$user" "$ip" "$password" "$cm"
done
## 引數1是儲存ip列表的檔案路徑
## 引數2是使用者名稱
## 引數3是密碼
## 引數4需要執行的命令
# 使用這個指令碼批量安裝一些基礎通用的工具[root@localhost ~]# sh ./cmd.sh "/root/ipall.txt" "root" "lri35krjf;ba" "yum -y install expect vim-enhanced epel-release libmcrypt-devel libmcrypt"
大作業11 指令碼批量遠端執行命令
然後再寫乙個通用的可以批量遠端執行命令的expect指令碼 root localhost vim cmd.expect usr bin expect set user lindex argv 0 系統使用者 set host lindex argv 1 伺服器位址 set passwd lindex...
使用shell指令碼批量建立使用者
1 使用for語句批量新增與刪除特定使用者 for語句的操作物件為使用者指定名稱的變數,並通過in關鍵字為該變數預先設定了乙個取值列表,多個取值之間以空格進行分隔。為於do done之間的命令序列稱為迴圈體。新增使用者 root localhost vim list.txt 準備乙個使用者名稱列表檔...
bat批量執行指令碼 檔案移動 複製 環境變數修改
最近根據專案安裝需求,編寫了乙個bat批量執行指令碼。指令碼實現的主要功能有 1 找到此指令碼目錄下的 包含 dl data 字串的資料夾 名稱 如dl 5c data v1.0.0.1 在此以deeplearndata表示 2 找到此指令碼目錄下的 包含 dl cpu 字串的資料夾名稱 如dl c...