Ceci est une ancienne révision du document !


Scripts pour dokuwiki

Voilà quelques scripts qui permettent de générer des tableaux au format dokuwiki:

  • Génère un tableau des comptes utilisateurs
users.pl
#!/usr/bin/perl -w
 
use strict;
use esmith::AccountsDB;
use esmith::ConfigDB;
 
my $a = esmith::AccountsDB->open_ro() || die "Couldn't open the accounts database";
my $c = esmith::ConfigDB->open_ro() || die "Couldn't open the configuration database";
 
my $main_dom = $c->get('DomainName')->value;
 
my @fws_accounts = qw(
  fws
  maillog
  backup
  mails-partages
  scanner
  deploiement
  auth
);
 
print '^ Identifiant ^ Nom ^ Prénom ^ Adresse email principale ^' . "\n";
 
foreach ($a->users){
  my $name = $_->key;
  if (grep { $name eq $_ } @fws_accounts){
    $name = '<color blue>' . $_->key . '</color>';
  } elsif (($_->prop('PasswordSet') || 'no') eq 'yes'){
    $name = '<color red>' . $_->key . '</color>';
  }
  print '|' . $name . ' |' . $_->prop('LastName') .
     ' |' . $_->prop('FirstName') . ' |' . ($_->prop('PreferredMail') || $_->key . '@' . $main_dom) .
      "|\n";
}
  • Génère un tableau de tous les dossiers partagés (smeserver-shared-folders et ibays), avec la liste des groupes ayant accès en lecture ou en écriture
shares.pl
#!/usr/bin/perl -w
 
use strict;
use esmith::AccountsDB;
 
my $a = esmith::AccountsDB->open_ro() || die "Couldn't open the accounts database";
 
print "^ Nom ^ Acces en ecriture ^  Acces en lecture seule ^  Acces au reseau local ^ Acces web ^ Remarque ^\n";
 
foreach my $share ($a->get_all_by_prop(type => 'share')) {
    my $name = $share->key;
    my $w = join " ", split (/,/, ($share->prop('WriteGroups') || ''). ',' . ($share->prop('WriteUsers') || ''));
    my $r = join " ", split (/,/, ($share->prop('ReadGroups') || '') . ',' . ($share->prop('ReadUsers') || ''));
    my $loc = (($share->prop('smbAccess') || 'none') ne 'none') ? 'Oui':'Non';
    my $remote = $share->prop('httpAccess') || 'none';
    my $rem = '';
    if ($remote eq 'global'){
        $rem = 'public sans mot de passe';
    }
    elsif ($remote eq 'local'){
        $rem = 'depuis les reseau locaux uniquement, sans mot de passe';
    }
    elsif ($remote eq 'local-pw'){
        $rem = 'depuis les reseaux locaux uniquement, authentification necessaire'
    }
    elsif ($remote eq 'global-pw'){
        $rem = 'public, authentification necessaire';
    }
    elsif ($remote eq 'global-pw-remote'){
        $rem = 'public, authentification necessaire depuis l\'exterieur';
    }
    elsif ($remote eq 'none'){
        $rem = 'Non';
    }
    my $com = '';
    if ($name eq 'intranet'){
        $com = "Partage reserve a un usage interne";
    }
    elsif ($name eq 'extranet'){
        $com = "Partage public vers l'exterieur";
    }
    elsif ($name eq 'tools'){
        $com = "Partage utilise pour les taches administratives";
    }
    elsif ($name eq 'wpkg' or $name eq 'wpkglogs'){
        $com = "Partage utilise pour le deploiement de logiciels";
    }
    print '|' . $name . ' |' . $w . ' |' . $r . ' |' . $loc . ' |' . $rem . ' |' . $com . ' |' . "\n";
}
foreach my $ibay ($a->ibays){
    my $name = $ibay->key;
    my $access = $ibay->prop('UserAccess') || 'wr-group-rd-group';
    my $remote = $ibay->prop('PublicAccess') || 'none';
    my $group = $ibay->prop('Group') || 'shared';
    my $com = $ibay->prop('Name') || '';
    my $w = '';
    my $r = '';
    my $rem = '';
    if ($access eq 'wr-group-rd-group'){
        $w = $group;
    }
    elsif ($access eq 'wr-group-rd-everyone'){
        $w = $group;
        $r = 'Tous les utilisateurs';
    }
    elsif ($access eq 'wr-admin-rd-group') {
        $w = 'Uniquement les administrateurs (Firewall Services)';
        $w = $group;
    }
    if ($remote eq 'global'){
        $rem = 'public sans mot de passe';
    }
    elsif ($remote eq 'local'){
        $rem = 'depuis les réseau locaux uniquement, sans mot de passe';
    }
    elsif ($remote eq 'local-pw'){
        $rem = 'depuis les réseaux locaux uniquement, authentification nécessaire'
    }
    elsif ($remote eq 'global-pw'){
        $rem = 'public, authentification nécessaire';
    }
    elsif ($remote eq 'global-pw-remote'){
        $rem = 'public, authentification nécessaire depuis l\'exterieur';
    }
    elsif ($remote eq 'none'){
        $rem = 'Non';
    }
    print '|' . $name . ' |' . $w . ' |' . $r . ' | Oui |' . $rem . ' |' . $com . ' |' . "\n";
}
  • Génère une matrice des groupes et des utilisateurs, avec affichage des appartenance aux groupes
