Pour les scripts : c'est ici

je trouve les “sleep X; clear” vraiment dégueulasses

salut,

Moi c’est pas le sleep :smiley:

lol et je crois que ete c’est avec un s lol

Pardon pour les fautes d’orthographe je viens de les corrigés
il s’agit de mon premier script en shell donc toutes les critiques sont les bienvenue !!

Pardon pour les fautes d’orthographe je viens de les corrigés .
il s’agit de mon premier script en shell donc toutes les critiques sont les bienvenue !!

Salut,

Si tu le dis :smiley: :smiley: :smiley: :smiley:

[quote=“zyriuse”]Pardon pour les fautes d’orthographe je viens de les corriger
il s’agit de mon premier script en shell donc toutes les critiques sont les bienvenue !![/quote]

[quote]#Création de compte pour le SRV_Fichier Samba

créé le 04/05/09 par Olivier aliase zyriuse

echo “Il faut être root pour exécuter le script”

echo “Sélectionner le nom de l’utilisateur à ajouter”

une commande Unix retourne 0 quand son résultat est positif

echo “l’utilisteur existe déjà”

echo " Etes-vous sûr de vouloir créer l’utilisateur o/n:"
read choix < $t_tty #il écoute la sortie

 echo "Création du compte Samba"

echo " le compte a bien été créé "
[/quote]

Contribution :slightly_smiling:

[quote=“ggoodluck47”][quote]#Création de compte pour le SRV_Fichier Samba

créé le 04/05/09 par Olivier aliase zyriuse

echo “Il faut être root pour exécuter le script”

echo “Sélectionner le nom de l’utilisateur à ajouter”

une commande Unix retourne 0 quand son résultat est positif

echo “l’utilisteur existe déjà”

echo " Etes-vous sûr de vouloir créer l’utilisateur o/n:"
read choix < $t_tty #il écoute la sortie

 echo "Création du compte Samba"

echo " le compte a bien était créé "
[/quote]

Contribution :)[/quote]
Surcontribution (“le compte avait bien été créé”, on peut le dire, donc verbe avoir, donc pas d’accent…)

Ça fait un bail que personne n’a posté ici et moi encore plus.
Je suis entrain de travailler sur mon site web et j’ai donc besoin d’envoyer mes fichiers par ftp (j’ai un LAMP local mais je veux pouvoir montrer l’état de développement à des amis de temps en temps). Les clients FTP ils me sortent par les yeux, déconnexion/reconnexion plusieurs fois pour un simple envoie de quelques fichiers lourdeur général, difficulté de le configurer pour être efficace,… bref je me suis fait un script ça iras plus vite.

C’est du perl, l’idée c’est d’avoir un répertoire local, un répertoire distant et de vouloir tout envoyé dans le dossier distant en écrasant les précédents fichiers.

Note: il n’y a aucune gestion de quel version est la plus récente entre la version distante et la version local, c’est un script basique pour le moment en tout cas.

[code]#!/usr/bin/perl

-- coding: utf-8 --

Envoie de données par ftp

Version 0.1

use strict;
use warnings;
use Net::FTP;

my $localdir = $ENV{HOME}.’/public_html/blog’;
my $distdir = ‘/blog’;
my $host = ‘ftpperso.free.fr’;
my $login = ‘coucoucestmoi’;
my $mdp = ‘mdpsuperfort’;

my $ftp = Net::FTP->new($host, Debug => 0)
or die “Cannot connect to $host: $@”;

$ftp->login($login, $mdp)
or die "Cannot login ", $ftp->message;

$ftp->cwd($distdir)
or die "Cannot change working directory ", $ftp->message;

sub parcours {
my $path = shift(@_);
opendir(DIR, $path) or die “can’t open $path: $!\n”;
my @files = readdir(DIR);
closedir(DIR);
foreach my $file (@files) {
next if $file =~ /^..?$/;
if (-d $path.’/’.$file) {
$ftp->mkdir($file);
$ftp->cwd($file)
or die "cwd failed ", $ftp->message;
&parcours($path.’/’.$file);
}
if (-f $path.’/’.$file) {
if (grep(/^$file$/, $ftp->ls())){
$ftp->delete($file);
}
$ftp->put($path.’/’.$file)
or die “put failed “, $ftp->message;
print $path.’/’.$file.” envoyé\n”;
}
}
$ftp->cdup()
or die “cdup failed “, $ftp->message;
print $path.”\n”;
}

