Definir data de expiração para usuários

0

Eu uso o Ubuntu 12.04, eu tenho um arquivo "user.cfg" e eu coloco neste arquivo os usuários como este

F: user pass { enddate=2017-01-24 }

Este arquivo existe em / var / etc /

Aqui está a imagem do arquivo

Eu quero um script para apagar automaticamente o usuário expirado deste arquivo "user.cfg"

Obrigado.

    
por timovitch 17.02.2016 / 02:20

1 resposta

0

Você pode fazer:

#!/bin/bash

## Reading "/var/etc/user.cfg", saving the line being read in variable "line"
while read -r line; do

    ## Getting the username from "user.cfg", saving in variable "user"
    user="$(grep -Po '^F:\s+\K[^\s]+' <<<"$line")"

    ## Getting the expiry date from "user.cfg", saving in variable "exp_cfg"  
    exp_cfg="$(grep -Po 'enddate=\K[^\s]+' <<<"$line")"

        ## Getting expiry time, days since Epoch from 
        ## "/etc/shadow" into variable "exp_shadow"
        exp_shadow="$(sudo grep -Po "^$user:.*:\K[^:]+(?=:[^:]*$)" /etc/shadow)"

            ## Check if "exp_shadow" is not Null
            [[ -n $exp_shadow ]] &&

            ## If not null, then convert the date from "exp_cfg" into days 
            ## since epoch and then check if its less than "exp_shadow"
            ## Replace ">" with "<" if you want to see the expired accounts :)
            (( $exp_shadow > $(($(date '+%s' <<<"$exp_cfg")/86400)) )) &&

            ## If so, print the line
            echo "$line"

done </var/etc/user.cfg

Salvar como, por exemplo, user_exp_check.sh , agora você pode ver os usuários com conta não expirada executando o seguinte (supondo que você esteja no diretório do script):

bash user_exp_check.sh

Para salvar a saída em um novo arquivo, por exemplo new_user.cfg :

bash user_exp_check.sh >new_user.cfg

Depois, você pode remover o antigo arquivo /var/etc/user.cfg .

    
por heemayl 17.02.2016 / 03:39