/usr/bin/expect的簡單使用

weixin_33758863發表於2018-07-16

網上理論介紹也很多了,我只是簡單的說下我的使用方法和程式碼:
有1000太目標主機,有這1000臺目標主機的使用者密碼和ip地址,需要對這1000臺主機進行統一命令操作,找到某一個進行然後殺掉
檔案exc.sh

#!/usr/bin/expect -f
set server  [lindex $argv 0]
set 普通使用者名稱passwd  [lindex $argv 1]
set rootpassword [lindex $argv 2]
#set time [lindex $argv 2]                                                                                         

spawn ssh 普通使用者名稱@$server
    expect {
         "*yes/no?" {send "yes\r"; exp_continue}
         #":" {send "$sshusrpasswd\r"}
         "*assword:" {send "$普通使用者名稱passwd\r"}
    }
    expect {
        "*>" {send "su - root\r"}
    }
    expect {
         "*:" {send "$rootpassword\r"}
         "assword:" {send "$rootpassword\r"}
         "#" {send "pwd\r"}
    }
    expect {
        "#" {send "ps -ef|grep 程式名|grep -v grep |awk '{print \$2}'|xargs kill;\r"}
    }
set timeout 10
expect eof

檔案ip中放置ip地址的列表
檔案script.sh檔案中方普通使用者和root使用者名稱和密碼,以及執行exc.sh指令碼

#!/bin/bash

普通使用者名稱passwd='普通使用者密碼'
rootpasswd='root使用者密碼'
for ip in `cat ip`
do
    ./exc.sh $ip $普通使用者名稱passwd $rootpasswd
done

相關文章