parcours $localdir;

$ftp->quit;[/code]

Alors oui c’est lisible comme du perl, mais j’améliorerais peut être le code plus tard.

Version 0.2 du code ci-dessus, il gère les dates et envoie les fichiers PNG en mode binaire. Petit plus maintenant il y a de la couleur.

[code]#!/usr/bin/perl

-- coding: utf-8 --

Envoie de données par ftp

Version 0.2

use strict;
use warnings;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
print color ‘bold blue’;
print @_;
print color ‘reset’;
}

sub printgreen {
print color ‘green’;
print @_;
print color ‘reset’;
}

my $localdir = $ENV{HOME}.’/public_html/blog’;
my $distdir = ‘/blog’;
my $host = ‘ftpperso.free.fr’;
my $login = ‘michel.barret5’;
my $mdp = ‘motdepasse’;

my $ftp = Net::FTP->new($host, Debug => 0)
or die “Echec de la connexion à $host: $@”;

$ftp->login($login, $mdp)
or die “Echec du”, $ftp->message;

$ftp->cwd($distdir)
or die "Echec du changement de répertoire ", $ftp->message;

sub parcours {
my $path = shift(@_);
opendir(DIR, $path) or die “can’t open $path: $!\n”;
printblue " On entre dans le répertoire $path\n";
my @files = readdir(DIR);
closedir(DIR);
foreach my $file (@files) {
next if $file =~ /^..?$/;
if (-d $path.’/’.$file) {
# Le fichier est un répertoire
$ftp->mkdir($file);
# On ne vérifie pas l’erreur au
# cas où le dossier existe déjà
$ftp->cwd($file)
or die "cwd failed ", $ftp->message;
&parcours($path.’/’.$file);
}
elsif (-f $path.’/’.$file) {
if (grep(/^$file$/, $ftp->ls())){
# Le fichier existe déjà sur le serveur
my $distdate = $ftp->mdtm($file);
my $localdate = (stat ($path.’/’.$file))[9];
# Si le fichier sur le serveur est plus récent
# on ne fait rien
next if($distdate > $localdate);
# Sinon on le supprime pour le remplacer
$ftp->delete($file);
}
if(grep(/.png$/, $file)){
$ftp->binary();
}
$ftp->put($path.’/’.$file)
or die “put failed “, $ftp->message;
if(grep(/.png$/, $file)){
$ftp->ascii();
}
printgreen $file.” envoyé\n”;
}
}
$ftp->cdup()
or die “cdup failed “, $ftp->message;
print $path.” traité\n”;
}

parcours $localdir;

$ftp->quit;[/code]

Salut,

La coutume voudrait que la seconde ligne (et les suivantes) explique clairement ce que fait le script qui suit :slightly_smiling:

Il fait exactement comme la version 0.1 que tu trouveras juste au dessus, c’est à dire, envoyer des fichiers sur un FTP en écrasant si besoin est les fichiers sur le serveur. On défini le dossier local, le dossier client (évidement le serveur, login et mot de passe) et il envoie les fichiers. Il reste un problème pour les fichiers binaires, là je gère les fichiers png mais ce n’est pas satisfaisant.
Il fait une comparaison des dates pour ne pas envoyer un fichier si la version du serveur est plus récente que la version local (ça reviens à dire qu’il y a pas eu de modification depuis).
Enfin il a une certaine coloration de la sortie ce qui permet de mieux voir ce qui se passe.

Salut MisterFreez,

Cette remarque ne t’ etait pas spécialement destinée, c’était un rappel :

Je suis abonné à ce post, mais je ne suis pas concerné par tous les scripts, c’est donc particulièrement agréable quand dès la première ligne je sais ce qu’il fait sans me reporter aux posts précédents :slightly_smiling:
Je suppose que je ne suis pas le seul dans ce cas :slightly_smiling:

