#!/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
shell批量修改密码
最新推荐文章于 2023-12-14 20:54:32 发布