groups.pl
#!/usr/bin/perl -w
 
use strict;
use esmith::AccountsDB;
 
my $a = esmith::AccountsDB->open_ro() || die "Couldn't open the accounts database";
 
my @groups = $a->groups;
my @users = $a->users;
 
# Print the header
print '|  ';
print "^ " . $_->key foreach (@groups);
print ' ^' . "\n";
 
foreach my $user (@users){
    my $pos = 0;
    print '|' . $user->key . '|';
    foreach my $group (@groups){
        print 'x' if ($a->is_user_in_group($user->key,$group->key));
        print ' |';
    }
    print "\n";
}
  • Génère un tableau des pseudonymes
pseudo.pl
#!/usr/bin/perl -w
 
use strict;
use esmith::AccountsDB;
 
my $a = esmith::AccountsDB->open_ro() || die "Couldn't open the accounts database";
 
print '^ Pseudonyme ^ Utilisateur ou groupe ^' . "\n";
 
print '|' . $_->key . ' |' . $_->prop('Account') . " |\n" foreach ($a->get_all_by_prop (type => "pseudonym"));
  • Génère un tableau avec les groupes (et leur pseudo pointant dessus) et la liste des utilisateurs qui recevront les mails
grpmail.pl
#!/usr/bin/perl -w
 
use esmith::AccountsDB;
use esmith::ConfigDB;
 
my $a = esmith::AccountsDB->open_ro || die "Couldn't open AccountsdDB\n";
my $c = esmith::ConfigDB->open_ro || die "Couldn't open ConfigDB\n";
my $domain = $c->get('DomainName')->value;
 
print '^Adresse(s) |membres ^' ."\n";
 
foreach my $group ($a->groups, $a->get_all_by_prop(type => 'minilist')){
    my $name = $group->key;
    my $addr = $name . '@' . $domain;
    foreach my $pseudo ($a->pseudonyms){
        my $target = $pseudo->prop('Account') || '';
        if ($target eq $name){
            my $p = $pseudo->key;
            $p .= ($pseudo->key =~ m/\@/) ? '' : "\@$domain";
            $addr .= '\\\\ ' . $p;
        }
    }
    my @members = split ',', $group->prop('Members');
    my $str = '^' . $addr . ' |';
    foreach my $member (@members){
        $member .= ($member =~ m/\@/) ? '' : "\@$domain";
        $str .= $member . ', ';
    }
    $str =~ s/, $//;
    $str .= ' |' . "\n";
    print $str;
}
  • tuto/ipasserelle/divers/scripts_dokuwiki.1547628144.txt.gz
  • Dernière modification: 16/01/2019 09:42
  • par dani