D’accord pas de soucis je voyais pas les choses ainsi.
Version 0.3 de mon script d’envoie de fichier sur FTP en perl. Seule différence avec la version 0.2, il envoie tout en mode binaire. Ça permet d’envoyer des fichiers textes comme binaires sans problème.

[code]#!/usr/bin/perl

-- coding: utf-8 --

Envoie de données par ftp

Version 0.3

use strict;
use warnings;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
print color ‘bold blue’;
print @_;
print color ‘reset’;
}

sub printgreen {
print color ‘green’;
print @_;
print color ‘reset’;
}

my $localdir = $ENV{HOME}.’/public_html/blog’;
my $distdir = ‘/blog’;
my $host = ‘ftpperso.free.fr’;
my $login = ‘michel.barret5’;
my $mdp = ‘motdepasse’;

my $ftp = Net::FTP->new($host, Debug => 0)
or die “Echec de la connexion à $host: $@”;

$ftp->login($login, $mdp)
or die “Echec du”, $ftp->message;

$ftp->cwd($distdir)
or die "Echec du changement de répertoire ", $ftp->message;
$ftp->binary();

sub parcours {
my $path = shift(@_);
opendir(DIR, $path) or die “can’t open $path: $!\n”;
printblue " On entre dans le répertoire $path\n";
my @files = readdir(DIR);
closedir(DIR);
foreach my $file (@files) {
next if $file =~ /^..?$/;
if (-d $path.’/’.$file) {
# Le fichier est un répertoire
$ftp->mkdir($file);
# On ne vérifie pas l’erreur au
# cas où le dossier existe déjà
$ftp->cwd($file)
or die "cwd failed ", $ftp->message;
&parcours($path.’/’.$file);
}
elsif (-f $path.’/’.$file) {
if (grep(/^$file$/, $ftp->ls())){
# Le fichier existe déjà sur le serveur
my $distdate = $ftp->mdtm($file);
my $localdate = (stat ($path.’/’.$file))[9];
# Si le fichier sur le serveur est plus récent
# on ne fait rien
next if($distdate > $localdate);
# Sinon on le supprime pour le remplacer
$ftp->delete($file);
}
$ftp->put($path.’/’.$file)
or die “put failed “, $ftp->message;
printgreen $file.” envoyé\n”;
}
}
$ftp->cdup()
or die “cdup failed “, $ftp->message;
print $path.” traité\n”;
}

parcours $localdir;

$ftp->quit;[/code]

[quote=“MisterFreez”]D’accord pas de soucis je voyais pas les choses ainsi.
Version 0.3 de mon script d’envoie de fichier sur FTP en perl. Seule différence avec la version 0.2, il envoie tout en mode binaire. Ça permet d’envoyer des fichiers textes comme binaires sans problème.[/quote]Salut, voici que est très cool, très pratique ton script ! :smiley: Et comme toi, j’en ai besoin maintenant… ça avance ton site ?

Re,

[quote]#!/usr/bin/perl

Version 0.3

Envoi de fichier sur FTP en perl

use strict;

[/quote]

Comme quoi ce n’est pas toujours facile de se faire comprendre :slightly_smiling: :slightly_smiling:

[quote=“ggoodluck47”]Salut MisterFreez,

Cette remarque ne t’ etait pas spécialement destinée, c’était un rappel :

Je suis abonné à ce post, mais je ne suis pas concerné par tous les scripts, c’est donc particulièrement agréable quand dès la première ligne je sais ce qu’il fait sans me reporter aux posts précédents :slightly_smiling:
Je suppose que je ne suis pas le seul dans ce cas :slightly_smiling:[/quote]
Non, pas seul, moi itou !

Voici la dernière version du script perl servant à envoyer une arborescence sur un FTP.
La seule différence de cette version 0.4 c’est que le code est licencié (CECILL).

[code]#!/usr/bin/perl

-- coding: utf-8 --

Envoie de données par ftp

Version 0.4

#Copyright Michel Barret, 4 avril 2009

#michel.barret@gmail.com

#Ce logiciel est un programme informatique servant à envoyer une arborescence
#complète d’un répertoire sur FTP.

