Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tuto:ipasserelle:divers:scripts_dokuwiki [05/12/2013 11:41]
dani
tuto:ipasserelle:divers:scripts_dokuwiki [25/01/2019 16:31] (Version actuelle)
heuzef
Ligne 3: Ligne 3:
 Voilà quelques scripts qui permettent de générer des tableaux au format dokuwiki: Voilà quelques scripts qui permettent de générer des tableaux au format dokuwiki:
  
-  * Génère un tableau de tous les dossiers partagés (uniquement via la contrib ​smeserver-shared-folders),​ avec la liste des groupes ayant accès en lecture ou en écriture+  ​* Génère un tableau des comptes utilisateurs 
 + 
 +<file perl 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'​) ne '​yes'​){ 
 +    $name = '<​color red>'​ . $_->key . '</​color>';​ 
 +  } 
 +  print '​|'​ . $name . ' |' . $_->​prop('​LastName'​) . 
 +     '​ |' . $_->​prop('​FirstName'​) . ' |' . ($_->​prop('​PreferredMail'​) || $_->key . '​@'​ . $main_dom) . 
 +      "​|\n";​ 
 +
 +</​file>​ 
 + 
 +  ​* 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
 <file perl shares.pl>​ <file perl shares.pl>​
 #​!/​usr/​bin/​perl -w #​!/​usr/​bin/​perl -w
Ligne 137: Ligne 176:
 print '​|'​ . $_->key . ' |' . $_->​prop('​Account'​) . " |\n" foreach ($a->​get_all_by_prop (type => "​pseudonym"​));​ print '​|'​ . $_->key . ' |' . $_->​prop('​Account'​) . " |\n" foreach ($a->​get_all_by_prop (type => "​pseudonym"​));​
 </​file>​ </​file>​
 +
 +  * Génère un tableau avec les groupes (et leur pseudo pointant dessus) et la liste des utilisateurs qui recevront les mails
 +<file perl 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;
 +}
 +</​file>​
 +
 +  * Rapports de sauvegardes BackupPC
 +
 +<file perl backups.pl>​
 +#​!/​usr/​bin/​perl
 +
 +use lib "/​usr/​share/​BackupPC/​lib";​
 +use BackupPC::​Lib;​
 +use BackupPC::​CGI::​Lib;​
 +use POSIX;
 +use List::Util qw(min);
 +use Data::​Dumper;​
 +
 +# We need to switch to backuppc UID/GID
 +my $uid = getuid();
 +my $gid = getgid();
 +my (undef,​undef,​$bkpuid,​$bkpgid) = getpwnam('​backuppc'​);​
 +setuid($bkpuid) if ($uid ne $bkpuid);
 +setgid($bkpgid) if ($gid ne $bkpgid);
 +
 +my $bpc = BackupPC::​Lib->​new();​
 +my $hosts = $bpc->​HostInfoRead();​
 +my $mainConf = $bpc->​ConfigDataRead();​
 +
 +print '^ Jeux de sauvegarde ^ Description ^ Fréquence (jours) ^ volume complète (Go) ^ Volume incrémental (Go) ^ Durée moyenne (minutes) ^' . "​\n";​
 +
 +foreach my $host (sort keys %$hosts){
 +  my $hostConf = $bpc->​ConfigDataRead($host);​
 +  my $conf = { %$mainConf, %$hostConf };
 +  my @backups = $bpc->​BackupInfoRead($host);​
 +  my ($nb_bkp,​$nb_full,​$nb_incr,​$size_full,​$size_incr,​$duration) = 0;
 +
 +  foreach my $backup (@backups){
 +    $nb_bkp += 1;
 +    $duration += $backup->​{endTime} - $backup->​{startTime};​
 +    if ($backup->​{type} eq '​full'​){
 +      $nb_full += 1;
 +      $size_full = $backup->​{size};​
 +    } else {
 +      $nb_incr += 1;
 +    }
 +    # The size of new files can be computed for full or incr
 +    $size_incr += $backup->​{sizeNew};​
 +  }
 +
 +  if ($nb_bkp > 0){
 +    $duration = sprintf('​%.0f',​ ($duration / 60) / $nb_bkp);
 +    $size_incr = sprintf('​%.3f',​ ($size_incr / (1024 * 1024 * 1024)) / $nb_bkp);
 +  }
 +  $size_full = sprintf('​%.3f',​ $size_full / (1024 * 1024 * 1024));
 +  my $freq = ($conf->​{BackupsDisable} == 0 ) ? ceil(min(($conf->​{IncrPeriod},​ $conf->​{FullPeriod}))) : '​N/​A';​
 +
 +  print "​|$host | | $freq | $size_full | $size_incr | $duration |\n";
 +}
 +</​file>​
 +
 +
 +----
 +
 +Exporter le résultats de tous les scripts : ''​for i in *.pl;do perl $i > ${i%}.txt;​done''​
  • tuto/ipasserelle/divers/scripts_dokuwiki.1386240088.txt.gz
  • Dernière modification: 05/12/2013 11:41
  • par dani