Archive for Programmation

Ptite boucle en shell pour tout dézipper ?

En effet pour dézipper plein d’archive vite en 1 seul fois, il est impossible de faire « unzip * » !

Donc pour cela, il faut prendre tout les fichiers zip d’un répertoire, et pour chaque faire un unzip.

Voici comment faire en une petite boucle de commande.En effet pour dézipper plein d’archive vite en 1 seul fois, il est impossible de faire « unzip * » !

Donc pour cela, il faut prendre tout les fichiers zip d’un répertoire, et pour chaque faire un unzip.
La petite boucle en question :

for fichiers in `ls *.zip`;
do unzip $fichiers;
done;

Article lu 2320 fois

TAR via SSH

J’oublie toujours la commande, donc je la note ici !! très pratiques pour backuper à distance via ssh :pJ’oublie toujours la commande, donc je la note ici !! très pratiques pour backuper à distance via ssh :pVoici le contexte, très très simple :p

Donc je suis sur mon PC et je veux sauvegarder mon /home sur le serveur de backup, qui a pour IP 192.168.1.1 par exemple.

Je vais mettre la sauvegarde dans le répertoire /home/backup/ du serveur de sauvegarde.

un serveur SSH doit tourner et être accessible par le réseaux.

Il faut également disposer d’un compte sur le serveur (ici : root !! pas bien !! :p)

Le fichier de backup s’appellera « home.tar.bz2 »

Voici comment faire :


# tar jcv /home | ssh root@192.168.1.1 'cat > /home/backup/home.tar.bz2'

Easy hein !!!


Article lu 1086 fois

[ MySQL ] Supprimer l’historique

Chaque commande faite avec le client mysql est loggé afin de conserver un historique.

Cette historique regorge d’information intéressante qui, dans de mauvaise main, peut mettre en danger le serveur MySQL.
Voici comment désactiver cette historique. Bien évidement d’autres méthodes doivent exister..

Cette désactivation peut se faire en exportant la variable MYSQL_HISTFILE :


export MYSQL_HISTFILE=/dev/null

Pour rendre cette variable permanente, éditer le fichier /etc/profile et ajouter cette export dedans :


[ .... ]
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
export MYSQL_HISTFILE=/dev/null
[ .... ]

Et voila ! plus d’historique pour le MySQL !! :)


Article lu 1099 fois

[ Bash ] Ne pas logger les commandes bash

Voici une petite astuce histoire de rester discret et de ne pas historiser les quelques commandes faites !Voici une petite astuce histoire de rester discret et de ne pas historiser les quelques commandes faites !Afin de ne pas logger temporairement les diverses commandes tapées dans la page noir (dans la console quoi…), il suffit de renseigner la variable d’environement correctement.

Voici la ligne à tapoter dans le shell :


HISTFILE="/dev/null"

Cette commande va modifier le fichier ou est stocké l’historisation des commandes. Par défaut il s’agit du fichier ~/.bash_history

Ici le principe est simple : on indique un nouveau fichier d’historisation qui est tout simplement /dev/null !

Ainsi, rien n’est historisé durant la session.

Cette astuce fonctionne pour le BASH et le DASH


Article lu 1080 fois

[ Shell ] Envoyer un mail en ligne de commande

Voici comment envoyer rapidement un mail en ligne de commande.Voici comment envoyer rapidement un mail en ligne de commande.{{Pour envoyer un mail en mode console :}}

mail -s « Le sujet » destinataire@domaine.com

Vous tapez votre texte et pour finir :

ctrl + d

{{Pour envoyer un fichier :}}

cat fichier | mail -s « Le sujet » destinataire@domaine.com

Vous tapez votre texte …. ;)


Article lu 1004 fois

Séparer un nom de fichier de son répertoire

Un jour, où j’ai voulu adapter un script shell existant, j’ai eu besoin de séparer le nom d’un fichier du répertoire dans lequel il se trouvait :
/home/tata/toto => /home/tata + toto

D’ailleurs, il existe peut être une commande qui fait ça toute seule comme une grande ^_^

Ce que fait le script :
# ./toto.sh /home/tata/toto
DIR /home/tata/
FILE toto

Ce qu’il y a dedans :

#!/bin/bash

DEBUG= » »
DIR= » »
FILE= » »

new=$1
[ « x$new » = « x » ] && exit 0

while [ « x$FILE » = « x » ]
do
if [ « x$new » != « x » ]
then
taille=`expr length $new`
slash=`expr index $new « / »`
if [ « x$slash » = « x1 » ]
then
[ $DEBUG ] && echo « Supression premier slash »
slash=`expr $slash + 1 `
new=` expr substr $new $slash $taille`
DIR=’/’
fi
slash=`expr index $new « / »`
if [ « x$slash » = « x0″ ]
then
FILE=$new
else
[ $DEBUG ] && echo  » un / dans $new au $slash caractere »
dir=`expr substr $new 1 $slash`
DIR=${DIR}${dir}
slash=`expr $slash + 1`
new=` expr substr $new $slash $taille`
[ $DEBUG ] && echo « dir : $dir »
fi
else
FILE=$DIR
fi
[ $DEBUG ] && sleep 1
done

