Skip to content

批量修改服务器用户密码

shell
#!/bin/bash
OLD_INFO=old_pass.txt
NEW_INFO=new_pass.txt
for IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); do
    USER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO)
    PASS=$(awk -v I=$IP 'I==$1{print $3}' $OLD_INFO)
    PORT=$(awk -v I=$IP 'I==$1{print $4}' $OLD_INFO)
    NEW_PASS=$(mkpasswd -l 8) # 随机密码
    echo "$IP $USER $NEW_PASS $PORT" >> $NEW_INFO
    expect -c "
    spawn ssh -p$PORT $USER@$IP
    set timeout 2
    expect {
        \\"(yes/no)\\" {send \\"yes\\r\\";exp_continue}
        \\"password:\\" {send \\"$PASS\\r\\";exp_continue}
        \\"$USER@*\\" {send \\"echo \\'$NEW_PASS\\' |passwd --stdin $USER\\r exit\\r\\";exp_continue}
    }"
done