脚本功能
实现了批量自动更改密码,输入的ip地址进行分组,然后循环放在后台并行执行。使用了随机密码,然后在最后循环结束的时候,放入到xmima.txt 文档中。
使用了expect 这个来进行免交互的操作,如果执行出错,需要先安装expect 这个安装包
#!/bin/bash
#
#********************************************************************
#Author: liuhao
#QQ: 1921160095
#Date: 2019-11-06
#FileName: ip.sh
#Description: The test script
#Copyright (C): 2019 All rights reserved
#********************************************************************
read -p "请输入起始ip: " beginip
read -p "请输入结束ip: " endip
read -p "请输入用户: " user
read -p "请输入密码: " ymima
begarray=(${beginip//./ })
endarray=(${endip//./ })
if [ "${begarray[0]}" = "${endarray[0]}" -a "${begarray[1]}" = "${endarray[1]}" -a "${begarray[2]}" = "${endarray[2]}" ]; then
while [ "${begarray[3]}" -le "${endarray[3]}" ];do
if ping -c1 -w1 ${endarray[0]}.${endarray[1]}.${endarray[2]}.${begarray[3]} &> /dev/null ; then
xmima=`cat /dev/urandom | head -c 10 | md5sum | head -c 6`
expect <<eof
set timeout 10
spawn ssh $user@${endarray[0]}.${endarray[1]}.${endarray[2]}.${begarray[3]}
expect {
"yes/no" {send "yes\n";exp_continue}
"password" {send "$ymima\n"}
}
expect "]#" { send "echo $xmima |passwd --stdin $user\n" }
send "exit\n"
expect eof
eof
echo ${endarray[0]}.${endarray[1]}.${endarray[2]}.${begarray[3]} xmima is $xmima >> xmima.txt
else
echo ${endarray[0]}.${endarray[1]}.${endarray[2]}.${begarray[3]} host is unreachable >> error.txt
fi
let begarray[3]++
done
else
echo 仅支持变动最后一位1~254
fi