shell批量修改密码

#!/bin/bash
E_WRONGARGS=65 
ARGS=4
PLISTA="-i"
PLISTB="-u"
CHARMUN=12
mypasswd(){
while :
do
	PASSWD=$(</dev/urandom tr -dc '+!@#()%23456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ' | head -c${CHARMUN}; echo)
	if [[ $PASSWD =~ [\(\)\!\+\#\@\%] ]];then
	break
	fi
	PASSWD=$PASSWD
done
}
usage()
{
echo "Usage:
example: 
sh $0 -i iplist -u myuser
sh $0 -i 10.10.10.10 -u myuser
sh $0 -i 10.10.10.10,10.10.10.20 -u myuser"
exit $E_WRONGARGS
}
function check_input() {
  while [ "$#" -ne 0 ]; do # While there are still arguments to process
    case "$1" in
    -i)
      MYIPLIST=$2
      shift
      shift
      ;;
    -u)
      USERNAME=$2
      shift
      shift
      ;;
    *)
      shift
      ;; 
    esac
  done
}
main(){
for HOSTIP in `cat mylist`
do
ssh $HOSTIP -o PreferredAuthentications=publickey -o StrictHostKeyChecking=no -o ConnectTimeout=10 "echo test" &>/dev/null
	if [ $? -eq 0 ];then
	    #"Use different password for iplist."
       	    ssh -o PreferredAuthentications=publickey -o StrictHostKeyChecking=no -o ConnectTimeout=10 $HOSTIP "echo '$PASSWD'|passwd --stdin $USERNAME" &>/dev/null
            if [ $? -eq 0 ];then
                echo $HOSTIP,USERNAME: ${USERNAME},PASSWD: ${PASSWD}
            else
                echo "$HOSTIP,Reset Passwd Failed"
            fi
       	else
            echo "$HOSTIP,SSH disconnected"
        fi
done
}
if [ $# -ne "$ARGS" ];then 
usage
exit $E_WRONGARGS 
fi
if [[ ! $PLISTA =~ $1 ]] || [[ ! $PLISTB =~ $3 ]];then
usage
fi
check_input $@
if [ ! -f $MYIPLIST ];then
echo $MYIPLIST > mylist && sed -i 's/[^(0-9|.)]/ /g' mylist
else
cat $MYIPLIST > mylist
fi
mypasswd
main

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值