#Ce logiciel est régi par la licence CeCILL soumise au droit français et
#respectant les principes de diffusion des logiciels libres. Vous pouvez
#utiliser, modifier et/ou redistribuer ce programme sous les conditions
#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l’INRIA
#sur le site “http://www.cecill.info”.

#En contrepartie de l’accessibilité au code source et des droits de copie,
#de modification et de redistribution accordés par cette licence, il n’est
#offert aux utilisateurs qu’une garantie limitée. Pour les mêmes raisons,
#seule une responsabilité restreinte pèse sur l’auteur du programme, le
#titulaire des droits patrimoniaux et les concédants successifs.

#A cet égard l’attention de l’utilisateur est attirée sur les risques
#associés au chargement, à l’utilisation, à la modification et/ou au
#développement et à la reproduction du logiciel par l’utilisateur étant
#donné sa spécificité de logiciel libre, qui peut le rendre complexe à
#manipuler et qui le réserve donc à des développeurs et des professionnels
#avertis possédant des connaissances informatiques approfondies. Les
#utilisateurs sont donc invités à charger et tester l’adéquation du
#logiciel à leurs besoins dans des conditions permettant d’assurer la
#sécurité de leurs systèmes et ou de leurs données et, plus généralement,
#à l’utiliser et l’exploiter dans les mêmes conditions de sécurité.

#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
#pris connaissance de la licence CeCILL, et que vous en avez accepté les
#termes.

use strict;
use warnings;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
print color ‘bold blue’;
print @_;
print color ‘reset’;
}

sub printgreen {
print color ‘green’;
print @_;
print color ‘reset’;
}

my $localdir = $ENV{HOME}.’/public_html/blog’;
my $distdir = ‘/blog’;
my $host = ‘ftpperso.free.fr’;
my $login = ‘michel.barret5’;
my $mdp = ‘motdepasse’;

my $ftp = Net::FTP->new($host, Debug => 0)
or die “Echec de la connexion à $host: $@”;

$ftp->login($login, $mdp)
or die “Echec du”, $ftp->message;

$ftp->cwd($distdir)
or die "Echec du changement de répertoire ", $ftp->message;
$ftp->binary();

sub parcours {
my $path = shift(@_);
opendir(DIR, $path) or die “can’t open $path: $!\n”;
printblue " On entre dans le répertoire $path\n";
my @files = readdir(DIR);
closedir(DIR);
foreach my $file (@files) {
next if $file =~ /^..?$/;
if (-d $path.’/’.$file) {
# Le fichier est un répertoire
$ftp->mkdir($file);
# On ne vérifie pas l’erreur au
# cas où le dossier existe déjà
$ftp->cwd($file)
or die "cwd failed ", $ftp->message;
&parcours($path.’/’.$file);
}
elsif (-f $path.’/’.$file) {
if (grep(/^$file$/, $ftp->ls())){
# Le fichier existe déjà sur le serveur
my $distdate = $ftp->mdtm($file);
my $localdate = (stat ($path.’/’.$file))[9];
# Si le fichier sur le serveur est plus récent
# on ne fait rien
next if($distdate > $localdate);
# Sinon on le supprime pour le remplacer
$ftp->delete($file);
}
$ftp->put($path.’/’.$file)
or die “put failed “, $ftp->message;
printgreen $file.” envoyé\n”;
}
}
$ftp->cdup()
or die “cdup failed “, $ftp->message;
print $path.” traité\n”;
}

parcours $localdir;

$ftp->quit;[/code]

Vous êtes abonnés peut être, mais vous parsé le fichier pour ne garder que ce qui est entre deux balise [code] ? (surtout que c’est pas un sujet très fréquenté)

@lol > dveloppementdemonblog.blogspot.com/

Voici une version 20% plus rapide de mon code. L’astuce consiste à créer un fichier à la fin du traitement on se base sur ça date de modification à lui pour la comparer aux fichiers locaux ça diminue les commandes FTP envoyées.
Si vous voulez réenvoyer tout les fichiers il suffit de supprimer ~/.ftpperl.

[code]#!/usr/bin/perl

-- coding: utf-8 --

Envoie de données par ftp

Version 0.5

#Copyright Michel Barret, 4 avril 2009