if [ ${FILE} = ${DIR} ]
then
FILE= » »
fi
echo « DIR $DIR »
echo « FILE $FILE »


Article lu 1627 fois

Tite fonction FTP

Ce script est une fonction permettant le rappatriement d’un fichier en perl.

Il liste également les fichiers présents dans un répertoire donné.

Note : Les variables sont à définir !! ;)
# Fonction de connexion FTP
sub connect_ftp {
my $fichier = @_[0];
if ($ftp = Net::FTP->new("$adresseftp",Debug => 0)) {
print "--> Connection OK\n";
}
else {
print "--> Connection ERR\n$@";
}

# on envoi le login et mdp
if ($ftp->login(« $login », »$passwd »)) {
print « –> Login OK\n »;
}
else {
print « –> Login ERR\n »;
}

# on se met dans le bon rep
if ($ftp->cwd (« $rep_distant »)) {
print « –> Dossier distant OK\n »;
}
else {
print « –> Erreur le chemin du dossier distant n’existe pas\n »;
}

# on liste le rep
my @liste=$ftp->ls();
foreach my $liste(@liste) {
print « –> $liste\n »;
}

# On rappatri le fichier donne en argument � la fonction
if ($ftp->get($fichier, »$rep_local/$nom_fichier »)) {
print « –> rappatriement de $nom_fichier reussi\n »;
$ftp->close();
}
else {
print « –> ECHEC ! rappatriement de $fichier \n »;
}
}

 


Article lu 959 fois

1 – Le perl et les chaines de caractère

Le Perl est avant tout un langage permettant la manipulation des mots et de tout ce qui est à base de texte :

Il sait lire, écrire, modifier des fichiers, rechercher, et bien plus encore !!Dans le langage perl, comme dans tout les langages de programmation de ce type, les textes s’appellent des {{String}} :) (non pas ceux la !!) ou {{chaîne de caractère}} pour éviter toutes confusion avec les sous-vêtement !!! Bon oki => je sors…

Une chaine de caractère se compose donc de 0 ou plusieurs signes rassemblé en un tout. En gros, c’est presque tout ce qu’on saisie au clavier…


Exemple de chaîne de caractères :

Bonjours
123456789AZERTYUIOP
2é*ù+:;,!

En perl, les variables peuvent contenir aussi bien des nombres que des chaîne de caractère.

La + petite chaîne de caractère possible est Nullstring avec combien de caractère ? ba .. 0 .. c’est la plus petite…


Article lu 1061 fois

Les librairies PERL

Voici comment implémenter une librairie en perl par un exemple explicit.Par convention, les librairie sous Perl ont pour extension le ‘.pm’.

Exemple avec le fichier music.pm (la lib) :
—————

package music;

use strict;

sub play_music () {
// mon code….
return 0;
}

// TRES IMPORTANT
1;

——————

Pour le fichier contenant le programme principal :

——————

#!/usr/bin/perl

// s’agit de pas dévellopé comme un porc !
use strict;

// Ca mange pas de pain et ca simplifit la vie !
BEGIN {
my $path = $0;
$path =~ m,^(.*)/[^/]+$,;
unshift(@INC, « . », « lib », « $1 », « $1/lib », « $1/../lib »);
}

// On fait connaitre la librairie
use music;

// On appel la fonction présente dans la librairie
&music::play();

exit 0;

Et voila… tout simple :)


Article lu 1027 fois

Transfert SFTP

Petit bout de script qui permet d’automatiser un transfert sftp.Ce petit script shell permet de rappatrier par exemple une sauvegarde d’un pc à un autre un utilisant le {{sftp}} (ftp sécurisé). Il est également possible de faire du {{scp}} ou même du {{ssh}} !

Bien sur, remplacez {USER} et {LE_MOT_DE_PASS} ainsi que {LEFICHIERVOULU} par vos paramètres.

{{!! WARNING !!}} => le mots de passe est écrit en dure ! Ne pas utiliser le compte root !!!


spawn /usr/local/bin/sftp USER@xx.xx.xx.xx
expect "USER@xx.xx.xx.xx's password: "
send "LE_MOT_DE_PASSE\r"
expect "sftp> "
send "get /LEFICHIERVOULU\r"
expect {
eof { exit; }
}
send "exit\r"

{{Note}} : Lors de la 1ere connexion, si vous ne vous êtes jamais connecté, il vous sera demandé d’accepter l’empreinte de l’hôte distant.

Une autre méthode pour l’authentification consiste à utilisé les échanges de clé.

@ suivre…


Article lu 971 fois