#michel.barret@gmail.com

#Ce logiciel est un programme informatique servant à envoyer une arborescence
#complète d’un répertoire sur FTP.

#Ce logiciel est régi par la licence CeCILL soumise au droit français et
#respectant les principes de diffusion des logiciels libres. Vous pouvez
#utiliser, modifier et/ou redistribuer ce programme sous les conditions
#de la licence CeCILL telle que diffusée par le CEA, le CNRS et l’INRIA
#sur le site “http://www.cecill.info”.

#En contrepartie de l’accessibilité au code source et des droits de copie,
#de modification et de redistribution accordés par cette licence, il n’est
#offert aux utilisateurs qu’une garantie limitée. Pour les mêmes raisons,
#seule une responsabilité restreinte pèse sur l’auteur du programme, le
#titulaire des droits patrimoniaux et les concédants successifs.

#A cet égard l’attention de l’utilisateur est attirée sur les risques
#associés au chargement, à l’utilisation, à la modification et/ou au
#développement et à la reproduction du logiciel par l’utilisateur étant
#donné sa spécificité de logiciel libre, qui peut le rendre complexe à
#manipuler et qui le réserve donc à des développeurs et des professionnels
#avertis possédant des connaissances informatiques approfondies. Les
#utilisateurs sont donc invités à charger et tester l’adéquation du
#logiciel à leurs besoins dans des conditions permettant d’assurer la
#sécurité de leurs systèmes et ou de leurs données et, plus généralement,
#à l’utiliser et l’exploiter dans les mêmes conditions de sécurité.

#Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
#pris connaissance de la licence CeCILL, et que vous en avez accepté les
#termes.

use strict;
use warnings;
use Time::Local;
use Net::FTP;
use Term::ANSIColor;

sub printblue {
print color ‘bold blue’;
print @_;
print color ‘reset’;
}

sub printgreen {
print color ‘green’;
print @_;
print color ‘reset’;
}

my $localdir = $ENV{HOME}.’/public_html/blog’;
my $distdir = ‘/blog’;
my $host = ‘ftpperso.free.fr’;
my $login = ‘michel.barret5’;
my $mdp = ‘*****’;

my $fileref = $ENV{HOME}.’/.ftpperl’;
my $dateref;
if (-f $fileref){
$dateref = (stat ($fileref))[9];
}

my $ftp = Net::FTP->new($host, Debug => 0)
or die “Echec de la connexion à $host: $@”;

$ftp->login($login, $mdp)
or die “Echec du”, $ftp->message;

$ftp->cwd($distdir)
or die "Echec du changement de répertoire ", $ftp->message;
$ftp->binary();

sub parcours {
my $path = shift(@_);
opendir(DIR, $path) or die “can’t open $path: $!\n”;
printblue " On entre dans le répertoire $path\n";
my @files = readdir(DIR);
closedir(DIR);
foreach my $file (@files) {
next if $file =~ /^..?$/;
if (-d $path.’/’.$file) {
# Le fichier est un répertoire
$ftp->mkdir($file);
# On ne vérifie pas l’erreur au
# cas où le dossier existe déjà
$ftp->cwd($file)
or die "cwd failed ", $ftp->message;
&parcours($path.’/’.$file);
}
elsif (-f $path.’/’.$file) {
if (grep(/^$file$/, $ftp->ls())){
# Le fichier existe déjà sur le serveur
my $localdate = (stat ($path.’/’.$file))[9];
if(! -f $fileref){
$dateref = $ftp->mdtm($file);
}
next if($dateref > $localdate);
# Sinon on le supprime pour le remplacer
$ftp->delete($file);
}
$ftp->put($path.’/’.$file)
or die “put failed “, $ftp->message;
printgreen $file.” envoyé\n”;
}
}
# On remonte d’un cran
$ftp->cdup()
or die “cdup failed “, $ftp->message;
print $path.” traité\n”;
}

parcours $localdir;

$ftp->quit;

utime(time, time, $fileref) or ( open(F, “>$fileref”) && close F );[/code]
Une nouvelle version va arriver sous peu avec un fonctionnement bien plus sophistiquer qui j’espère iras encore plus vite.